Indeed Jobs Scraper — fast & cheap
Pricing
from $2.50 / 1,000 job scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
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:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Yes | - | Job title, keywords, or company name to search for (e.g. software engineer). |
location | string | No | - | City, state, zip code, or country to search within (e.g. Austin, TX). |
country | string | No | US | Indeed country/TLD and proxy target. Options: US, GB, CA, FR, DE. |
radius | integer | No | 25 | Distance from location in miles. |
maxItems | integer | No | 50 | Maximum number of job postings to scrape. |
parseFullDescription | boolean | No | false | If enabled, fetches and parses the full job description from the detail page for every job. |
proxyConfiguration | object | No | Residential | Custom 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.