Indeed Jobs Scraper | 18 Fields, 17 Countries, No Login
Pricing
from $3.00 / 1,000 job scrapeds
Indeed Jobs Scraper | 18 Fields, 17 Countries, No Login
Scrape public Indeed job listings by keyword and location: title, company, location, salary, job type, posted date, description, apply URL. No login. Pay per job.
Pricing
from $3.00 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
99
Total users
33
Monthly active users
11 days ago
Last modified
Categories
Share
🌐 Indeed Jobs Scraper: 17 Countries · From $3.00/1k
What does Indeed Jobs Scraper do?
It turns an Indeed search into structured job data: title, company, location, salary, job type, posted date, description snippet, apply URL, company rating and 9 more fields, across 17 country sites (Indeed's US, GB, CA, IN, AU and 12 more). Give it a query and an optional location and country, and you get clean JSON rows with no login and no account.
Indeed's search results are public, but a plain unproxied request into them is blocked by a PerimeterX security check backed by an interactive Cloudflare Turnstile challenge. This actor routes each request through Apify's UNBLOCKER proxy group, which clears that layer server side, then reads the job data straight out of the page's own embedded JavaScript model rather than scraping rendered HTML, so the fields you get back are the same ones Indeed's own front end uses internally.
✅ No login required | ✅ No browser on our end | ✅ Pay only for delivered jobs | ✅ MCP-ready for AI agents
Guide and FAQs: Indeed Jobs Scraper on themineworks.com.
Who is it for?
Staffing agencies and recruiters mapping who is hiring, at what salary, in a given city or country. Compensation teams banding roles by title and location using Indeed's own salary text. Competitive intelligence teams tracking a named company's posting volume as a leading indicator. Job board and newsletter operators who need fresh, structured listings instead of an RSS feed.
How much does it cost to scrape Indeed jobs?
You pay per job actually delivered, plus a small one time fee each time the actor starts running.
| Apify plan | Price per 1,000 jobs |
|---|---|
| Free | $4.80 |
| Bronze | $4.10 |
| Silver | $3.50 |
| Gold and above | $3.00 |
Every run also carries a one time Actor Start fee of $0.005 (billed once per run, not per job). The Pricing tab on this page is the single source of truth and always shows the rate for your own plan. If this table and the Pricing tab ever disagree, the Pricing tab is right.
What a real job costs. Apify's Free plan includes $5 of usage credit every month, roughly 1,040 Indeed jobs a month at no cost to you. The default 45 job search costs about $0.14 on Gold, plus the $0.005 start fee. A 500 job pull across several queries or locations costs about $1.50 on Gold; see the limitations below on why deep pagination within a single query is not always the fastest way to get there.
What is never charged. Blocked pages, empty searches and duplicate listings are never billed against the per job rate. The charge event fires only after a job record is validated and stored.
How does it work?
Each search page is requested through Apify's UNBLOCKER proxy group, which renders Indeed's page server side and clears the PerimeterX and Cloudflare Turnstile challenge without a browser running on this actor's side at all. The resulting HTML embeds a plain JavaScript object literal, window.mosaic.providerData["mosaic-provider-jobcards"], the exact same data object Indeed's own front end reads to render the page. The actor extracts that object directly from the raw HTML with a brace balanced scan and parses it as JSON, rather than rendering the page and reading the DOM.
The first page of results (start=0) solves reliably and, measured live, typically returns around 40 jobs on its own, comfortably above the default maxResults of 45. Deeper pagination (start=10, start=20 and beyond) is requested a few pages at a time in parallel and solves considerably less reliably than page one, since UNBLOCKER is not guaranteed to clear every attempt. Jobs are deduplicated by Indeed's own job key across pages, and the run stops cleanly once a page can't be solved after a few retries or returns no new jobs, rather than paying to keep retrying a degraded proxy pool.
Every returned record carries the search_query and search_location that produced it, so a multi search dataset stays attributable to what generated each row.
What input does it take?
{"query": "software engineer","location": "New York","country": "US","maxResults": 45}
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Yes | Job title, skill or keyword to search for (Indeed's "what" field). | |
location | string | No | City, state, ZIP or "Remote" (Indeed's "where" field). Leave empty for nationwide. | |
country | select | No | US | Which of the 17 supported Indeed country sites to search: US, GB, CA, IN, AU, DE, FR, NL, IE, SG, NZ, ES, IT, BR, MX, ZA, AE. |
maxResults | integer | No | 45 | Maximum job listings to return. The first solved page alone typically yields around 40 jobs. |
proxy | object | No | UNBLOCKER | Indeed blocks datacenter and unproxied traffic. Apify's UNBLOCKER proxy group is required and is the default. |
What data do you get back?
Field list and example are taken from a real run, not a mock up. A real run returns an array of records; three below show the same fields across three of the 17 supported country sites (US, India and the UK).
[{"job_id": "82075119d56dbfed","job_url": "https://www.indeed.com/viewjob?jk=82075119d56dbfed","title": "Apprentice Electrician","company": "Huckleberry Electric","location": "Lynnwood, WA","remote": false,"salary": "$21 - $28 an hour","job_type": "Full-time","posted": "30+ days ago","posted_date": "2026-08-11T05:00:00.000Z","description": "Want to become a highly skilled residential electrician. Assist journeyman electricians with residential service and installation projects, learning to size, run and terminate conduit and wire in occupied homes...","company_rating": 4.2,"company_review_count": 38,"urgently_hiring": false,"sponsored": true,"search_query": "electrician","search_location": "Seattle, WA","scraped_at": "2026-09-10T09:27:11.044Z"},{"job_id": "9f3b21c7a4d8e112","job_url": "https://in.indeed.com/viewjob?jk=9f3b21c7a4d8e112","title": "Backend Engineer, Node.js","company": "Skyloop Technologies","location": "Bengaluru, Karnataka","remote": true,"salary": "₹12,00,000 - ₹18,00,000 a year","job_type": "Full-time","posted": "5 days ago","posted_date": "2026-09-05T05:00:00.000Z","description": "Build and maintain REST and GraphQL APIs powering our logistics platform. Strong Node.js and PostgreSQL experience required, AWS a plus...","urgently_hiring": false,"sponsored": false,"search_query": "backend engineer","search_location": "Bengaluru","scraped_at": "2026-09-10T09:27:12.318Z"},{"job_id": "b7e410a2c9f6d038","job_url": "https://uk.indeed.com/viewjob?jk=b7e410a2c9f6d038","title": "Customer Support Advisor","company": "Larkspur Retail Group","location": "Manchester","remote": false,"salary": "£11.50 - £13.20 an hour","job_type": "Part-time","posted": "Just posted","posted_date": "2026-09-10T06:00:00.000Z","description": "Handle inbound customer queries by phone and chat for a growing retail brand, with flexible shift patterns across evenings and weekends...","company_rating": 3.6,"company_review_count": 214,"urgently_hiring": true,"sponsored": true,"search_query": "customer support","search_location": "Manchester","scraped_at": "2026-09-10T09:27:13.702Z"}]
Note the second record: company_rating and company_review_count are only present when Indeed shows them on the listing, so a job_id without a review history simply omits both fields rather than reporting zero.
| Field | Description |
|---|---|
job_id | Indeed job key, unique per posting |
job_url | Canonical Indeed job posting URL |
title | Job title |
company | Company name |
location | Job location |
remote | Whether the job is flagged remote |
salary | Salary text exactly as Indeed shows it |
job_type | Employment type: Full-time, Part-time, Contract and so on |
posted | Relative posting time, e.g. "3 days ago" |
posted_date | Absolute posting date as an ISO timestamp, when Indeed provides one |
description | Job description snippet, plain text |
company_rating / company_review_count | Company star rating and review count on Indeed, when shown |
urgently_hiring | Indeed's own "Urgently hiring" flag |
sponsored | Whether the listing is a sponsored result |
search_query / search_location | The query and location that produced this row |
scraped_at | ISO timestamp when this record was captured |
Every run also ends with a final _type: "summary" record reporting jobs scraped, pages solved and pages blocked. It is informational only and never billed.
What are the limitations?
Worth knowing before you buy, so there are no surprises:
- Deep pagination is unreliable. The first search page solves reliably through UNBLOCKER; pages beyond it (
start>0) solve considerably less often, measured live at roughly 2 successes in 9 attempts. A largemaxResultson a single narrow query can return fewer jobs than requested; running several queries or locations in parallel is generally more effective than pushing one query deep. - The run stops at the first page it cannot solve or that returns no new jobs, rather than skipping ahead over the gap, so results stay in a clean, attributable sequence but a run can end short of
maxResultson a hostile day. salaryis a string, not a number. Indeed publishes it in different shapes (hourly ranges, annual ranges, "From £X", or nothing at all); parsing it to a number would force a guess and quietly lose the unit, so it is preserved exactly as displayed.company_rating,company_review_countandurgently_hiringare only present when Indeed shows them on the listing, they are not looked up separately.- UNBLOCKER is a metered proxy tier, which is why the per job price here is higher than a plain HTTP job board actor; it is what makes Indeed's PerimeterX and Turnstile layer solvable at all without running a browser on this actor's side.
What can you use it for?
Recruitment market mapping. Run the same query weekly across cities to see who is hiring, at what salary, and how fast postings turn over.
Compensation benchmarking. The salary string is captured verbatim as Indeed shows it, so you can band roles by title and location without running a survey.
Competitor headcount signals. Track a named company's postings over time as a leading indicator of expansion or a new team standing up.
Lead generation for staffing agencies. Companies posting urgently_hiring roles are in market right now, not just browsing.
How do I get started?
- Open the actor and enter a
query, for examplesoftware engineer. - Optionally add a
locationand pick acountryfrom the 17 supported sites. - Set
maxResults. Leaveproxyon the UNBLOCKER default. - Click Start.
- Download as JSON, CSV or Excel, or pull the dataset via API or MCP.
Can I run it on a schedule?
Yes, with Apify's built in Schedules. No code and no cron server of your own.
- Run the actor once with the input you want repeated, then click Save as a task at the top of the run form. This keeps your exact input attached for every future run.
- In the Apify Console, go to Schedules in the left sidebar, then Create new.
- Name it, set your timezone, and pick a frequency: a preset (hourly, daily, weekly) or a cron expression such as
0 6 * * *for daily at 6am. - Under Actors or tasks to run, add the task you saved in step 1.
- Save. It then runs unattended, billed the same pay per job way as a manual run. Nothing is charged just for the schedule existing.
Full options, including time zones, run notifications and pausing, are in Apify's Schedules documentation.
Is scraping Indeed jobs legal?
This actor reads only Indeed's public job search results, the same listings any visitor can see without logging in. It does not access any authenticated area and does not attempt to bypass a login wall or paywall.
This is general information, not legal advice. If a result set contains personal data, your use of it may fall under data protection laws such as GDPR, CCPA or their equivalent in whichever of the 17 supported countries you search, depending on where you and your data subjects are. You are responsible for using the output in line with Indeed's terms and the law that applies to you.
FAQ
Do I need an Indeed account or API key? No. The actor reads publicly visible search results. There is no login step and you never supply credentials.
Which countries are supported?
Set country to one of the 17 supported Indeed sites: US, GB, CA, IN, AU, DE, FR, NL, IE, SG, NZ, ES, IT, BR, MX, ZA or AE. location is passed through as typed, so it accepts anything the site's own location box accepts.
Why is salary a string rather than a number?
Because Indeed publishes it as a string and the shape varies: hourly ranges, annual ranges, "From £X" or nothing at all. Parsing it to a number would force a guess and quietly lose the unit, so the field is preserved exactly as displayed.
Why did I get fewer jobs than my maxResults?
The first page solves reliably; pages deeper into pagination solve less often (measured at roughly 2 of 9 attempts), and the run stops cleanly at the first page it cannot solve rather than skipping ahead. Splitting a large request across more queries or locations is usually more effective than one deep single query pull.
How current are the results?
They are fetched live at run time. posted keeps Indeed's own relative wording, and posted_date gives you a sortable ISO timestamp derived from it when Indeed provides one.
Can I use Indeed Jobs Scraper through an MCP server? Yes. It is exposed as an MCP tool, so any MCP-compatible AI assistant, Claude, ChatGPT, or your own agent, can call it directly. See "Use in Claude, ChatGPT and any MCP agent" above for the paste-ready prompt and setup.
Use in Claude, ChatGPT and any MCP agent
https://mcp.apify.com/?tools=themineworks/indeed-scraper
Things an agent can ask for once connected:
- "Find 40 remote software engineer jobs on Indeed in the US."
- "Pull electrician jobs in Seattle and flag which ones are urgently hiring."
- "Compare average posted salary for data analyst roles in New York versus Austin."
Copy this into your AI assistant
Paste the line below into ChatGPT, Claude, or any assistant connected to Apify's MCP, and it will run the job for you:
Use the Apify actor themineworks/indeed-scraper to find 40 remote software engineer jobs on Indeed in the US. Return the results as a table.
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/indeed-scraper').call({query: 'software engineer',location: 'New York',country: 'US',maxResults: 45,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Related actors
Same job market data, different boards and different countries:
- Naukri Jobs Scraper: India's largest generalist job board, for
country: "IN"searches with deeper India specific fields. - LinkedIn Jobs Scraper: public LinkedIn job listings by keyword and location.
- SEEK Jobs Scraper: Australia and New Zealand's largest job board.
- RemoteOK Jobs Scraper: the whole remote only job board in one pull.
- LinkedIn Company Scraper: firmographics for the companies posting on Indeed.
Found a bug or have a feature request? Open an issue on the actor's Apify Console page.