Glassdoor Jobs Scraper - Job Postings, Salaries & Ratings avatar

Glassdoor Jobs Scraper - Job Postings, Salaries & Ratings

Pricing

from $2.00 / 1,000 run start fees

Go to Apify Store
Glassdoor Jobs Scraper - Job Postings, Salaries & Ratings

Glassdoor Jobs Scraper - Job Postings, Salaries & Ratings

Search Glassdoor jobs by keyword or a location search URL. Get each posting's title, employer, employer rating, location, salary range with its source (employer or Glassdoor estimate), Easy Apply and job URL as JSON or CSV. For recruiters, job boards and salary research.

Pricing

from $2.00 / 1,000 run start fees

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

3

Monthly active users

18 days ago

Last modified

Share

Glassdoor Jobs Scraper

Glassdoor Jobs Scraper returns public job search cards with the title, employer, location, employer rating and salary range. It keeps the salary source beside the amounts so you can distinguish an employer's published figure from a Glassdoor estimate. Search by a list of terms, paste location-filtered Glassdoor search URLs, and export one row per posting. Existing input names and output fields continue to work.

Glassdoor Jobs Scraper input

Use queries for search terms and urls for Glassdoor search URLs. Both accept a list of strings. For existing integrations that send text instead, entries can be separated by newlines, commas or semicolons. The singular aliases query and url also work when the corresponding plural field is absent or empty. At least one non-empty search term or URL is required.

This is the input used for the recorded default run:

{"queries":["software engineer"]}

Each term contributes the first search page, normally thirty job cards. The default limit is 200 jobs across all searches. The allowed total is clamped between one and 600. An absent, null or zero limit uses the default 200, matching the existing actor. retries defaults to three attempts per search and is bounded between one and six. Search terms are processed before pasted URLs. At most twenty search targets are processed in a run; a longer list produces a warning.

For a location-specific search, choose the location on Glassdoor and pass its search URL in urls. The recorded Austin search used this exact URL:

{"urls":["https://www.glassdoor.com/Job/austin-software-engineer-jobs-SRCH_IL.0,6_IC1139761_KO7,24.htm"]}

The keyword search uses the United States search surface. Pasted search URLs keep their own filters. The actor does not add a date filter, country filter or employment type that was absent from the supplied search. Narrow terms and specific location URLs are useful when a broad search has many more matching jobs than the returned sample.

Output and salary fields

Each dataset row retains the original seventeen fields: position, job_id, url, title, employer, employer_rating, location, salary_text, salary_min, salary_max, salary_currency, salary_source, salary_is_estimate, posted_age, easy_apply, snippet and query. Missing optional information is null. Job IDs remain strings and positions remain integers. The employer rating and parsed salary bounds are numeric values, rather than formatted text.

Additional fields are source, platform, fetched_at, salary_currency_code and salary_period. The original salary_currency retains the printed symbol, such as $. salary_currency_code provides the ISO currency code alongside it. Salary periods distinguish hourly, daily, weekly, monthly and annual amounts. A single salary figure is returned as equal minimum and maximum values. Amounts are not converted into another currency or annualised.

This is a real row from the recorded software engineer response:

{
"job_id": "1010205632661",
"url": "https://www.glassdoor.com/job-listing/software-engineering-manager-spang-company-JV_IC1145800_KO0,28_KE29,42.htm?jl=1010205632661",
"title": "Software Engineering Manager",
"employer": "Spang & Company",
"employer_rating": 3.5,
"location": "Mentor, OH",
"salary_text": "$126K - $183K (Glassdoor est.)",
"salary_min": 126000,
"salary_max": 183000,
"salary_currency": "$",
"salary_source": "Glassdoor est.",
"salary_is_estimate": true,
"salary_currency_code": "USD",
"salary_period": "YEAR",
"posted_age": null,
"easy_apply": true,
"snippet": "This position will be responsible for leading the development of and the team assigned to embedded software, including project management, software design,…… Skills: CSS, FPGA, Firmware, JavaScript, Mentoring",
"query": "software engineer",
"source": "glassdoor-jobs-scraper",
"platform": "glassdoor",
"fetched_at": "2026-10-03T13:26:06.298Z",
"position": 1
}

Treat salary_source as part of the salary value. Employer-provided figures and Glassdoor estimates answer different questions, and averaging the two without checking their origin can produce misleading comparisons. salary_is_estimate is true for a Glassdoor estimate, false for another printed source and null if the source is missing. salary_text preserves the source label and original display.

The summary key-value record reports jobs returned, searches run, jobs per search, matching-job totals per search, salary coverage, estimate counts, employer-rating coverage and Easy Apply counts. When one search fails but another succeeds, its failure is retained in the errors record and the successful rows remain available. The run also provides OUTPUT with delivery and charge information. Rows are uniquely identified by job_id, deduplicated across searches, and numbered in input order.

Search coverage and limitations

These rows are a sample of a search, not a complete inventory of every matching vacancy. The search surface supplies roughly thirty cards per search and does not provide usable page-number pagination for this actor. totalAvailablePerSearch shows the larger count reported by Glassdoor, where available. Adding distinct searches can expand coverage; repeating the same search will not create additional unique rows.

A card contains a description excerpt, not the full vacancy description. snippet therefore remains an excerpt. Posting age stays null when Glassdoor does not show it. The actor does not invent a posting date, employment type, exact city or full description from a missing field. Job availability, ranking and matching-job totals can change between runs. A recently removed posting may disappear even if the search input is unchanged.

Searches that return no cards produce an empty successful run. A temporarily unavailable search also produces an empty run with its reason recorded; it does not create a placeholder job. Invalid search input is reported with an English message. If only part of a list is available, inspect the warnings and errors as well as the dataset.

Use cases for a Glassdoor scraper

  • Recruiting and sourcing. Track which employers are hiring for a role in a city, with their Glassdoor rating next to each posting, and follow the job URL to apply or reach out.
  • Glassdoor salary data for job postings. Collect the salary ranges shown on job cards for a role or location and keep salary_source so employer-published figures and Glassdoor estimates stay separate in your analysis.
  • Job boards and aggregators. Feed fresh postings into your own board or newsletter, deduplicated by job_id so the same vacancy is not listed twice.
  • Labour-market research. Compare how many matching jobs Glassdoor reports per search (totalAvailablePerSearch in the summary) across roles and locations over time.
  • Sales and lead generation. Companies that are hiring for a function are often buying tools for it; the employer and location fields give a ready lead list.

Compared with other ways to get Glassdoor job data

Copying postings by hand works for a handful of jobs, but not for a weekly list across roles and cities. Generic multi-board job scrapers cover several sites at once, but often drop the salary source and the employer rating that make Glassdoor useful. This actor focuses on Glassdoor job search only and keeps those fields: the printed salary line, the parsed minimum and maximum as numbers, the currency symbol and ISO code, the pay period, and whether the figure is a Glassdoor estimate. There is no login, cookie or browser extension to set up, and you pay per delivered job rather than per compute minute. It does not scrape company reviews, interview reports or full vacancy descriptions; use a dedicated reviews tool if you need those.

Pricing and free-plan limit

The existing pay-per-event pricing remains $0.002 for starting a run and $0.004 for each job actually delivered. An empty run has no job events; the start fee still applies. Duplicate postings removed from the output are not charged again. Charges are based on delivered rows, rather than the number of matches advertised by the search page. The recorded thirty-job run corresponds to one start event and thirty job events, or $0.122 in actor event fees.

Users without a paid Apify plan receive at most ten job rows per run. The run output shows when the free-plan cap applies. Paid users retain their requested limit within the six-hundred-job maximum. For a small paid test, choose a low limit and inspect the output before expanding the search list.

FAQ

Can I filter jobs by location?

Yes. Select a location on Glassdoor and paste the resulting search URL into urls. This preserves the filters encoded in that URL. A plain keyword query uses the United States search surface.

Why do I receive thirty jobs when the summary shows thousands?

The summary reports Glassdoor's matching-job total. The returned rows come from the first search page. Those are different counts. Use additional distinct terms or location searches to collect a broader sample.

Are all salary figures supplied by employers?

No. Some figures are Glassdoor estimates. Keep salary_source and salary_is_estimate when exporting or aggregating salaries so the distinction remains visible in the resulting dataset.

Does this actor return full descriptions or publication dates?

It returns the excerpt displayed on the search card. Posting age is supplied only when present, and missing dates are not inferred. Fields that have no source value stay null.

Is there an official Glassdoor jobs API?

Glassdoor does not offer an open job-search API that new developers can sign up for. This actor works as a Glassdoor jobs API on the Apify platform: start a run through the Apify API with queries or urls, then read the dataset as JSON, CSV or Excel. Runs can also be scheduled or triggered from integrations.

Will my existing integrations continue to work?

The original input names, defaults, dataset field names and field types are retained. New currency and period fields are added alongside the originals. The old summary and errors records remain available.