
ReKrute Job Scraper
scrape.ly/store/openrole/rekrute-scraperJobsLead generation
2 monthly users

Scrape public Glassdoor job listings by title and location, with salary, rating, Easy Apply, and the full description.
Collect public Glassdoor job listings for any title and location without logging in. Every row is one job with its listing id, title, links, posting age, company rating, Easy Apply flag, employer, location, pay range and the full description HTML.
It costs $0.01 per 1,000 jobs in result fees, so you mostly pay only for the small amount of compute a search uses.
excludeJobIds and pick up only new postings.| Field | Type | Description |
|---|---|---|
keywords | string (required) | Title, skill or company name, as typed into Glassdoor search. |
location | string (required) | City, state or country. |
limit | integer | Jobs to save. Default 10, maximum 1000. |
daysOld | integer | Only jobs posted in the last N days. Default 30. |
sortBy | string | relevant_desc or date_desc. |
easyApply | boolean | Keep Easy Apply jobs only. |
remoteWorkType | boolean | Keep remote jobs only. |
minRating | number | Lowest company rating, 0 to 5. |
radius | string | Distance in miles around the location. |
employerSizes | string | Headcount band from 1 (1–200 employees) to 5 (5001+). |
urlParam | array | Extra Glassdoor search filters, for example industryNId = 10013. |
excludeJobIds | array | Listing ids you do not want saved again. |
proxyConfiguration | object | Datacenter proxies by default. |
{
"keywords": "Software Developer",
"location": "New York",
"limit": 10,
"daysOld": 30,
"sortBy": "relevant_desc",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": ["DATACENTER"]
}
}
One dataset row per job.
| Field | Description |
|---|---|
id | Glassdoor listing id. |
title | Job title. |
url, seoUrl | Short and full listing links. |
ageInDays | Days since posting. |
rating | Employer rating, or null when unrated. |
easyApply | Whether the job supports Easy Apply. |
employer | Employer id, name, url, logoUrl. |
location | City id, name, type, countryId. |
pay | source, currency, period, min, max, or null when no range is published. |
description | Listing HTML. |
Example item (trimmed):
{
"id": 1010062906489,
"title": "Senior Engineer - Applied AI (Java)",
"url": "https://www.glassdoor.com/job-listing/j?jl=1010062906489",
"seoUrl": "https://www.glassdoor.com/job-listing/senior-engineer-applied-ai-java-geico-JV_IC1132348_KO0,31_KE32,37.htm?jl=1010062906489",
"ageInDays": 12,
"rating": 2.6,
"easyApply": false,
"employer": {
"id": 270,
"name": "Government Employees Insurance Company",
"url": "https://www.glassdoor.com/Overview/W-EI_IE270.htm"
},
"location": { "countryId": 1, "id": 1132348, "name": "New York, NY", "type": "C" },
"pay": { "source": "EMPLOYER_PROVIDED", "currency": "USD", "period": "ANNUAL", "min": 100000, "max": 215000 },
"description": "<div>...</div>"
}
You pay $0.00001 per job saved to the dataset, which is $0.01 per 1,000 jobs. Compute and proxy traffic are billed separately.
Worked example: a 10-job search in our tests cost about $0.004 in total, almost all of it platform usage (compute at $0.30 per GB-hour and datacenter proxy at $1 per GB). A 10-job search is one search request plus a description request per job.
Is it legal to scrape Glassdoor? The actor reads public search results only. You are responsible for using the data in line with applicable law and Glassdoor's terms.
Do I need a Glassdoor login or my own proxy? No. Proxies are included.
How many jobs can one search return?
Glassdoor caps a single search. The actor stops at your limit, which cannot exceed 1000.
What if a field is empty?
pay is null when Glassdoor does not publish a range, and rating is null for unrated employers. A description can be empty when Glassdoor withholds it; the rest of the row is still saved.
What happens with an unknown location? A location Glassdoor does not recognize, or a title with no matches, returns no rows. The run still succeeds.
Can I schedule it or use the API?
Yes. Pair a schedule with excludeJobIds to collect only new jobs.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
keywordsstringRequiredJob title
Title, skill, or company name, the same text you would type into Glassdoor search.
locationstringRequiredLocation
City, state, or country.
limitintegerOptionaldefault 10Maximum jobs
How many jobs to save. At most 1,000, because Glassdoor serves roughly 900 jobs (about 30 pages) for one search.
Narrow the search. Leave a filter empty to skip it.
daysOldintegerOptionaldefault 30Posted within days
Only jobs posted in the last this many days.
easyApplybooleanOptionaldefault falseEasy Apply only
Keep jobs that can be sent with Easy Apply.
remoteWorkTypebooleanOptionaldefault falseRemote only
Keep remote jobs.
minRatingnumberOptionalMinimum company rating
Lowest Glassdoor company rating to keep, from 0 to 5.
radiusenumOptionalDistance
Search radius in miles around the location.
employerSizesenumOptionalCompany size
Filter by employer headcount.
sortByenumOptionaldefault "relevant_desc"Sort
How Glassdoor orders the search.
Optional filters and ids to skip.
urlParamarrayOptionalExtra search parameters
Extra Glassdoor search filters, such as an industry id.
excludeJobIdsarrayOptionalJob ids to skip
Listing ids that should not be saved. Useful when a scheduled run should only pick up new jobs.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are the default. Use residential only when Glassdoor refuses the datacenter pool.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | integer | Glassdoor job listing id |
| title | string | Job title |
| url | string | Short listing URL |
| seoUrl | string | Full Glassdoor listing URL |
| ageInDays | integer | null | Days since the job was posted |
| rating | number | null | Employer rating from 1 to 5 |
| easyApply | boolean | Whether the job supports Easy Apply |
| employer | object | Employer id, name, overview URL, and logo |
| location | object | Location id, name, and type |
| pay | object | null | Pay range when Glassdoor publishes one |
| description | string | Job description HTML |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One Glassdoor job saved to the dataset. | $0.00001 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/glassdoor-jobs-scraper').call({
"keywords": "Software Developer",
"location": "New York",
"limit": 10,
"daysOld": 30,
"easyApply": false,
"remoteWorkType": false,
"minRating": 3.5,
"radius": "10",
"employerSizes": "5",
"sortBy": "relevant_desc",
"urlParam": [
{
"key": "industryNId",
"value": "10013"
}
],
"excludeJobIds": [
"1010068133467"
],
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/glassdoor-jobs-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/glassdoor-jobs-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Glassdoor jobs from the last 30 days, newest first.
Remote jobs at companies rated 4 stars or more.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.