Glassdoor Jobs Scraper avatar

Glassdoor Jobs Scraper

Pricing

from $0.09 / 1,000 job saveds

Go to Apify Store
Glassdoor Jobs Scraper

Glassdoor Jobs Scraper

Export public Glassdoor jobs by keyword and location with job URLs, available salaries, employer ratings, posting age and description text.

Pricing

from $0.09 / 1,000 job saveds

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

10 days ago

Last modified

Categories

Security

Limited permissions

Share

Collect public Glassdoor job listings by keyword and location with Glassdoor Jobs Scraper. Export job titles, employers, locations, available salary ranges and company ratings to CSV, Excel, JSON or the Apify API for recruitment research and hiring-market analysis.

Start with a small search. Available fields vary, description text can be incomplete, and Glassdoor access restrictions can prevent a run from returning results.

Quick start

  1. Enter a job keyword and location, and select the matching country site.
  2. Keep maxItems small for your first run, then click Start.
  3. Open the dataset to inspect results and export them in your preferred format.
{
"keyword": "software engineer",
"location": "New York, NY",
"country": "US",
"daysOld": 7,
"includeDetails": true,
"maxItems": 5
}

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

Choose a public example to see its settings before starting a run:

What you get

Saved public job rows with listing IDs, source links and available title, employer, location, compensation and company-rating fields. Description enrichment supplies available fragments rather than guaranteed full job text. Unavailable optional values are omitted, and schema names alone do not imply populated fields.

Who is it for?

  • Recruiting researchers reviewing public roles and advertising employers.
  • Compensation analysts inspecting available salary ranges with their original context.
  • Hiring-market researchers comparing selected roles or locations in their own dated samples.
  • Data teams organizing source-linked job records for manual review.

How you can use the data

  • Prepare a New York software-role sheet. Use the existing keyword, location and US-site recipe with a small cap. Keep jobId, jobUrl, employer and collection time together before opening source listings for review.
  • Interpret visible salary ranges with context. Keep salaryText, salaryCurrency, salaryPeriod and salarySource beside minimum and maximum values. Missing salary fields are not zero pay, and the sample is not a complete compensation dataset.
  • Review an Austin role sample. Use the existing machine-learning or data-scientist examples and inspect available descriptions and employer ratings. Enriched description status means fragments were included rather than a full job page or company profile.
  • Compare separate exports downstream. Match records by jobId and keep the country, requested location and source URL with each observation. The Actor does not maintain change history or send alerts, and source ordering is not a newest-first guarantee.

Input settings

Setting / API keyWhat it does
Glassdoor search URLs — startUrlsOptional search URLs containing a city ID (_IC…). Set keyword, country and any supported filters explicitly.
Job keyword — keywordTitle, skill or employer search text. The form defaults to software engineer.
Location — locationLocation to resolve for a keyword search. The form defaults to New York, NY.
Country site — countryUS, CA, GB, AU, DE, FR, NL or IN. Default US.
Maximum jobs — maxItemsTotal saved-job limit, from 1 to 1,000. Form default 5.
Maximum age — daysOldRequest listings posted within 1–30 days. Form default 30.
Remote jobs — remoteOnlyRequest remote listings. Default false.
Easy Apply — easyApplyOnlyRequest Easy Apply listings. Default false.
Minimum salary — minSalarySend a salary threshold to Glassdoor.
Minimum rating — minCompanyRatingSend an employer-rating threshold from 0 to 5.
Description text — includeDetailsInclude available description fragments. Default true.
Job type — jobTypeAccepted but does not filter results.
Seniority — seniorityAccepted but does not filter results or populate output.
Industry — industryAccepted but does not filter results.
Company size — companySizeAccepted but does not filter results.

Supply both keyword and location, or a supported search URL. For predictable URL-based searches, also supply the keyword and matching country. Website URL filters are not imported. Use the supported input fields instead. Detailed behavior and limitations are in each field's help.

Example inputs

Use the Quick start input as a small first run. Adjust the fields described above for your own data.

Output data

The following is a synthetic shape-only example, not an observed vacancy:

{
"jobId": "123456",
"title": "Example role",
"companyName": "Example employer",
"location": "New York, NY",
"jobUrl": "https://www.glassdoor.com/job-listing/j?jl=123456",
"remote": false,
"easyApply": false,
"query": "software engineer",
"searchLocation": "New York, NY",
"rank": 1,
"source": "glassdoor",
"sourceUrl": "https://www.glassdoor.com/Job/jobs.htm?sc.keyword=software%20engineer&locT=C&locId=1132348",
"scrapedAt": "2026-10-24T12:00:00+00:00",
"diagnostics": {
"searchUrl": "https://www.glassdoor.com/Job/jobs.htm?sc.keyword=software%20engineer&locT=C&locId=1132348",
"detailStatus": "not-requested"
}
}

More output fields

FieldsMeaning
jobId, title, jobUrlListing ID, job title and public listing link.
companyName, location, postedAgeAvailable employer, location and posting-age text.
descriptionAvailable description fragments when includeDetails is enabled. Not guaranteed full text.
salaryText, salaryMin, salaryMaxAvailable salary text and range values.
salaryCurrency, salaryPeriod, salarySourceAvailable compensation context.
companyRatingAvailable overall employer rating.
remote, easyApplyFlags derived from listing information.
query, searchLocation, rankSearch context and saved-record order. Not a global Glassdoor ranking.
source, sourceUrl, scrapedAtSource name, search URL and UTC collection timestamp.
diagnosticsSearch URL and description status: enriched, unavailable or not-requested.

Unavailable optional values are omitted. The current exporter does not populate applyUrl, companyReviewCount, companySize, industry, jobType or seniority, even though these names remain in the dataset schema. enriched means description fragments were included, not that a full job page or company profile was retrieved.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

Pay-per-event pricing uses a start event once before paid extraction and an item event after each job is saved. The Actor checks the remaining event budget before starting work, before each page and before saving each job, then verifies the actual charged count. A budget stop is successful and may return fewer jobs than requested. If a budget limit is reached between saving and charging a job, that saved job remains accessible without an item charge. Real storage or billing errors fail the run. No status or error rows are saved as jobs.

Use a small saved-job cap. Consult the live Pricing tab for current rates and plan discounts.

Tips for best results

  • Use a specific role and unambiguous location. Select the matching supported country site.
  • Set URL-based filters explicitly. Supported search URLs provide city context rather than importing every website filter.
  • Inspect optional compensation and description fields. Values vary by listing, and description fragments can be incomplete.
  • Use only controls that affect the current exporter. Accepted job-type, seniority, industry and company-size inputs do not filter results.
  • Review final status and the run summary. An explicit empty listing array from a valid search succeeds with no_matches; challenges, malformed responses and parser failures do not prove there are no vacancies.

Limits and caveats

This is a public-listing scraper rather than an official Glassdoor API or company-review scraper. Private account data and complete hiring-market coverage are not provided. Salary, employer-rating and description coverage varies, with description enrichment limited to available fragments.

The Actor accepts up to 1,000 jobs and uses a bounded search window within its five-minute default timeout. The cap is a maximum rather than a guaranteed matching count. Results request Glassdoor relevance order without a sort selector or newest-first guarantee.

Challenges, malformed responses and exhausted request failures fail a run. A later-page error, exhausted processing deadline or stalled pagination also fails rather than claiming complete extraction. Already-saved and billed jobs remain accessible. Mixed searches preserve useful rows and per-search reasons, but any incomplete search makes the run fail. Normal end-of-results, the requested maxItems cap and a billing-budget stop are valid successful endings.

The default key-value store contains RUN-SUMMARY, linked from the Output tab. It records status, reason, savedJobs, actual chargedItems for this execution, and searches with zero-based inputIndex, saved count, last requested page and reason. Reasons include no_matches, end_of_results, max_items, budget_limit, incomplete_extraction and fatal_error. Summary and error records are not dataset jobs. On a fatal storage failure, the summary itself may be unavailable; always check the final run status.

Resuming a partially processed run is not supported. A persisted work marker, existing dataset jobs or existing item charges cause a restarted execution to fail safely rather than repeat paid extraction. A previously charged startup event is not charged again.

Website URL filters are not imported, and accepted job-type, seniority, industry and company-size controls do not filter current results. Reserved output fields remain unpopulated as specified in Output data. Comparisons and job alerts require your own workflow.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~glassdoor-jobs-scraper/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data @- <<'JSON'
{
"keyword": "software engineer",
"location": "New York, NY",
"country": "US",
"daysOld": 7,
"includeDetails": true,
"maxItems": 5
}
JSON

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/glassdoor-jobs-scraper').call({
"keyword": "software engineer",
"location": "New York, NY",
"country": "US",
"daysOld": 7,
"includeDetails": true,
"maxItems": 5
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/glassdoor-jobs-scraper').call(run_input={'keyword': 'software engineer', 'location': 'New York, NY', 'country': 'US', 'daysOld': 7, 'includeDetails': True, 'maxItems': 5})
print(client.dataset(run['defaultDatasetId']).list_items().items)

API usage notes

This starts a run asynchronously. Once it finishes, retrieve records using its defaultDatasetId.

MCP and AI agents

You can ask your AI assistant to collect data with Glassdoor Jobs Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Glassdoor Jobs Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/glassdoor-jobs-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Glassdoor Jobs Scraper by Fetch Cat, or give it the identifier fetch_cat/glassdoor-jobs-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • “Use Fetch Cat’s Glassdoor Jobs Scraper to collect up to 5 software-engineer jobs in New York, NY on the US site. Show source links, employers and available salary context without claiming complete market coverage.”
  • “Collect at most 3 machine-learning engineer listings in Austin on the US site with description text enabled. Keep available description fragments and company ratings, marking missing values rather than calling them full company profiles.”
  • “Retrieve up to 5 software-engineer listings in Toronto on the Canadian site. Show salary text with available currency, period and source fields, and explain an empty or failed outcome without assuming there are no vacancies.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Is this a Glassdoor jobs API alternative?

It provides an Apify API for public Glassdoor job searches and structured exports. It is not affiliated with Glassdoor and does not reproduce every Glassdoor search feature.

Can I export Glassdoor jobs to CSV or Excel?

Yes. Open the run's dataset and choose CSV, Excel or JSON export, or retrieve records with the Apify API.

Can I find remote jobs and salary information?

Set remoteOnly to true to request remote jobs. Salary fields are included only when available. Review currency, period and source before comparing amounts.

Does it require a Glassdoor login?

No login or cookies are requested. Public access can still be restricted by Glassdoor.

Why are descriptions or company details missing?

includeDetails includes available description fragments, not guaranteed full descriptions. Application destinations, company sizes, industries and review counts are not currently exported.

  • LinkedIn Jobs Scraper — Collect public job titles, companies, locations and available descriptions for hiring research.
  • ATS Jobs Scraper — Collect public job listings across the six supported applicant-tracking sources.
  • Dice Jobs Scraper — Collect public Dice job listings with available employer, location and optional detail fields.
  • Indeed Jobs Scraper — Collect public job titles, employers, locations and source URLs for labor-market research.
  • Built In Jobs Scraper — Collect public Built In job listings and available employer and location details for technology hiring research.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥