Glassdoor Job Scraper - a jobs search as ranked, exportable rows
Glassdoor's jobs search is built for browsing: you scroll, you click, and the ordering that determined what you saw disappears the moment you leave the page. The Glassdoor Job Scraper takes a search URL and returns its results as a table instead - one row per result, carrying the job title, the company, the location, the advertised salary with its source, the listing link, a snippet of the description, the company logo, and the position the result held in the ranking. Build the search on Glassdoor with whatever filters you want, submit the URL, and take the results away as CSV, JSON or Excel.
This page is more cautious than the others on this site, and the reason is worth stating up front. Our evidence is a single populated run of 100 rows from one search; five other runs returned nothing at all. The twelve column names are firm - the spreadsheet header matches the JSON keys exactly and is identical across all six runs - but every count beside them describes that one search rather than the service. There is also no published reference for this endpoint: Glassdoor appears nowhere in the API documentation, so this page quotes no batching limit, no language or region setting and no sort order, because no source for them exists. Where other pages here can tell you what happens across thousands of rows and many inputs, this one can tell you what happened once, and says so.
Two findings hold regardless of what you search for. The first is that rows are not listings: our 100 rows contained only 53 distinct job URLs, with twenty-seven links repeating and one appearing four times at different positions, so any count of jobs must deduplicate first - and billing follows rows, not unique roles. The second is that date_posted is an age rather than a date. The values were 24h, 3d, 13d and 30d+, measured at the moment of the run, which means they cannot be parsed as dates, cannot be compared across runs, and in the case of 30d+ have no upper bound at all. If you need real dates, record when you ran the job and derive them.
Two more findings are genuinely interesting and genuinely unresolved. Salary was present on every row of our search, always with its provenance appended - 96 of 100 marked employer provided and the remainder a Glassdoor estimate - which is a distinction worth parsing out rather than discarding, since one is what a company published and the other is a model's guess. But company_rating was empty on all 100 rows and easy_apply read Yes on all 100, and a single query cannot tell you whether those are properties of the service or artefacts of the search we happened to run. A search filtered to one-click applications would produce exactly the pattern we saw. We are not going to resolve that by guessing, so the recommendation is concrete instead: run one search of your own against the free 500 rows and look at those two columns before you build anything that depends on them. Your first 500 rows cost nothing and need no credit card.