Glassdoor Company Jobs Scraper

Everything one employer
is hiring for.

Point it at a company's Glassdoor Jobs or Overview page and get that employer's whole open-roles board back as rows: the job title, the location, the posted salary range, how old the posting is, whether it takes Easy Apply, and a link to each listing. Sorted by relevance or newest first, your choice.

one-time 500 free rows$0.002 per row after12 columnsCSV · XLSX · JSON
How it works

A company URL in,
its whole board out.

The input is the employer, not the job - you name the companies and the run collects every role they currently have listed.

  1. STEP 1Sign in to the platform.
  2. STEP 2Open the Glassdoor Company Jobs Scraper.
  3. STEP 3Paste Glassdoor company URLs, one per line - a Jobs page or an Overview page - or upload a CSV, XLSX, TXT or Parquet file.
  4. STEP 4Set a limit per query, or leave it empty to take everything.
  5. STEP 5Pick a sort order - Most relevant or Newest First - and choose your output format.
  6. STEP 6Click Get Data.

One row per role, each tagged with the query it came from - so a run across thirty employers still reconciles back to your input list.

Why teams use it

The whole board,
not one search page.

Employer-scoped, not keyword-scoped

A keyword search returns whoever ranked for it. This takes the company and returns everything that company is advertising, which is the difference between a sample and a census of one employer's hiring.

The Cloudflare wall is our problem

Glassdoor is Cloudflare-protected, which is why a hand-rolled script on an office IP tends to come back with an interstitial rather than jobs. Residential routing, rate limiting and IP rotation happen on our side; from yours it is a form or an API call.

Sorted before it is pulled

Choose Most relevant or Newest First and cap the rows per query up front, so credits go on the slice you actually want. The rank Glassdoor returned is kept in every export, so you can re-sort without losing it.

What you get back

Twelve columns,
one row per role.

Each row carries the posting as Glassdoor's company jobs board shows it: the title, the employer, the location, the salary range where one is published, how old the listing is, the Easy Apply marker and a link to the job.

Titles come back verbatim, capitalisation and all, exactly as the employer wrote them. The column list below is the header row of real runs rather than a specification - and the parts worth your attention are which columns arrived empty on every row, and the fact that date_posted is an age rather than a date. Both are spelled out rather than left to be discovered.

Data dictionary

Twelve columns,
in every export format.

Taken from the header row of real runs. Our testing covered a single employer, so read the column notes as that company’s postings rather than as behaviour guaranteed across employers.

query
The Glassdoor company URL you submitted, repeated on every row that came from it.
job_title
The role title exactly as the employer wrote it, capitalisation included. Filled on every row.
company
The employer’s name. Worth a glance before you join on it: the name sometimes carries a trailing “jobs”.
company_rating
Intended for the employer’s Glassdoor score.
location
Where the role is. Usually City, ST with a two-letter US state code, though some rows carry the bare string United States instead. Filled on every row, just not always to city level.
salary
The published range as a formatted string, with its source in brackets. Three exact suffixes appear and the casing is Glassdoor’s own, not ours: (Employer provided), (Glassdoor est.) and (Glassdoor Est.) — note the two casings of est., so match it case-insensitively. Not a number.
date_posted
An age, not a date. Values are 24h, 3d, 9d and so on up to 30d+, which is a ceiling rather than a measurement. Filled on every row.
easy_apply
The literal string Yes when the posting takes Easy Apply, and an empty cell otherwise. No never appeared - absence is the negative.
job_url
Permalink to the individual listing on glassdoor.com. Filled on every row.
snippet
Intended for the description excerpt.
logo
Intended for the employer’s logo image.
position
1-based rank within the query, in the order Glassdoor returned the jobs under your chosen sort - contiguous from 1 to n in every run. Unlike our other scrapers this one is in the CSV and XLSX too, not just the JSON.

Four things to know before you write code against this. First, date_posted holds an age - 24h, 9d, 30d+ - and not a date; anything that parses it as one will fail on every row, and 30d+ is a ceiling that cannot tell you whether a posting is 31 days old or 300. Second, company_rating, snippet and logo were empty on every row of every run, so plan for them as empty rather than as data you can filter on. Third, salary is a formatted string rather than a number, its bracketed source varies in case between (Glassdoor Est.) and (Glassdoor est.), and the unit follows the domain you queried - K on glassdoor.com, Indian lakh L on glassdoor.co.in. Fourth, all twelve columns are present in the CSV and XLSX as well as the JSON; there is no format here that carries fewer.

Run controls

Set on the job,
not in the spreadsheet.

Sort order and a per-query limit decide what a run costs and what lands in the file. Both are chosen before the job starts, alongside how you hand over the list of companies.

Company Jobs URL Company Overview URL Sort: Most relevant Sort: Newest First Limit per query Empty for everything Paste one per line CSV upload XLSX upload TXT upload Parquet upload
Common workflows

Three jobs people
most often run here.

A few examples of how teams use company-scoped hiring data to answer a question they actually have.

Competitive

Read a competitor's roadmap from their job board

What a company hires for is what it is about to build. Pull a rival's whole board and the titles tell you where headcount is going - a run of platform and data roles reads differently from a run of enterprise sales ones.

Strategy · Product
Compensation

Benchmark posted pay across employers

Export the boards of everyone you compete with for talent and compare the published ranges side by side. The salary column marks whether each figure came from the employer or from Glassdoor's estimate, so you can weight them differently.

People · Comp
Sales

Use hiring as a buying signal

A company staffing up a function is a company about to spend on it. Watch a target list's boards on a schedule and treat a burst of new postings in one department as the trigger for outreach.

Sales · RevOps
Pricing

Pay only for the jobs
you actually pull.

No subscription, no minimum, no recurring bill. Your first 500 rows are on us - after that, pay-as-you-go at the same flat rate as every other scraper here.

Free tier

500 free rows - $0

Every new account, one-time. No credit card required. Sorting, per-query limits, file upload and every export format included.

$0 forever
Pay-as-you-go

$0.002 per row, after the free tier

Roughly $2 per 1,000 jobs. The pre-flight estimator shows the row count and credit cost before a run starts - no surprise bills, no compute units to translate.

Most popular
Volume

Custom · high volume

Volume pricing, dedicated workers and an SLA for continuous monitoring or very large historical pulls. Tell us your numbers and we will quote.

Talk to us
10% off your first paid run.Use code LIVESCRAPER10 at checkout.
Sign up
Pairs well with

What they are hiring for,
and what it is like inside.

The legal bit

Is it legal to scrape
Glassdoor job listings?

Short answer: yes for the public listing content - and this export carries nothing about any individual person.

Job listings on Glassdoor are published to be found. The title, the location, the posted salary range, the age of the listing and the link are shown to anyone who opens the company's jobs page, signed in or not. Collecting publicly visible job postings for labour-market research is long-established practice, and nothing here touches a login, an application or a paywall.

There is no person anywhere in this output. No recruiter, no hiring manager, no applicant, no reviewer - the columns describe a role and the employer advertising it. That makes a hiring study built on this data a study of companies rather than of people, which is a meaningfully different position to be in than with a reviews or profiles export.

Glassdoor's own terms restrict automated access, so this is a terms question as well as a legal one - if you have a contractual relationship with the site, check it. We run no third-party trackers on the data layer, and your exports auto-delete after 30 days.

livescraper.app · principles
Public job listings only
No logins, no accounts touched
No individual people in the export
GDPR-aligned by default
Exports auto-delete (30 days)
Check Glassdoor's own terms before scaling.
Common questions

Things people
ask before signing up.

The questions we hear most. Anything else? Talk to us - humans, not bots, write the answers.

How do I scrape a company's Glassdoor jobs?+
Using the Glassdoor Company Jobs Scraper:
  1. Sign in to the platform.
  2. Open the Glassdoor Company Jobs Scraper.
  3. Paste Glassdoor company URLs, one per line - a Jobs page or an Overview page - or upload a CSV, XLSX, TXT or Parquet file.
  4. Set a limit per query, or leave it empty to take everything.
  5. Pick a sort order and choose your output format.
  6. Click Get Data.
Which Glassdoor URL do I paste?+
A company Jobs page or a company Overview page - the two shapes are the …-Jobs-E.htm URL and the …-EI_IE… one. Both go in the same box, one per line. This scraper is scoped to an employer, so a keyword search URL is not the input it expects.
What comes back for each job?+
Twelve columns: the query you submitted, the job title, the company, the company rating, the location, the salary, the posting age, the Easy Apply marker, the job URL, the description snippet, the logo and the rank within the query. All twelve are present in the CSV and XLSX as well as the JSON - unlike some of our other scrapers, no format here carries fewer columns.
Is date_posted an actual date?+
No, and this is the one most likely to break a script. It holds an age relative to when the run happened - 24h, 3d, 9d and so on, up to 30d+. That last value is a ceiling, not a measurement: a posting showing 30d+ could be 31 days old or a year old, and nothing in the data distinguishes them. If you need real dates, subtract the age from your run timestamp and treat 30d+ as unbounded.
Why are company_rating, snippet and logo empty?+
Because they did not carry values in our testing. We are telling you rather than letting you find it mid-analysis: plan for those three as empty rather than as fields you can filter on. The company_rating one is worth flagging twice, because the column name promises the number Glassdoor is best known for.
What format is the salary in?+
A formatted string with its source in brackets, like $90K - $116K (Employer provided) or $30K - $40K (Glassdoor Est.) - not a number, and not two numbers. Two details will bite a naive parser: the bracketed source varies in case between Est. and est., and the unit follows the domain you queried, so glassdoor.com rows use K while glassdoor.co.in rows use the Indian lakh L.
How was this column list verified?+
Against two sources that agree: the header row of real run exports, and the column list the platform itself ships. What the column notes describe beyond the names comes from our own testing, and that testing covered a single employer queried through glassdoor.com and glassdoor.co.in - so read those notes as one company’s postings rather than as behaviour guaranteed across employers. Take a free-tier run over your own list to see the shape of your data.
Will I get blocked or see a verification page?+
No. Glassdoor is Cloudflare-protected, which is exactly why a hand-rolled script on an office or datacenter IP tends to get an interstitial rather than jobs. Residential routing, rate limiting and IP rotation are handled on our side - from your end it is a form or an API call, and you never manage a proxy pool.

Your first 500 jobs,
on the house.

500 one-time free rows on every new account - no expiry. After that it is $0.002 per row, pay-as-you-go - no card on file until you say so.

Activates instantly · no card required

Scrape a company's Glassdoor job listings at scale

Livescraper's Glassdoor Company Jobs Scraper turns a list of employers into hiring data. You submit Glassdoor company URLs - a Jobs page or an Overview page, typed one per line or uploaded as a CSV, XLSX, TXT or Parquet file - choose whether the roles come back by relevance or newest first, cap the rows per query if you want to, and download the board as a clean CSV, Excel or JSON file.

Each row carries the posting as Glassdoor's company jobs board shows it: the title exactly as the employer wrote it, the location, the published salary range where there is one, how old the listing is, the Easy Apply marker, a permalink to the job and the rank Glassdoor gave it within your query. All twelve columns appear in every export format, so a spreadsheet loses nothing next to the JSON.

Strategy teams read a competitor's whole board because what a company hires for is what it is about to build. Compensation teams export the boards of everyone they compete with for talent and compare published ranges, weighting employer-provided figures differently from Glassdoor estimates. Sales teams watch a target list on a schedule and treat a burst of postings in one department as a buying signal.

Two properties of this dataset matter before you build on it. The date_posted column holds an age - 24h, 9d, 30d+ - rather than a date, and 30d+ is a ceiling that cannot distinguish a month-old posting from a year-old one. And company_rating, snippet and logo did not carry values in our testing, so plan for them as empty rather than as filters. Start free: your first 500 rows cost nothing and need no credit card, and after that it is $0.002 per row, flat.