Indeed Jobs Scraper - Search, Filters & Browse Jobs
Pricing
from $3.00 / 1,000 results
Indeed Jobs Scraper - Search, Filters & Browse Jobs
Scrape Indeed jobs from 60+ country sites. Extract titles, companies, salaries, locations, remote status, benefits, and descriptions via keyword search, SERP filters, or Browse Jobs. Browser + CapSolver + Apify RESIDENTIAL.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 hours ago
Last modified
Categories
Share
Scrape Indeed job listings across 60+ country sites — extract job titles, companies, salaries, locations, remote/hybrid status, benefits, ratings, and full descriptions. Search by keyword with SERP filters, or discover roles via Browse Jobs categories. This Actor is a practical Indeed API alternative for job market research, recruiting pipelines, and salary benchmarking.
Works with Indeed country domains (for example www.indeed.com, uk.indeed.com, ca.indeed.com). Scraping runs on a hosted Cloud Run worker (Patchright headed Chrome + CapSolver + sticky Apify RESIDENTIAL); this Actor handles input, dataset output, and PPE.
What does Indeed Jobs Scraper do?
Indeed Jobs Scraper lets you extract structured job data from Indeed search results and job detail pages. Give it a keyword and location (or a Browse Jobs category), pick one or more country sites, and start a run. The Actor returns clean dataset rows ready for CSV, Excel, JSON, or downstream APIs.
You can:
- Run keyword search with filters (job type, experience, remote/hybrid, education, date posted, radius, Indeed Apply)
- Discover jobs through Browse Jobs categories (
/browsejobs) - Scrape up to 10 country sites in one run
- Optionally open job detail pages for full descriptions
- Export results with host, country, salary text, benefits, and timestamps
What job listing data can I extract from Indeed?
| Field | Description |
|---|---|
| Job title | Position name from the listing |
| Company | Employer name |
| Location | City / region / Remote text |
| Country + host | ISO-2 country and Indeed host used |
| Salary | Salary text when Indeed shows it |
| Job types | Full-time, part-time, contract, etc. |
| Remote / hybrid | Work setting when available |
| Benefits | Benefit chips when present |
| Company rating | Rating and review count when shown |
| Description | Full text when scrapeDetails is enabled |
| Posted time | Relative or timestamp when available |
| Job URL | Canonical Indeed job link |
| Browse category | Category label in browse mode |
Why scrape Indeed job postings?
Indeed remains one of the largest public job boards worldwide. Scraping Indeed job listings helps you:
- Build custom job databases for recruiting or lead gen
- Benchmark salaries by role, location, and country
- Track hiring demand and skill trends over time
- Monitor competitors’ open roles
- Feed AI agents, CRM workflows, or enrichment pipelines
- Compare remote vs onsite demand across markets
How to scrape Indeed jobs
- Create a free Apify account.
- Open Indeed Jobs Scraper.
- Choose
searchorbrowsemode. - Enter a keyword and location (search), or a browse category.
- Select a country site (or up to 10 via
countries). - Optionally enable filters and
scrapeDetails. - Click Start and download the Dataset as JSON, CSV, Excel, or JSONL.
Free Apify plan limits (set by this Actor's developer)
| Limit | Free Apify plan | Paid Apify plan |
|---|---|---|
| Runs of this Actor | 10 runs total | Unlimited |
| Results per run | Up to 1,000 | Up to schema max (1,000) |
When the run cap is hit, the run finishes with a clear status message — not an Apify platform error.
Worker URL is config, not code: the Actor reads
WORKER_BASE_URLfrom Actor environment variables (plus optional per-runworkerBaseUrl). If you migrate the worker to a new host, updateWORKER_BASE_URL(andWORKER_AUTHif the API key changes) in Apify Console — no Actor code change required. SetWORKER_PROVIDES_PROXY=1when the worker supplies its ownPROXY_URLinstead of Apify RESIDENTIAL.
Example: search with filters (US)
{"scrapeMode": "search","keyword": "data analyst","location": "Remote","country": "us","jobType": "fulltime","experienceLevel": "entry_level","remoteType": "remote","datePosted": "7","maxResults": 20,"scrapeDetails": true}
Example: browse categories (US)
{"scrapeMode": "browse","country": "us","browseCategory": "Healthcare","maxCategories": 3,"maxResults": 15,"scrapeDetails": false}
Example: multi-country batch
{"keyword": "nurse","countries": ["gb", "ie", "au"],"maxResults": 30,"scrapeDetails": false}
Input
| Field | Description |
|---|---|
scrapeMode | search (keyword + filters) or browse (Browse Jobs categories) |
keyword | Indeed q — job title, skills, or company (search mode) |
location | Indeed l — city, region, zip, or Remote |
country | Single Indeed country site (ISO-2) |
countries | Optional batch of up to 10 ISO-2 country codes |
maxResults | Maximum job records to return |
scrapeDetails | Open detail pages for full descriptions |
jobType / experienceLevel / remoteType / education | SERP filters |
datePosted / radius / sort / indeedApplyOnly | More SERP controls |
browseCategory / maxCategories | Browse mode controls |
See the Input tab for the full schema and defaults.
Output sample
Each dataset item looks like this:
{"source": "indeed","job_id": "abc123","title": "Data Analyst","company": "Example Corp","location_text": "Remote","country": "us","host": "www.indeed.com","salary_text": "$80,000 - $110,000 a year","job_types": ["Full-time"],"remote_type": "remote","benefits": ["Health insurance", "Paid time off"],"company_rating": 3.9,"description": "We are looking for a Data Analyst...","url": "https://www.indeed.com/viewjob?jk=abc123","captured_at": "2026-07-20T05:00:00+00:00"}
Diagnostics are stored in the key-value store as RUN_SUMMARY and INPUT_ECHO.
How many Indeed jobs can this scraper return?
Throughput depends on keyword popularity, country site, filters, and whether detail pages are enabled. For large exports, raise maxResults, keep scrapeDetails off when you only need card-level fields, and split countries across runs if needed.
Results can vary day to day because Indeed SERPs are dynamic. A short test run is the best way to estimate volume for your query.
Which Indeed country sites are supported?
All major Indeed country hosts from Indeed’s public country list are supported via ISO-2 codes, including:
us, gb, ca, au, de, fr, jp, in, sg, ph, br, mx, ae, za, kr, my, and 40+ more.
Examples: us → www.indeed.com, gb → uk.indeed.com, my → malaysia.indeed.com.
One run does not automatically sweep every country — pick country or up to 10 codes in countries.
Indeed SERP filters (search mode)
| Input | Indeed parameter |
|---|---|
jobType | jt (fulltime, parttime, contract, temporary, internship, …) |
experienceLevel | explvl |
datePosted | fromage (1 / 3 / 7 / 14) |
radius | radius |
remoteType | sc remote / hybrid attributes |
education | sc education attributes |
encouragedToApply | sc fairchance / no_degree / military_encouraged |
indeedApplyOnly | iafilter=1 |
scExtra | Raw sc fragment for advanced chips |
sort | relevance or date |
Dynamic skill chips depend on the query; use scExtra when you already know the token.
Pricing
This Actor uses Pay per event pricing. You pay for:
| Event | Price |
|---|---|
Actor start (apify-actor-start) | $0.005 per start (scaled by memory GB) |
Result (apify-default-dataset-item) | $3.00 / 1,000 job items ($0.003 each) |
Platform usage (compute, residential proxy, etc.) is also billed to the user (Pay per event + usage). Pricing is versioned in .actor/pricing.json and can be re-applied with scripts/sync_monetization.py.
Example: one run that returns 1,000 jobs ≈ $0.005 start + $3.00 results, plus platform usage for that run.
Privacy
Dataset job_id / job_id_hash fields store a truncated SHA-256 of the Indeed jobkey (plaintext keys are not emitted). Job URLs still include Indeed’s public jk= parameter so you can open listings.
Live View / Standby
Standby Live View exposes operational endpoints only (/, /health, /input-example, /openapi.json). It does not scrape Indeed — start a normal Actor run for data collection.
Can I use this as an Indeed API alternative?
Yes — for many job-search and market-research workflows. Indeed’s public developer APIs are mainly hiring-side. Publisher job-search APIs that used to expose searchable listings have been deprecated, so teams often use an Indeed scraper Actor for titles, companies, locations, salaries, and descriptions.
Use this Actor when you need:
- Searchable Indeed job listings as structured data
- Multi-country coverage without maintaining your own browser farm
- Exports into datasets, webhooks, or MCP / agent workflows
Always respect Indeed’s terms, robots rules, and applicable laws. Do not use scraped data to spam applicants or bypass apply flows. This Actor does not click Apply or Report.
FAQ
Why did my free-plan run stop with a limit message?
Free Apify plan users can run this Actor up to 10 times, with up to 1,000 results per run. These caps are set by the Actor developer, not Apify. Upgrade to a paid Apify plan for unlimited runs (schema maxResults still applies).
How do I scrape Indeed jobs by location?
Set location (city, region, zip, or Remote) and optionally radius. Combine with country for the correct Indeed domain.
Can I scrape remote Indeed jobs only?
Yes. Set remoteType to remote (or hybrid) in search mode, and/or use location: "Remote".
Does the Actor support Indeed Browse Jobs?
Yes. Set scrapeMode to browse, optionally filter with browseCategory, and control how many categories to follow with maxCategories.
Do I need an Indeed API key?
No. The Actor scrapes public Indeed pages. CapSolver and Apify RESIDENTIAL proxy credentials are configured on the Actor side for reliability.
What happens if Indeed blocks a page?
Blocked or empty pages are recorded in RUN_SUMMARY warnings. Partial datasets may still be returned. CapSolver + residential proxy reduce block rates; extreme filters or high concurrency can still hit challenges.
Can I schedule recurring Indeed scrapes?
Yes. Use Apify Schedules or the API/client to run the Actor on a cron and append or replace datasets over time.