Indeed Jobs Scraper — fast & cheap avatar

Indeed Jobs Scraper — fast & cheap

Pricing

from $2.50 / 1,000 job scrapeds

Go to Apify Store
Indeed Jobs Scraper — fast & cheap

Indeed Jobs Scraper — fast & cheap

Scrapes Indeed job listings with structured salary, job type, and company data. Supports keyword + location search across 50+ countries with optional full description extraction and residential proxy rotation.

Pricing

from $2.50 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Gopalakrishnan

Gopalakrishnan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Indeed Jobs Scraper

A lightweight, reliable, and cost-effective Apify Actor designed to scrape Indeed job listings. It leverages plain HTTP requests via got-scraping (avoiding expensive browser overhead) combined with smart proxy rotation and session-based retries to bypass Cloudflare's IP-reputation blocking.

It is a sibling of the LinkedIn Jobs Scraper and is optimized for the recruiters, lead-gen, and job-boards markets.


Features

  • Cheapest & Browserless: Uses plain HTML and SSR JSON parsing (got-scraping + cheerio) rather than full headless browsers, resulting in minimal CPU/memory usage and low costs.
  • Structured Salary Parse: Extracts and splits salary information into structured fields (salaryMin, salaryMax, salaryType) instead of just returning raw strings.
  • Optional Full Descriptions: Scrapes full job description texts dynamically if toggled, letting you save budget for list-only runs.
  • Robust Anti-Bot Bypass: Utilizes Apify's residential proxy pool with session rotation and automatic country-fallback.

⚠️ Important Note on Speed & Reliability

Indeed sits behind strict Cloudflare edge protection that blocks requests based on IP reputation (rather than interactive JS challenges).

  • Apify's residential proxies have varying success rates per request (~25% in the US, ~38% in the UK).
  • To bypass this, this actor implements a capped retry budget (6 attempts per page) using a fresh proxy session for each attempt.
  • Throughput Caveat: While blocked 403 response bodies are tiny (consuming virtually no bandwidth cost), runs will be slower due to these retries, and extreme proxy pressure might occasionally cause a page to fail or return partial results. Please factor this into your pricing and run expectations.

Input Parameters

The Actor accepts the following input parameters:

FieldTypeRequiredDefaultDescription
querystringYes-Job title, keywords, or company name to search for (e.g. software engineer).
locationstringNo-City, state, zip code, or country to search within (e.g. Austin, TX).
countrystringNoUSIndeed country/TLD and proxy target. Options: US, GB, CA, FR, DE.
radiusintegerNo25Distance from location in miles.
maxItemsintegerNo50Maximum number of job postings to scrape.
parseFullDescriptionbooleanNofalseIf enabled, fetches and parses the full job description from the detail page for every job.
proxyConfigurationobjectNoResidentialCustom proxy settings. Residential proxies are highly recommended.

Output Data Structure

Each scraped job posting is pushed to the dataset with the following structure:

{
"jobKey": "4c383cb69d814797",
"title": "Software Engineer",
"company": "Deloitte",
"companyRating": 3.9,
"location": "Austin, TX",
"isRemote": false,
"salaryRaw": "$113,100 - $208,300 a year",
"salaryMin": 113100,
"salaryMax": 208300,
"salaryType": "YEARLY",
"jobTypes": ["Full-time", "Contract"],
"postedAt": 1780407288556,
"relativeDate": "22 days ago",
"descriptionSnippet": "Collaborate with developers and product managers to design cyber security systems...",
"descriptionFull": "Full description text if parseFullDescription is toggled...",
"url": "https://www.indeed.com/viewjob?jk=4c383cb69d814797",
"applyUrl": "https://www.indeed.com/viewjob?jk=4c383cb69d814797",
"searchQuery": "software engineer",
"searchLocation": "Austin, TX",
"scrapedAt": "2026-06-25T14:45:00.000Z"
}

Billed Events (Pay-Per-Event Model)

This actor is billed using the Pay-Per-Event (PPE) model:

  • actor-start: Charged once at the start of every run.
  • job-scraped: Charged per job record successfully outputted to the dataset.