Indeed Scraper — Jobs, Salaries & Company Data avatar

Indeed Scraper — Jobs, Salaries & Company Data

Pricing

from $0.06 / 1,000 job scrapeds

Go to Apify Store
Indeed Scraper — Jobs, Salaries & Company Data

Indeed Scraper — Jobs, Salaries & Company Data

Scrape Indeed jobs in 59 countries from $0.07 per 1,000 — title, company, structured salary, coordinates, skills, benefits, education, certifications and company enrichment. Reads Indeed's own API: no browser, minutes not hours. Pay per result.

Pricing

from $0.06 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

bootforge

bootforge

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

13 days ago

Last modified

Share

Indeed Job Scraper

The Indeed Job Scraper is an Apify actor that extracts job listings from Indeed by keyword search or pre-built search URL, across 59 country storefronts — including the United States, United Kingdom, Canada, Germany, France, Japan, India, Singapore, Brazil, Mexico and Australia. It returns title, company, structured salary (min, max, currency, pay period), location with latitude/longitude, workplace type, full description (text + HTML), posting date, and company enrichment — website, social links, industry, CEO, and employer size tier.

It queries Indeed's own job-search API — no browser, no CAPTCHA service, no rendering. A 200-job run with full descriptions finishes in minutes on the 512 MB default, which is also why it costs so little to run.

Use it to build an ATS feed, run job-market research, benchmark salaries, generate recruitment leads, or track competitor hiring — exported to JSON, CSV, or Excel.

Table of contents

What the Indeed scraper does

  • 🔎 Keyword search — search any term and paginate through every matching job across 59 countries.
  • 🔗 Pre-built search URLs — paste a filtered Indeed URL from your browser; the country is auto-detected from the host.
  • 💷 Structured salarymin, max, currency, and period (yearly/monthly/weekly/daily/hourly) parsed from the raw text, not left as a free string.
  • 📍 Geo coordinateslatitude/longitude plus city, region and postal code on every job, so results map and radius-filter directly.
  • 🏢 Company enrichment — website, Twitter/Instagram/Facebook, industry, CEO, HQ and Indeed employer size tier, alongside the rating breakdown.
  • 🧠 Skills, benefits, education, certifications — Indeed ships these as one flat untyped bag; we split it into separate fields so you can filter on them.
  • 🧩 Server-side filters — date posted, job type, workplace type and salary floor are applied by Indeed, so you don't pay to fetch rows you'd throw away.
  • No browser — the run reads Indeed's API, so it needs 512 MB and finishes in minutes instead of hours.
  • 📄 Full descriptions — optional per-job detail fetch for the complete description in both text and HTML.

Use cases

ATS and job-board feeds — Structured salary (min, max, currency, pay period) rather than a free-text string is what makes listings comparable and sortable. Full description in both text and HTML means the same row serves a parser and a rendered job page.

Salary benchmarking by role and market — Ten country storefronts from one input makes it practical to compare what a title pays in the US against the UK, Germany, or Australia without running four different tools.

Competitor hiring intelligence — What a company is hiring for, and where, is a reliable read on what it's building. Workplace type, posting dates, and the is_high_volume_hiring flag show whether a team is expanding or backfilling.

Recruitment lead generation — Companies posting heavily in a niche are the ones with budget to fill roles. Every row carries the company's own website, industry and size tier, so a job feed doubles as a lead list without a second enrichment step.

Mapping and radius analysislatitude/longitude on every job means results plot straight onto a map, or filter by true distance rather than by matching a location string.

How to scrape Indeed jobs

  1. Click Try for free and open the actor.
  2. Enter one or more search_queries or paste search_urls.
  3. Choose your country (59 storefronts — see the list below) and optional location.
  4. Optional: add filters (job_type, workplace_type, date_posted, salary_min).
  5. Click Start and watch results stream into the dataset.
  6. Export as JSON, CSV, or Excel, or pull from the Apify API.

Search by keyword:

{
"search_queries": ["python developer"],
"country": "US",
"location": "New York",
"date_posted": "week",
"max_results": 200
}

Scrape a filtered search URL (country auto-detected from the host):

{
"search_urls": ["https://uk.indeed.com/jobs?q=data+scientist&l=London&sc=0kf%3Aattr(DSQF7)%3B"],
"fetch_descriptions": true
}

Indeed scraper input

FieldTypeDefaultDescription
search_queriesstring[]Keywords to search. At least one of queries or URLs is required.
search_urlsstring[]Pre-built Indeed search URLs; country auto-detected from the host.
countryenumUSStorefront — 59 supported (see below). Each maps to a country TLD (US → indeed.com, GB → uk.indeed.com, SG → sg.indeed.com).
locationstringCity, state, postcode, or Remote.
job_typeenumfull-time, part-time, contract, temporary, internship.
workplace_typeenumremote, hybrid, on-site.
date_postedenum24h, 3d, week, 2weeks.
salary_minintAnnual salary floor, in the country's currency.
fetch_descriptionsbooltrueFetch the detail page for each job's full description (text + HTML).
max_resultsint200Cap across all queries (hard limit 10,000).
max_concurrencyint8In-flight requests (1–20). Higher = faster but more blocking risk.
max_requests_per_minuteint60Request-rate ceiling across all workers.
request_delayint0Fixed delay (seconds) between requests.
proxyProviderobjectApify residentialdefault (residential proxy included), dataimpulse, apify, custom (uses proxyUrls), or disabled.
proxyUrlsobjectApify residentialYour own gateway URLs, one per entry. Only read when proxyProvider is custom.
proxyobjectApify residentialProxy configuration (see below).

Indeed job data output

Each job is one dataset row. Sample from a live run:

{
"job_id": "a499aa89f203fdc0",
"url": "https://www.indeed.com/viewjob?jk=a499aa89f203fdc0",
"title": "Senior Data Engineer",
"company_name": "Wells Fargo",
"company_url": "https://www.indeed.com/cmp/Wells-Fargo",
"company_rating": 3.6,
"company_review_count": 47727,
"company_logo_url": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/0eeb19f54dae27ec1c6fcf27c9e62781",
"company_id": "8b979ddd69dc88d9",
"company_tier": "ENTERPRISE",
"company_website": "https://www.wellsfargojobs.com/en/well-life/",
"company_twitter": "https://twitter.com/WellsFargo",
"company_instagram": "https://www.instagram.com/wellsfargo",
"company_facebook": "https://www.facebook.com/wellsfargo",
"company_industry": null,
"company_ceo": "Charlie Scharf, CEO and President",
"company_hq": "San Francisco, CA",
"rating_count": 47726,
"rating_work_life_balance": 3.6,
"rating_management": 3.3,
"location": "Iselin, NJ 08830",
"workplace_type": "hybrid",
"employment_type": "Full-time",
"latitude": 40.56443,
"longitude": -74.32623,
"city": "Iselin",
"region": "NJ",
"postal_code": "08830",
"ref_num": "JOB_POSTING-3-942563_LOCATION_JP109348",
"employer_url": "https://wd1.myworkdaysite.com/recruiting/wf/WellsFargoJobs/job/CHARLOTTE-NC/Senior-Data-Engineer_R-555078",
"occupations": ["Data & Database Occupations", "Technology Occupations", "Data Developers"],
"language": "en",
"is_expired": false,
"is_urgent_hire": false,
"is_high_volume_hiring": false,
"salary_min": 100000.0,
"salary_max": 196000.0,
"salary_currency": "USD",
"salary_period": "yearly",
"salary_raw": "$100,000 - $196,000 a year",
"description_text": "About this role:\n\nWells Fargo is seeking a Senior Data Engineer within the Commercial & Corporate & Investment...",
"description_html": "<div><p><b>About this role:</b></p><p></p><p>\nWells Fargo is seeking a Senior Data Engineer...</p></div>",
"posted_relative": "Today",
"posted_iso": "2026-08-10T05:00:00Z",
"apply_url": "http://www.indeed.com/rc/clk?jk=a499aa89f203fdc0&bb=L7_w5bPNrKxToieJbdKwVASLRF7...",
"country": "US",
"scraped_at": "2026-08-10T18:21:20+00:00"
}
FieldDescription
job_id, urlIndeed job key and canonical view URL.
title, company_nameAlways present (empty-value cards are dropped, not shipped).
company_url, company_rating, company_review_count, company_logo_urlCompany page, star rating, review count and logo.
company_id, company_tierIndeed's own employer key (a stable join key across jobs) and the employer's plan tier (ENTERPRISE, FREE, …).
company_website, company_twitter, company_instagram, company_facebookThe employer's own site and social profiles, where Indeed holds them.
company_industry, company_ceo, company_hqFirmographics from the Indeed company profile.
rating_count, rating_work_life_balance, rating_managementRating breakdown behind the headline company_rating.
location, workplace_type, employment_typeJob metadata. workplace_type is remote/hybrid/on-site; employment_type is Full-time, Contract, Internship, etc.
latitude, longitude, city, region, postal_codeResolved geo for the posting.
ref_numThe employer's own requisition ID from their ATS — the key to join against an internal system.
employer_urlThe job on the employer's own careers site (Workday, Greenhouse, …), as opposed to apply_url's Indeed redirect.
occupationsIndeed's normalized occupation taxonomy for the role.
skillsSkills the posting asks for, e.g. Python, Terraform, Communication skills.
benefitsBenefits offered, e.g. Health insurance, 401(k) matching, Paid time off.
educationEducation requirements, e.g. Bachelor's degree in computer science.
certificationsLicences and certifications, e.g. RN License, Driver's License.
scheduleShift pattern, e.g. Monday to Friday, Night shift, On call.
experience_levelEntry level, Mid-level or Senior level (the most senior stated).
experience_yearsYears of experience required, as an integer.
language, is_expiredPosting language and whether Indeed has expired the listing.
is_urgent_hire, is_high_volume_hiringIndeed's hiring-demand signals.
salary_min, salary_max, salary_currency, salary_period, salary_rawStructured salary plus the original text.
description_text, description_htmlFull description (only when fetch_descriptions is on).
posted_relative, posted_iso, apply_urlPosting metadata.
country, scraped_atStorefront and capture timestamp.

Fields Indeed doesn't surface on a given job are emitted as null rather than fabricated — fill rates are tracked over time and extractors are added as patterns stabilize.

How much it costs

This actor uses pay-per-event pricing — you pay for what you scrape, not for time.

EventUSD
Actor start (per GB memory)$0.0005
Job scraped — Free / Bronze$0.00007
Job scraped — Silver and above$0.00006
Typical run (default 512 MB)Cost
200 jobs~$0.02
1,000 jobs~$0.07
10,000 jobs~$0.70
100,000 jobs~$7.00

The run defaults to 512 MB, so the start fee is a single $0.0005 event however long the run is. No browser is launched, so what you pay is the per-job price, not compute time.

A proxy is optional. The proxy input prefills Apify Proxy residential, which works out of the box, but the API path does not depend on it. Residential IPs are worth keeping on large runs — Indeed rate-limits them far less aggressively than datacenter ranges.

If you run your own scrapers outside Apify and need residential proxies for job boards, we use DataImpulse (referral link) — pay-as-you-go residential IPs with per-country targeting and no monthly minimum.

Why this Indeed scraper

  • Richer rows than a SERP scrape — geo coordinates, employer requisition ID, the company's own website and socials, industry, size tier and the direct ATS link all come back on the same row, because the actor reads Indeed's API rather than parsing the search page.
  • Filters cost you nothing — date, job type, workplace type and salary floor are applied by Indeed before results are returned, so you aren't billed for rows you'd discard client-side.
  • Fast and small — no browser, no CAPTCHA service, 512 MB. Runs finish in minutes, which is why the run-start fee is one event rather than four.
  • Structured salary — min/max/currency/period parsed from raw pay text, with the original string kept as salary_raw.
  • Two input modes — keyword search or a pasted, pre-filtered search URL with the country auto-detected.
  • Validated output — every row is Pydantic-validated; mis-extracted cards (empty title/company, inverted salary range, out-of-range rating) are dropped, not shipped.
  • Open source — the underlying indeed-scraper Python package ships a Typer CLI and a FastAPI server; the Apify wrapper is a thin layer.

FAQ

How fast is a run? A 200-job run with full descriptions takes a few minutes; the actor reads Indeed's API, so there is no page render and no CAPTCHA step. If you need it faster, raise max_requests_per_minute and max_concurrency; if you see blocks, lower them.

How does this scraper handle Cloudflare? It doesn't have to — the API path this actor uses isn't behind Cloudflare's challenge, and no browser or third-party CAPTCHA service is involved.

Which proxies work best for Indeed? A proxy is optional and Apify residential works out of the box. On large runs prefer residential IPs with per-country targeting — datacenter ranges get rate-limited sooner. For your own scrapers we recommend DataImpulse.

Which countries are supported? 59 storefronts:

United States (US), United Kingdom (GB), Canada (CA), Australia (AU), Ireland (IE), Germany (DE), France (FR), Italy (IT), Netherlands (NL), Spain (ES), United Arab Emirates (AE), Argentina (AR), Austria (AT), Belgium (BE), Bahrain (BH), Brazil (BR), Switzerland (CH), Chile (CL), Colombia (CO), Costa Rica (CR), Czechia (CZ), Denmark (DK), Ecuador (EC), Egypt (EG), Finland (FI), Greece (GR), Hong Kong (HK), Hungary (HU), Indonesia (ID), Israel (IL), India (IN), Japan (JP), South Korea (KR), Kuwait (KW), Luxembourg (LU), Mexico (MX), Malaysia (MY), Nigeria (NG), Norway (NO), New Zealand (NZ), Oman (OM), Panama (PA), Peru (PE), Philippines (PH), Pakistan (PK), Poland (PL), Portugal (PT), Qatar (QA), Romania (RO), Saudi Arabia (SA), Sweden (SE), Singapore (SG), Thailand (TH), Turkey (TR), Taiwan (TW), Ukraine (UA), Uruguay (UY), Vietnam (VN), South Africa (ZA)

Each maps to a country-specific Indeed TLD. Need another? Open an issue — adding one is a small change.

Can I just paste an Indeed search URL? Yes. Use search_urls after applying filters on Indeed.com. The country is auto-detected from the URL host (e.g. uk.indeed.com → GB), so you don't need to set country separately.

Why are some fields empty? They simply aren't on every listing: roughly a fifth of jobs carry no employment-type chip, and not every employer has a company profile. Missing fields are emitted as null rather than fabricated.

Is scraping Indeed legal? This actor collects only publicly available job-listing data. You are responsible for complying with Indeed's terms and applicable laws. Do not collect personal data without a lawful basis.

Rate this actor ⭐

If the Indeed Job Scraper saved you time, please leave a review on its Apify Store page — ratings help other people find it and tell us what to build next. Hit a bug or missing field? Open an issue or contact us through the actor's Issues tab and we'll fix it fast — recency and reliability are what keep this actor ranking.

Building a full job-market pipeline? Pair this actor with our other scrapers — same proxy config format, same Pydantic-validated output, all open source.