Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Indeed Jobs Scraper icon

Indeed Jobs Scraper

Scrape Indeed jobs by keyword and location in 11 countries. Get company, salary, benefits, remote flag, employer rating and apply URL. $4.00 per 1,000.

213 runs on Apify $0.004 per job ($4 / 1,000)
Run this in the cloudRun on Apify →

Job Market Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust query, location, country (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.004 per job = $4 per 1,000

You are charged forWhenPrice
Job returnedCharged per job returned (blocked/empty not charged).$0.004

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-24, and they are what you are actually charged.

Inputs

FieldWhat it doesType
queryWhat to search for, e.g. "software engineer", "registered nurse", "data analyst".string
locationCity, state, or "remote", e.g. "New York", "London", "Remote". Leave blank to search the whole country.string
countryWhich Indeed country site to search.string
maxItemsHow many job listings to collect (the scraper paginates in batches of 10). Note: salary and companyRating are often null on Indeed, and the browser locale is always en-US regardless of country.integer
notionConnectorOptional. Write each job as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default), results are always saved to the dataset regardless.string
notionParentIdOptional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead.string

What you get

A structured dataset — each result includes fields like:

benefitscompanycompanyRatingcompanyReviewCountcountryjobIdjobTypeslocationpostedTextqueryremotesalarysnippettitleurl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

16 ready-to-run use cases

Scrape Indeed Jobs: Machine Learning Engineer Roles, US

US machine learning and AI engineer postings with company, location, salary where given and the apply URL. Change the search term to cover any tech role.

Indeed Data Scraper: Cybersecurity Engineer Jobs, US

US cybersecurity and security engineer roles from Indeed with company, location, salary where posted and the apply link. Edit the keyword for any job title.

Job Data Scraper: Travel Nurse ICU & ER Jobs Across the US

US travel nurse postings with employer, location, the pay an agency advertised and the apply link. Prefilled for ICU; edit the keyword for ER or med-surg.

Job Board Scraper: CDL Truck Driver Jobs by US State

CDL driving jobs state by state from Indeed: carrier, city, the advertised pay and the apply link. Set the state you want and how many rows to pull.

Job Posting Scraper: Companies Hiring Sales Reps in NYC

Every company advertising account executive roles in New York, with location and a link to the posting. Who is hiring is the lead list. Change the city.

Indeed Remote Jobs Scraper: DevOps & SRE Roles in the US

Remote-flagged DevOps and SRE postings from Indeed US: company, salary where published, and the apply link. Swap the keyword for any remote role.

Indeed Salary Data: Registered Nurse Pay by US City

Registered nurse postings with the salary range the employer advertised, city by city. Only listings that published pay carry a figure, and plenty do not.

Scrape Job Postings: Entry Level & New Grad Jobs in the US

US postings that say entry level or new grad, with company, location, pay where listed and the apply link. It matches the wording employers actually used.

Indeed Jobs Germany Scraper: Nursing & Engineering Roles

German postings from Indeed with employer, city and apply link. Prefilled with Krankenpfleger in Berlin, and searching in German gets you far better coverage.

Indeed Job Scraper: H1B Visa Sponsorship Tech Roles, US

US tech postings whose text mentions visa sponsorship, with company, location and apply link. It matches wording, so check each employer yourself.

Job Scraper: Warehouse & Fulfillment Roles by US Metro

Warehouse and fulfillment openings for any US metro, with employer, advertised pay and the apply link. Prefilled with Atlanta; change the city to move it.

Job Listings Scraper: Electrician & Trades Jobs by City

Electrician and skilled-trades postings for any US city, with employer, advertised pay and the apply link. Prefilled with Phoenix; change the city or trade.

Indeed Jobs Canada Scraper: Data Scientist Roles, Toronto

Data scientist postings from Indeed Canada with employer, city, salary where given and the apply link. Prefilled with Toronto; any Canadian city works.

Indeed Jobs Scraper: Software Engineer Jobs in Austin, TX

Pulls Austin software engineer listings off Indeed with the pay band, how long ago it posted and the apply link. Change the keyword or city to suit.

Remote Jobs Scraper: Data Analyst Roles on Indeed (US)

Remote-flagged data analyst postings from Indeed US: company, the salary where an employer published one, and the apply link. Edit the keyword for other roles.

Indeed Jobs Australia Scraper: Accountant Roles + Salary

Accountant openings across Indeed Australia with employer, city, the advertised salary and the apply link. Swap the keyword to pull any Australian role.

Related tools in Job Market Scrapers

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

Glassdoor Company Reviews Scraper iconJob Market Scrapers

Glassdoor Company Reviews Scraper

Scrape Glassdoor reviews: pros, cons, six sub-ratings, recommend rate and CEO approval. First page per company without login. $2.50 per 1,000.

20 use cases

StepStone Jobs Scraper iconJob Market Scrapers

StepStone Jobs Scraper

Scrape StepStone jobs in DE, AT, UK, NL and BE by keyword and location. Get company, salary, posted date, remote flag and links. $3.00 per 1,000 jobs.

4 use cases

Remotive Jobs Scraper iconJob Market Scrapers

Remotive Jobs Scraper

Scrape remote jobs from Remotive by keyword or category: company, region, salary, tags and plain-text descriptions. $2.00 per 1,000 jobs.

3 use cases

Multi-ATS Jobs Scraper (Greenhouse, Lever, Ashby) iconJob Market Scrapers

Multi-ATS Jobs Scraper (Greenhouse, Lever, Ashby)

Scrape open jobs from Greenhouse, Lever and Ashby boards. Get the title, location, department, posted date, description and apply link. $3.00 per 1,000.

3 use cases

LinkedIn Jobs Scraper iconJob Market Scrapers

LinkedIn Jobs Scraper

Scrape public LinkedIn jobs by keyword, location, URL or ID. Filter by date, workplace type and experience. Full descriptions. $0.80 per 1,000 jobs.

Ready to run — no setup

BuiltIn Jobs Scraper iconJob Market Scrapers

BuiltIn Jobs Scraper

Scrape Built In tech jobs: salary, all locations, skills, seniority, exact posted date. No login, no API key. $0.81 per 1,000.

Ready to run — no setup

See all Job Market Scrapers →

Indeed Jobs Scraper: job cards with salary, benefits and the apply link, from 11 country sites

Type a job title and a place, pick which Indeed site to search, and get one row per listing: title, company, location, salary where Indeed shows one, the benefits list, a remote flag, the employer rating and a direct apply URL.

These are the search-result cards, not the full job page. The description you get is the short excerpt Indeed prints under the title, and salary is missing on plenty of listings because the employer never posted one.

InputA keyword, an optional location, and one of 11 country sites
OutputOne row per job card
Ceiling1,000 jobs per run
Account neededNone, and no Indeed login
Price$4.00 per 1,000 jobs, flat on every plan

💼 What Indeed Jobs Scraper does

It runs the search you would type into Indeed yourself and reads the results out of the job-card data the page ships with, so the fields come back structured instead of scraped out of HTML. It pages through the results ten at a time until it has your number or the results run out.

Eleven country sites are covered: the US, UK, Canada, Germany, France, Australia, India, the Netherlands, Spain, Italy and Ireland. Picking the country changes which Indeed site is searched, which changes the jobs, the currency and the wording.

You get salary when Indeed has one, either the posted figure or Indeed's own estimate, in whatever form the site printed it. Benefits, job type and the remote flag come from the tags on the card.

📥 What you give it

{
  "query": "software engineer",
  "location": "Seattle, WA",
  "country": "us",
  "maxItems": 50
}
FieldDefaultWhat it is
queryrequired, box starts at software engineerThe job title or keywords. Same box you would use on the site.
locationnoneA city, a state, or remote. Leave it blank to search the whole country.
countryusWhich Indeed site: us, uk, ca, de, fr, au, in, nl, es, it or ie.
maxItems50How many jobs to collect, up to 1,000. Results come in pages of ten, so you may land a few over a round number.
notionConnectornoneOptional. Write every job into your own Notion as well as the dataset. Authorise the connector once in Settings, then pick it here.
notionParentIdnoneOptional. The Notion data source ID to write into. Leave blank and the pages are created privately in your workspace.
proxyConfigurationApify's defaultOptional, and best left alone. It is here so a run can go out through your own servers if you need that.

📤 What you get back

A real row from a recent run:

{
  "ok": true,
  "jobId": "31feffb7b93ec4d7",
  "title": "Software Development Engineer I - Early Career (2027 Starts)",
  "company": "Blue Origin",
  "location": "Seattle, WA",
  "salary": "$101,405.00 - $154,871.85 a year",
  "jobTypes": ["Full-time"],
  "benefits": ["Dental insurance", "Stock options", "401(k) matching", "Paid time off", "..."],
  "remote": false,
  "postedText": "19 days ago",
  "snippet": "Troubleshoot and fix software issues at multiple levels, including both server-side and client side. Experience developing and testing real-time embedded…",
  "companyRating": 3,
  "companyReviewCount": 224,
  "url": "https://www.indeed.com/viewjob?jk=31feffb7b93ec4d7"
}

The benefits list above is cut short; a generous employer can have a dozen entries.

FieldWhat it is
jobIdIndeed's own job key. Stable, so use it to dedupe across runs.
salaryThe text as Indeed printed it, posted figure or Indeed estimate. null when neither exists, which is common.
postedTextRelative wording like 19 days ago, straight from the card. Indeed does not publish a real date here, so there is none to give you.
remoteTrue when the card carries a remote tag, when the listing has a remote location, or when the location text says remote.
snippetThe excerpt under the title, with the markup stripped. It is not the full job description.
companyRating, companyReviewCountThe employer's star rating out of five and how many reviews it came from. null when the company has no reviews.
urlA direct viewjob link on the country site you searched.

🧾 Reading the output

Two kinds of row can land in your dataset.

RowHow to spot itCharged
A jobok: true and a jobIdyes
A diagnosticok: false and an errorCodeno

A diagnostic row is never billed as a job, and a run that finds nothing writes exactly one of them.

CodeWhat it means
BAD_INPUTquery was empty. Fill it in; location can stay blank.
NO_RESULTSThe search ran and matched nothing. Widen the keywords or drop the location.
BLOCKEDIndeed would not serve the results this time. Run it again in a few minutes.
RATE_LIMITEDIndeed asked for a slower pace. Re-run with a smaller maxItems.
SERVER_ERRORIndeed answered with a server error. Usually passes on its own.
NETWORKThe run could not reach Indeed at all.

The default table view hides most fields, including errorCode, so a run with no jobs looks like one blank line. Switch the dataset to All fields or export as JSON to read it.

If Indeed stops serving pages partway, the run keeps the jobs it already collected and stops there rather than throwing them away.

▶️ How to run it

1. Open Indeed Jobs Scraper and click Try for free. 2. Type into Keywords / job title, for example registered nurse. 3. Put a city or remote into Location, or leave it blank for the whole country. 4. Pick your Country, set Max jobs, then click Start. 5. Download the dataset as JSON, CSV or Excel, or read it from the Apify API.

💰 How much does it cost?

$4.00 per 1,000 jobs, which is $0.004 each. Flat on every Apify plan, no volume tiers.

You pay per job row delivered. Duplicates are dropped before they reach you, and diagnostic rows are never billed as jobs, so a search that matches nothing does not put any jobs on your bill.

💡 What people use it for

  • Tracking which companies are hiring for a role in one city, run weekly and deduped on jobId.
  • Building a salary picture for a title across several countries, using the same keyword on each

site.

  • Feeding a job board or a newsletter with fresh listings and the apply link already attached.
  • Filtering on the remote flag and the benefits list to shortlist the listings worth reading in

full.

🚧 What it does not do

  • Card data only. No full job description, no requirements list, no application form. Follow

url for the rest.

  • Salary is often missing. Plenty of employers post no figure, and Indeed's estimate is not

always there either. Expect null on a good share of rows.

  • postedText is relative, not a date. Indeed publishes "19 days ago" and nothing more precise,

so the actor cannot hand you a timestamp it was never given.

  • The page language is US English whichever country site you pick, so some labels read in

English even on the German or French site.

  • One search per run. Several titles means several runs, or a scheduled run per title.
  • The cursor stops at 1,000. Indeed does not page deeper than that on a search, so narrow the

keywords rather than raising the number.

  • No company profiles, salaries pages or reviews. Only the jobs list.
  • An employer with no reviews has no rating, which shows as null rather than zero.

🧭 Which jobs scraper do you need?

If you wantUse
Indeed search results with salary and apply linksThis one
Jobs straight off company career sites, across many hiring systemsMulti-ATS Jobs Scraper
Google's aggregated jobs feedGoogle Jobs Scraper
Startup roles with equity rangesWellfound Jobs Scraper
German-speaking marketsXING Jobs Scraper or StepStone Jobs Scraper

❓ Questions people ask

Do I need an Indeed account? No. Nothing to log in to and nothing to apply for.

Can I get the full job description? Not from this actor. The snippet is the card excerpt, and url takes you to the full posting.

Why does one search return fewer jobs than I asked for? Either the search genuinely has fewer matches, or Indeed stopped handing out further pages. You are charged for what arrived.

Can I search several countries at once? Not in one run. Run it once per country with the same keyword, then join the results on jobId.

Can I schedule it? Yes. Weekly with the same query works well, and jobId makes deduping across runs straightforward.

Is scraping job listings legal? These are public listings on public search pages. They can still carry personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run ID, the keyword and the country you picked. The errorCode on the diagnostic row usually names the problem on its own.