Indeed Jobs Scraper - Salaries, Benefits & Ratings
Pricing
from $0.10 / 1,000 job listings
Indeed Jobs Scraper - Salaries, Benefits & Ratings
Search Indeed in 62 countries by title and location with the filters Indeed itself applies. Full descriptions, pay, benefits, company rating and apply links in Bright Data's Indeed format.
Pricing
from $0.10 / 1,000 job listings
Rating
0.0
(0)
Developer
Zyra
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
8
Monthly active users
13 hours ago
Last modified
Categories
Share
Indeed Jobs Scraper
Indeed job listings with full descriptions, salaries, benefits and company ratings, from 62 countries.
Enter a job title and a location. You get back every matching Indeed job as a flat row: title, company, pay, benefits, shift schedule, company rating, the full description and the apply link.
A run of 100 jobs takes about 2 seconds, and 1,000 jobs about 15.
What you can do with it
- Benchmark pay. Salary ranges as numbers, with the period (hour, year…), the currency, and whether Indeed estimated the figure or the employer stated it.
- Track hiring. See who is hiring for a role, where, and since when.
- Screen employers. Every job carries the company's Indeed rating and review count, plus its size, revenue and industry.
- Feed a job board or a model. Flat rows with stable ids, ready for a spreadsheet, a database or a dataframe.
Why this one
- Drop-in for Bright Data. The first 28 fields have the same names, order and formats as Bright Data's Indeed dataset, so existing pipelines keep working.
- It is also more complete: in a 600-job comparison we filled
apply_linkon 100% of jobs (Bright Data: 2%),company_websiteon 79% (0%),salary_formattedon 78% (46%) andcompany_ratingon 88% (72%).
- It is also more complete: in a 600-job comparison we filled
- Live jobs. Every job comes from a search run at that moment, so none are expired.
- Filters applied by Indeed. Date posted, job type, remote, hybrid or in person, experience level, radius and Easy Apply are all applied by Indeed during the search. A narrower search is faster and cheaper, and matches what you'd see on the site.
- Full descriptions without an extra fetch. Each search result already includes the complete description, as HTML and as plain text.
- Public data only. The actor sees what a signed-out visitor sees, and never signs in.
Input
| Field | Example | Notes |
|---|---|---|
title | web developer | Job title, keywords or company. Indeed's syntax works: "exact phrase", -exclude, company:(Google), title:(nurse). |
location | New York, NY | City, state, zip code or remote. |
country | us | One of 62 Indeed countries: us, uk, in, ca, de, fr, au… |
limit | 100 | 1–1,000. Default 100. |
datePosted | 7 | Last 1, 3, 7 or 14 days. |
jobType | fulltime | fulltime, parttime, contract, internship, temporary, seasonal, perdiem, apprenticeship. |
workSetting | remote | remote, hybrid, onsite. |
experienceLevel | senior | entry, mid, senior, no_experience, under_1_year. Indeed US only. |
radius | 25 | Miles around the location: 0, 5, 10, 15, 25, 35, 50, 100. |
easyApplyOnly | false | Only jobs you can apply to on Indeed. |
proxyConfiguration | Apify Proxy | Leave as it is. Indeed refuses connections from the Apify platform's own network, so runs go through Apify Proxy. |
You need a title, a location or both. Filters combine with AND.
{ "title": "case manager", "location": "Grand Rapids, MI", "country": "us", "limit": 10, "jobType": "fulltime" }
Output
One item per job. Real examples: sample_output.json.
Bright Data–compatible fields (same names, order and formats):
jobid, company_name, date_posted_parsed, job_title, description_text, benefits, qualifications, job_type, location, salary_formatted, company_rating, company_reviews_count, country, date_posted, description, region, company_link, company_website, domain, apply_link, srcname, url, is_expired, discovery_input, job_location, job_description_formatted, logo_url, shift_schedule
Extra detail:
- Pay:
salary_min,salary_max,salary_period,salary_currency,salary_is_estimated - Place:
city,postal_code,street_address,country_name - Company:
company_size,company_revenue,company_industry,company_description,company_ceo,company_address - Job:
work_setting,experience_level,is_remote,attributes,emails - Collection:
date_on_indeed,timestamp
{"jobid": "bc3930a1d889a475","job_title": "ACT IDDT Case Manager (26-133)","company_name": "Network180","salary_formatted": "$21.99 - $29.15 an hour","company_rating": 3.5,"company_reviews_count": 31,"benefits": ["License reimbursement","Paid holidays","Loan repayment program"],"shift_schedule": ["Weekends as needed","Evenings as needed"],"date_posted": "3 days ago","url": "https://www.indeed.com/viewjob?jk=bc3930a1d889a475"}
Before comparing two salaries, check salary_period: hourly and yearly pay appear in the same results. salary_is_estimated tells you whether a figure is Indeed's estimate rather than the employer's.
The run summary (what was requested, how many jobs arrived, what was charged) is in the key-value store under OUTPUT.
Limits
- One search tops out at about 750–970 jobs. Indeed stops paging there, however many jobs match. For more, run several searches with narrower locations.
- A city goes deeper than a state. Nurse in Los Angeles, CA returned 862 jobs; nurse in California returned 398.
- A search without a location returns only about 100 jobs. On Indeed Canada it returns none, so the actor asks for a city.
- Some fields depend on what the employer entered. For example, salary appears on about 75% of jobs, and the company rating only when the company has reviews on Indeed.
Pricing
Pay per result: you are charged per job delivered. A run stops once it has spent its maximum charge, and it never charges for a job it didn't deliver.
Development
pip install -r requirements-dev.txtpytest tests/ # offline: client, inputs, scrape loop, billingINDEED_LIVE=1 pytest tests/ # also hits Indeed: every filter, all 62 countriespython tools/gen_dataset_schema.py # regenerate .actor/dataset_schema.json from the Job fieldspython tools/stress_test.py # concurrency ramp against Indeed
| Path | What it is |
|---|---|
src/indeed_client.py | The Indeed client: a plain library with no Apify dependency. |
src/inputs.py | Actor input → validated run configuration. |
src/scrape.py | The search loop: retries, and resuming from the last cursor after a failure. |
src/main.py | The run: delivery, push-then-charge, budget limits, run summary. |
research/ | R&D notes, raw API samples and the Bright Data sample. Not shipped in the image. |
- Billing event:
job-listing, charged per job after each page is pushed. The start fee is Apify's built-inapify-actor-start, which the platform charges itself. - API key risk: the client uses the API key built into Indeed's iOS app. That key is not a published API, so Indeed can change it at any time. The headers are in one place,
API_HEADERSinsrc/indeed_client.py.