Indeed Jobs Scraper — Pay Per Result avatar

Indeed Jobs Scraper — Pay Per Result

Pricing

from $5.00 / 1,000 job listings

Go to Apify Store
Indeed Jobs Scraper — Pay Per Result

Indeed Jobs Scraper — Pay Per Result

Scrape public Indeed job listings by keyword and location. Playwright browser + residential proxies, stable schema, pay per result (~$5 / 1,000 jobs).

Pricing

from $5.00 / 1,000 job listings

Rating

0.0

(0)

Developer

Smorgi Apps

Smorgi Apps

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape public Indeed job listings by keyword and location. Clean, stable dataset schema. Pay-per-event pricing.

Store search keywords: Indeed scraper · Indeed job scraper · Indeed jobs · jobs data · job listings scraper


What you get

For each job:

FieldDescription
idIndeed job key
titleJob title
companyCompany name
companyRatingCompany rating when shown
locationLocation string
salary{ min, max, period, currency, raw }
jobTypee.g. Full-time
postedAtISO date when parseable, else relative text
descriptionPlain text
descriptionHtmlHTML description (when available)
urlPublic job URL
isRemoteRemote heuristic
scrapedAtISO timestamp
searchQueryQuery that found this job

Example input

{
"queries": ["software engineer", "data analyst"],
"location": "Remote",
"country": "www.indeed.com",
"maxItemsPerQuery": 50,
"datePosted": "7",
"parseFullDescription": true,
"dedupeAcrossQueries": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Example output item

{
"id": "abc123def456",
"title": "Software Engineer",
"company": "Example Corp",
"companyRating": 3.8,
"location": "Remote",
"salary": {
"min": 120000,
"max": 150000,
"period": "year",
"currency": "USD",
"raw": "$120,000 - $150,000 a year"
},
"jobType": "Full-time",
"postedAt": "2026-07-28T12:00:00.000Z",
"description": "We are looking for a software engineer...",
"descriptionHtml": "<div>We are looking for a software engineer...</div>",
"url": "https://www.indeed.com/viewjob?jk=abc123def456",
"isRemote": true,
"scrapedAt": "2026-08-02T06:00:00.000Z",
"searchQuery": "software engineer"
}

Pricing (PPE)

EventPriceWhen charged
apify-actor-start$0.00005Once per run (auto; first 5s compute waived)
apify-default-dataset-item (Job listing)$0.005 (~$5 / 1,000 jobs)Each job written to the dataset

Browser + residential proxies are required for Indeed reliability — that cost is baked into the per-job price so the Actor stays profitable without passing opaque platform usage on top.

Local PPE test:

$ACTOR_TEST_PAY_PER_EVENT=true ACTOR_USE_CHARGING_LOG_DATASET=true npm run dry-run

Reliability

  • Real Chromium browser (Playwright) — plain HTTP clients get 403’d by Indeed
  • Session pool + up to 6 retries; blocked sessions are retired
  • Block / captcha heuristics → retry with a fresh proxy session
  • Dedupe by Indeed jobkey (optional across queries)
  • Mosaic JSON parse first; DOM selectors as fallback
  • Default residential proxies + low concurrency (1–2)
  • Run fails if zero jobs are returned (so you are not left with a silent empty success)

We do not promise 100% success — Indeed rate-limits and challenges aggressive traffic. If a run fails, lower concurrency to 1 and retry.

Limitations (honest)

  • Public pages only. No login, no Indeed employer/applicant private data.
  • Residential proxies required for reliable results. Datacenter IPs are almost always blocked.
  • Cloudflare / captcha interstitials can still interrupt runs; the actor retries and fails those requests rather than bypassing challenges with ToS-evasive tooling.
  • Browser runs cost more compute than HTTP scrapers — price reflects delivered jobs (PPE), not compute.
  • Layout changes on Indeed can break parsers — report issues; we prioritize selector stability.
  • Full descriptions require one extra page per job (parseFullDescription: true).
  • Results reflect what Indeed shows publicly for the given domain/country at scrape time.

How to run

On Apify

  1. Open this Actor in Console or Store
  2. Paste queries + location
  3. Keep residential proxy on
  4. Start → download dataset (JSON / CSV / Excel)

Local

# from monorepo root
npm install
cd actors/indeed-jobs
# edit storage/key_value_stores/default/INPUT.json
npm run dry-run

Publish

cd actors/indeed-jobs
npm run sync-shared
npx apify login
npx apify push

Then set PPE events in Console and publish to Store.

Same publisher profile (cross-discovery): LinkedIn Jobs, Facebook Marketplace, G2 Reviews, Trustpilot Reviews, Google Trends, company lead-gen wedge — shipping in wave 1.