⚡Indeed Jobs Scraper
Pricing
from $0.10 / 1,000 job listings
⚡Indeed Jobs Scraper
$0.10 / 1K jobs ⚡ — Search Indeed across 62 countries by job title, location, and Indeed’s built-in filters. Get structured job data with full descriptions, pay, benefits, company ratings, 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
1
Bookmarked
45
Total users
2
Monthly active users
18 days 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.