Indeed Jobs Scraper | 18 Fields, 17 Countries, No Login avatar

Indeed Jobs Scraper | 18 Fields, 17 Countries, No Login

Pricing

from $3.00 / 1,000 job scrapeds

Go to Apify Store
Indeed Jobs Scraper | 18 Fields, 17 Countries, No Login

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

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

102

Total users

23

Monthly active users

a day ago

Last modified

Share

45 Indeed jobs in 53 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with nearly 139,000 runs across our actors.

Why choose this actor?

  • 17 Indeed country sites from one input. Switch country between the US, UK, Canada, India, Australia, Germany, France and 10 more; the same 18 fields come back for each. A recorded run returned 45 registered nurse jobs in Austin, Texas in 53 seconds. No Indeed account and no login.
  • You pay only for jobs delivered, each job once. Jobs are deduplicated by Indeed's job key before they are saved and charged. Blocked pages, retries, empty searches and the run's summary rows are never billed.
  • No proxy setup and no browser to manage. Indeed blocks ordinary traffic with a PerimeterX check and a Cloudflare Turnstile challenge. The actor goes through Apify's UNBLOCKER proxy by default and reads Indeed's own job data from the page, so you do not buy residential proxies or run a browser.

Run it on Apify

Part of The Mine Works Jobs and hiring family: Foundit Monster India Jobs, Hirist Jobs Scraper, India Jobs MCP, Naukri Jobs Scraper, Shine.com Jobs Scraper, Internshala Scraper.

Try it in one minute

Paste this into the JSON tab of the input page. It returns 10 jobs from the first page of results, usually in under a minute.

{
"query": "software engineer",
"location": "New York",
"country": "US",
"maxResults": 10
}

The only input you must give is query: a job title, skill or keyword, the same thing you would type into Indeed's "What" box. location takes whatever Indeed's "Where" box takes on that country's site: a city, a state, a ZIP or postcode, or Remote. Leave it empty to search the whole country. country picks the Indeed site: US, GB, CA, IN, AU, DE, FR, NL, IE, SG, NZ, ES, IT, BR, MX, ZA or AE.

Apify's free plan includes $5 of credit every month, which covers about 1,000 jobs at this actor's price (Free tier $4.80 per 1,000 jobs, plus the $0.005 start fee on each run).

Copy to your AI assistant

themineworks/indeed-scraper on Apify. Searches Indeed job listings on 17 country sites by keyword and location and returns one row per job with title, company, location, salary text as shown, job type, remote flag, posting age and date, description snippet, company rating and review count, urgently hiring and sponsored flags, and the job URL. Call ApifyClient("TOKEN").actor("themineworks/indeed-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: query (string). Optional: location (string, empty = whole country), country (US default; GB, CA, IN, AU, DE, FR, NL, IE, SG, NZ, ES, IT, BR, MX, ZA, AE), maxResults (default 45, max 1000), proxy (defaults to Apify UNBLOCKER; leave it), monitorMode (true delivers only jobs not delivered by an earlier run with the same input). Rows with _type "summary" or "info" are run reports and are never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~indeed-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • 18 fields per job, including salary exactly as Indeed prints it, job_type, remote, urgently_hiring, sponsored, the company's Indeed rating and review count, a relative and an absolute posting date, and the search_query and search_location that produced the row.
  • 17 country sites: United States, United Kingdom, Canada, India, Australia, Germany, France, Netherlands, Ireland, Singapore, New Zealand, Spain, Italy, Brazil, Mexico, South Africa and United Arab Emirates. The actor uses the right Indeed domain for each (for example uk.indeed.com, in.indeed.com, de.indeed.com).
  • Up to 1,000 jobs per run (default 45). The first results page is fetched on its own; deeper pages are requested a few at a time in parallel, with up to 3 attempts per page.
  • No browser. Plain HTTP requests through Apify's UNBLOCKER proxy group, then the job list is read from the data object Indeed's own page uses to draw its job cards.
  • Stops instead of burning money. After 3 blocked attempts in a row, or a page with no new jobs, the run ends and returns what it has. A built-in cost guard also stops a run whose proxy spend outruns what it is delivering.

How to use it

Basic: one search, default size

{
"query": "registered nurse",
"location": "Austin, TX",
"country": "US"
}

Returns up to 45 jobs. In our recorded run this exact input returned 45 jobs from a single results page in 53 seconds.

Several searches at once

Each run takes one query and one location. To cover several roles or cities, start one run per search; Apify runs them in parallel. With the Python client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
searches = [("data analyst", "London", "GB"), ("data analyst", "Manchester", "GB"), ("data analyst", "Bengaluru", "IN")]
for query, location, country in searches:
run = client.actor("themineworks/indeed-scraper").call(
run_input={"query": query, "location": location, "country": country, "maxResults": 45}
)
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
if "_type" not in job:
print(job["title"], job["company"], job.get("salary"))

Each row carries search_query and search_location, so the merged results stay attributable. Several shallow searches usually return more jobs than one very deep search (see the FAQ on pagination).

Salary benchmarking across countries

{
"query": "data engineer",
"location": "London",
"country": "GB",
"maxResults": 100
}

Run the same query for each country you care about and compare the salary text by location. In our UK sample, 14 of 15 customer service jobs showed a salary; in our India sample, 1 of 15 did, because most Indian listings on Indeed leave it out.

Staffing leads: who needs people right now

{
"query": "warehouse associate",
"location": "Dallas, TX",
"country": "US",
"maxResults": 200
}

Filter on urgently_hiring: true for employers Indeed marks as hiring urgently, and group by company to see who has the most open roles. Schedule it weekly (for example 0 8 * * 1) and compare the counts.

Remote roles for a jobs newsletter

{
"query": "customer success manager",
"location": "Remote",
"country": "US",
"maxResults": 100
}

location: "Remote" is passed to Indeed exactly as typed. Check the remote flag on each row before publishing, since it comes from Indeed's own remote marker. Schedule it daily with "monitorMode": true and each run delivers only jobs you have not received before (see Run it on a schedule).

Input parameters

ParameterTypeDefaultWhat it does
querystringrequired (form prefill: software engineer)Job title, skill or keyword, as in Indeed's "What" box.
locationstringnone (form prefill: New York)City, state, ZIP or postcode, or Remote, as in Indeed's "Where" box. Leave empty for the whole country.
countrystringUSWhich Indeed site to search: US, GB, CA, IN, AU, DE, FR, NL, IE, SG, NZ, ES, IT, BR, MX, ZA or AE.
maxResultsinteger45Most jobs to return, up to 1,000. One results page gives roughly 15 to 45 jobs.
proxyobjectApify UNBLOCKER group (form prefill; also used when the field is left out)Indeed blocks datacenter and unproxied traffic, so leave this on UNBLOCKER.
monitorModebooleanfalseDeliver only jobs not delivered by an earlier run with the same input. Skipped jobs are not charged. Made for daily schedules.

"Form prefill" values fill the Console form for you but are not defaults: an API call that leaves location out searches the whole country.

What data do you get?

One row per job. Fields Indeed does not show for a listing are left out of that row rather than filled with zeros.

The job: job_id (Indeed's job key), job_url, title, job_type (for example Full-time, or Full-time, Part-time when Indeed lists several), remote, description (the snippet Indeed shows in search results, as plain text), urgently_hiring, sponsored.

Pay: salary, kept exactly as Indeed shows it: an hourly or yearly range, "From £25,000 a year", "Up to £27,000 a year" or "$296 a day". It is text on purpose, so the unit is never lost; parse it yourself if you need numbers.

The employer: company, company_rating and company_review_count (Indeed's company reviews, when shown on the listing).

Where and when: location as Indeed formats it, posted (Indeed's relative wording such as "13 days ago" or "30+ days ago"), posted_date (an ISO date from Indeed's own posting timestamp).

Run context: search_query, search_location, scraped_at.

How often the optional fields appear depends on the country. In our samples, salary was on 21 of 45 US jobs, 14 of 15 UK jobs and 1 of 15 Indian jobs; company_rating was on 27 of 45, 8 of 15 and 13 of 15.

Each run also ends with a _type: "summary" row (jobs delivered, jobs charged, pages solved and blocked, requests made) and a _type: "info" row. Neither is a job and neither is ever charged. Skip rows that have a _type field when you load the data.

Stable fields for automations

These 14 fields were present in every job row we sampled (78 rows from US, Indian and UK searches):

FieldWhat it holds
job_idIndeed's job key, unique per posting and used for deduplication
job_urlIndeed job page on the country's domain
titleJob title
companyEmployer name
locationLocation as Indeed formats it
remotetrue when Indeed marks the job remote
postedRelative posting age as shown
posted_dateISO date of posting
descriptionSearch result snippet, plain text
urgently_hiringIndeed's "Urgently hiring" flag
sponsoredtrue for sponsored listings
search_queryThe query that produced the row
search_locationThe location that produced the row
scraped_atISO timestamp of capture

We will not rename these fields. New fields may be added; existing ones keep their names.

Output examples

Real rows from our own runs in September 2026, one per country site. Descriptions are Indeed's own search snippets.

United States (registered nurse, Austin, TX). Indeed returns related roles for a search, and sponsored listings can be old: this one was first posted in June 2025.

{
"job_id": "c32a618e269f1b58",
"job_url": "https://www.indeed.com/viewjob?jk=c32a618e269f1b58",
"title": "Overnight Emergency Veterinary and Critical Care Technician",
"company": "Austin Veterinary Emergency and Specialty Center",
"location": "Austin, TX 78730",
"remote": false,
"salary": "From $24 an hour",
"job_type": "Full-time",
"posted": "30+ days ago",
"posted_date": "2025-06-10T05:00:00.000Z",
"description": "This ER/CC technician will primarily be responsible for triaging and stabilizing incoming emergency patients and also helping care for inpatient cases for the…",
"company_rating": 3.3,
"company_review_count": 18,
"urgently_hiring": false,
"sponsored": true,
"search_query": "registered nurse",
"search_location": "Austin, TX",
"scraped_at": "2026-09-29T23:06:09.918Z"
}

India (data analyst, Bengaluru, country: "IN"), with no salary shown:

{
"job_id": "db8108973f39cacb",
"job_url": "https://in.indeed.com/viewjob?jk=db8108973f39cacb",
"title": "Data Analyst",
"company": "HSBC Global Services Limited",
"location": "Bengaluru, Karnataka",
"remote": false,
"job_type": "Full-time",
"posted": "13 days ago",
"posted_date": "2026-09-09T05:00:00.000Z",
"description": "Create analysis of data-driven product functionality. Use a range of data tools including Structured Query language (SQL) and python on Hadoop and Google cloud…",
"company_rating": 4,
"company_review_count": 16133,
"urgently_hiring": false,
"sponsored": false,
"search_query": "data analyst",
"search_location": "Bengaluru",
"scraped_at": "2026-09-29T23:06:27.460Z"
}

United Kingdom (customer service, Manchester, country: "GB"). Indeed includes nearby towns, here Warrington:

{
"job_id": "bb262c527b4df9e8",
"job_url": "https://uk.indeed.com/viewjob?jk=bb262c527b4df9e8",
"title": "Customer Care Consultant",
"company": "Millercare Ltd",
"location": "Warrington WA1",
"remote": false,
"salary": "From £25,000 a year",
"job_type": "Full-time",
"posted": "30+ days ago",
"posted_date": "2026-07-31T05:00:00.000Z",
"description": "A full, clean driving licence and you're happy behind the wheel of a van. You'll be hands-on, out on assessments and deliveries as much as you're on the shop…",
"company_rating": 3.4,
"company_review_count": 29,
"urgently_hiring": false,
"sponsored": true,
"search_query": "customer service",
"search_location": "Manchester",
"scraped_at": "2026-09-29T23:07:24.355Z"
}

The summary row that ends a run on Apify (trimmed; never charged):

{
"_type": "summary",
"jobs_scraped": 3,
"charged_for": 3,
"pages_solved": 1,
"pages_blocked": 0,
"requests": 1,
"delivered": 3,
"scraped_at": "2026-09-01T21:10:13.088Z"
}

Pricing

Pay per event: you pay for each job delivered to your dataset, plus a small start fee per run.

EventFreeBronzeSilverGold and above
job-scraped, per job$0.0048$0.0041$0.0035$0.003
job-scraped, per 1,000 jobs$4.80$4.10$3.50$3.00
apify-actor-start, per run$0.005 per GB of run memory, minimum one eventsamesamesame

The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory, with a minimum of one event. This actor runs on 512 MB by default, so a default run pays one event: $0.005. At 2 GB it would be $0.01.

Worked examples on the Gold tier: the default 45 job search costs $0.135 plus $0.005. 500 jobs cost $1.50 plus the start fee of each run you use. On the Free tier, 45 jobs cost $0.216 plus $0.005.

Why the price is higher than a plain job board scraper: every Indeed page goes through Apify's UNBLOCKER proxy, which is a metered service, and we pay for it, including the attempts Indeed blocks.

Never charged: blocked pages and retries, duplicate jobs (each job key is charged once per run), empty searches, and the summary and info rows. A run that finds no jobs pays only the start fee.

There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your own plan; if it and this table ever differ, the Pricing tab is right.

Run it on a schedule

Switch on monitorMode and the actor remembers which jobs it has delivered for this search. Each later run delivers only jobs you have not received before, and you pay only for those.

  1. Fill in the input, tick Monitor mode, and save it as a task.
  2. In Apify Console open Schedules, click Add schedule, and pick Daily (or a cron such as 0 6 * * *).
  3. Add the saved task to the schedule and click Save.
{
"query": "customer success manager",
"location": "Remote",
"country": "US",
"maxResults": 100,
"monitorMode": true
}

The first run delivers every job it finds. Each later run with the same input delivers only jobs whose job_id it has not delivered before, reading further pages when the first one holds nothing new. Skipped jobs are never charged; the start fee applies to every run as usual. The last row of each run (_type: "info") gives new_this_run, skipped_already_seen and a scheduling tip. The history belongs to the search: change query, location or country and a new history starts; change maxResults and it carries on.

FAQ

What is Indeed? Indeed is one of the largest job sites in the world, with separate country sites (indeed.com, uk.indeed.com, in.indeed.com and so on) that list jobs posted directly by employers and pulled from company career pages and agencies. This actor reads the public search results on 17 of those sites.

How many jobs can I get from one run? Up to 1,000, but the realistic number depends on how deep Indeed lets you page. The first results page gives roughly 15 to 45 jobs (45 in our US run, 15 in our Indian and UK runs). Deeper pages are much harder to get through Indeed's protection: in our September runs, page one solved every time and page two was blocked in both runs that needed it, so those runs ended at 15 jobs instead of the 20 requested. For big pulls, run many narrower searches (more cities, more job titles) instead of one very deep one.

Why did I get fewer jobs than maxResults? Either the search had no more results, or Indeed blocked the next page three times in a row and the run stopped rather than keep paying for blocked attempts. You are charged only for the jobs delivered.

How fresh is the data? Every run reads Indeed live. posted shows Indeed's own wording and posted_date gives a sortable date. Sponsored listings can stay up for months, so filter on posted_date if you want only new jobs.

Do I need an Indeed account, cookies or an API key? No. The actor reads public search results with no login, and you never supply credentials.

Which proxy does it use, and do I pay for it separately? Apify's UNBLOCKER proxy group, set by default. Its cost is included in the per-job price; you do not need a proxy plan of your own. Datacenter and residential proxies are blocked by Indeed, so leave the setting alone.

Can I get the full job description? The description field is the snippet Indeed shows in search results, not the full job page. Open job_url for the full text.

Why is salary text and not a number? Indeed publishes pay in many shapes (hourly and yearly ranges, "From", "Up to", per day) and often not at all, especially in India. Keeping the text avoids guessing the unit. Parse it in your own pipeline if you need numbers.

Can I run it on a schedule? Yes. Save your input as a task in Apify Console, then add a schedule (Schedules, Create new, then a preset or a cron expression such as 0 6 * * *). Each scheduled run returns the current listings. Set monitorMode to true and each run delivers, and charges, only jobs not delivered by an earlier run with the same input.

How do I export the data? From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Remove rows with a _type field to keep only jobs.

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/indeed-scraper.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http indeed-scraper "https://mcp.apify.com/?tools=themineworks/indeed-scraper".

It is also one of the tools inside our India Jobs MCP server, which bundles 14 India job tools.

Is it legal to scrape Indeed? The actor collects only public job listings that anyone can see without logging in, and they describe employers and roles, not private individuals. You are responsible for how you use the data, including Indeed's terms and data protection laws such as GDPR and CCPA in the countries you search. This is general information, not legal advice.

Integrations

  • Google Sheets: export a run to a sheet, or append each scheduled run's jobs with Apify's Google Sheets integration.
  • Make, Zapier and n8n: start runs and send new jobs to Slack, email, Airtable or your ATS with the Apify app or node.
  • Webhooks: have Apify call your URL when a run finishes, then fetch the dataset.
  • API and client libraries: Python and JavaScript clients, or plain HTTP, as in the recipes above.
  • MCP clients: Claude, Cursor and other MCP clients through https://mcp.apify.com.

More from The Mine Works

Jobs and hiring

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

E-commerce and marketplaces

Company and business data

Food and local services

Developer and AI tools

More tools

Support

Found a bug or a country site that misbehaves? Open an issue on the Issues tab of this page. To ask for another job board or country, email dmineworks@gmail.com. A guide for this actor also lives at themineworks.com.

Indeed Jobs Scraper turns Indeed searches on 17 country sites into clean job rows with salary as shown, ratings and posting dates, billed only per job delivered.