Indeed Jobs Scraper
Pricing
from $1.50 / 1,000 results
Indeed Jobs Scraper
Extract job listings and optional company information from 44 Indeed country domains with advanced filtering
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
devcake
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
Scrape Indeed Job Postings by Country
Pull fresh Indeed job listings from 44 country domains — UK, US, CA, AU, DE, IN, JP, BR, AE, and more — through a single input. The actor handles proxy routing, page parsing, full description enrichment, and salary normalization so you can pull market-ready job data in minutes rather than weeks. Built for recruiters, talent researchers, and HR-analytics teams who need clean cross-country Indeed data without writing scrapers.
💼 What the Actor Does
The Indeed Multi-Country Job Scraper pulls job cards, descriptions, and salary data from Indeed's local domains across 44 countries. You supply a query, a location, and a country; the actor fetches the listings page through a country-matched residential proxy, parses the embedded job data, batches up to 15 full descriptions per JSON request when details are turned on, and emits each job as a structured record. Country routing, 429 backoff, session rotation, and result-cap enforcement happen automatically so you can run unattended.
💼 Who Should Run This
- Talent sourcing teams — monitor competitor hiring across UK, US, DE, and AU for live lead generation.
- HR-analytics and compensation teams — pull salary bands across markets and convert to a single reporting currency.
- Job-board aggregators and ATS vendors — feed listings from multiple Indeed domains into your own product.
- Labor-market researchers — track role demand, posting velocity, and skill mentions across countries.
- First-time international job seekers — verify role availability, salary ranges, and visa-sponsorship language across 44 markets.
💼 Data You Receive Per Job
| Field | What It Means |
|---|---|
job_key | Indeed's stable identifier for the posting |
title, company, location, url | The listing card content |
salary, salary_min, salary_max, salary_currency, salary_type | Raw salary text plus parsed min / max / period |
description, benefits, job_type, posted_date | Full-detail fields returned when includeJobDetails: true |
salary_min_converted, salary_max_converted, salary_currency_converted | Salary converted to a target ISO currency like USD, EUR, GBP |
search_query, search_location, country, domain, scraped_at | Search metadata for traceability |
change_type, first_seen, previous_* | Incremental-mode fields for NEW, UPDATED, UNCHANGED, REAPPEARED jobs |
💼 Common Ways Teams Run This Actor
Run the actor in card-only mode for market scans and lead lists. Turn on includeJobDetails when you need full descriptions and benefits. Add targetCurrency to normalize salary fields into a single reporting currency. Enable incrementalMode between runs to detect NEW, UPDATED, and EXPIRED jobs against the previous snapshot. Combine filters — remote, jobType, experienceLevel, fromAge — to scope the result to the role profile you actually need.
💼 Quick Start
- Pick a country from the dropdown — every listed country has a matching residential proxy pre-routed.
- Add one or more search keywords like
software engineer,data scientist, orregistered nurse. - Optionally add locations like
LondonorRemote. Leave empty to search the whole country. - Set maxResults (default 50, 0 = unlimited) to bound the run — it is the only cap that affects how many jobs you pay for.
- Open Output Options, tick Fetch Full Job Details if you want descriptions, and set targetCurrency if you want salary normalization.
- Click Run and watch the dataset populate. The summary record in the key-value store shows total items, duration, and any per-query errors.
💼 How Do I Monitor Indeed Job Postings Across Multiple Countries?
Run the actor once per country, or chain country-specific tasks behind a workflow. Each run emits a dataset with a country field and a domain field — concatenate these across runs and you have a single global job feed. For continuous monitoring, enable incrementalMode so each new run reports only NEW, UPDATED, UNCHANGED, and REAPPEARED jobs against the prior snapshot.
💼 How Can I Benchmark Indeed Salaries Across Markets?
Turn on includeJobDetails and set targetCurrency to your reporting currency (USD, EUR, GBP, JPY, INR, etc.). The actor parses Indeed's salary strings into salary_min, salary_max, and salary_currency; when a targetCurrency is set, it also adds salary_min_converted, salary_max_converted, and salary_currency_converted using cached FX rates. Filter by fromAge (for example 14 days) to keep salary figures tied to fresh postings.
💼 How Do I Track a Specific Role Across Indeed Country Sites?
Create one task per country using the same query string. For example, run data scientist against us, uk, ca, au, de, and sg to compare compensation and volume across markets. Set globalDeduplication: true to drop duplicate job keys across pages within a run, and pull the resulting dataset into a spreadsheet or BI tool for side-by-side comparison.
💼 How Do You Scrape Indeed Job Postings Without Getting Blocked?
The actor uses httpcloak for browser-compatible TLS and HTTP fingerprints, matches a residential proxy to the selected country, negotiates Brotli on listings and gzip on JSON detail responses, and applies an adaptive delay with rotation on 429s. By default it picks the chrome-latest desktop fingerprint and rotates through mobile presets when useMobileHeaders is on. You do not need to manage cookies or proxy rotation manually.
💼 Input Parameters
| Field | Default | Purpose |
|---|---|---|
country | uk | Selects the Indeed domain and proxy country |
queries | [] | Search terms; empty runs an all-jobs scan |
locations | [] | Cities, regions, or Remote; empty searches everywhere |
maxResults | 50 | Run-wide emitted-item cap; 0 = unlimited |
sort | relevance | relevance or date |
fromAge | 0 | Posted within N days; 0 disables it |
jobType, remote, experienceLevel | Any | Filter by full-time, part-time, Remote, Hybrid, On-site, Entry, Mid, Senior |
excludeStaffingAgencies | false | Hides jobs posted by recruitment agencies |
includeJobDetails | false | One batched JSON detail request per page; HTML fallback |
targetCurrency | empty | Converts parsed min / max salary to a target ISO currency |
enrichCompany | false | Adds logo, industry, and size from Indeed company pages |
requestDelay | 1 | Base inter-page delay before jitter and adaptive backoff |
useMobileHeaders | false | Mobile fingerprint chain (chrome-latest-android first) |
incrementalMode, emitUnchanged, stateKey | off | Persistent state for NEW / UPDATED / UNCHANGED / EXPIRED detection |
💼 Example Run
Input
{"country": "uk","queries": ["software engineer", "data scientist"],"locations": ["London", "Remote"],"maxResults": 200,"includeJobDetails": true,"targetCurrency": "GBP","fromAge": 7,"sort": "date"}
Output (excerpt)
{"job_key": "1f0c2c8e7a5b6d3f","title": "Senior Backend Engineer","company": "Example Tech Ltd","location": "London","url": "https://uk.indeed.com/viewjob?jk=1f0c2c8e7a5b6d3f","salary": "£90,000 - £120,000 a year","salary_min": 90000,"salary_max": 120000,"salary_currency": "GBP","salary_min_converted": 114150,"salary_max_converted": 152200,"salary_currency_converted": "USD","search_query": "software engineer","search_location": "London","country": "uk","domain": "uk.indeed.com","scraped_at": "2026-07-20T11:42:18Z"}
💼 FAQ
Is it legal to scrape Indeed job postings?
Public Indeed listings are intended to be browsed. This actor fetches the same public HTML pages a user would visit, respects your country's terms of service, and adds a default 1-second delay between pages. You are responsible for ensuring your use case complies with Indeed's terms and applicable law.
Can I scrape Indeed from multiple countries in one run?
Yes. Pick a country from the dropdown; the actor routes through a country-matched residential proxy and applies that country's Indeed domain. To aggregate across markets, schedule one task per country or use Apify's workflow chaining.
Does the actor include full job descriptions?
Only when you enable includeJobDetails. Card-only mode runs faster and cheaper; detail mode adds one batched JSON request per listings page plus HTML fallback when the JSON path fails. Descriptions add roughly 5 KB decoded per enriched job.
How fresh is the data?
Freshness equals Indeed's. With fromAge: 7 and sort: date, the run returns jobs posted in the last seven days in date order. Use fromAge: 0 with no date filter for the full dataset.
Will I get blocked?
The actor uses browser-compatible TLS and HTTP fingerprints, residential proxies matched to the country, Brotli on listings, gzip on JSON, and adaptive delay with rotation on 429s. If you still hit resistance, raise requestDelay to 3 or 5 seconds, turn on useMobileHeaders, or supply your own proxy via customProxy.
Does it work for non-English countries?
Yes. Country-specific Indeed domains (uk, de, fr, jp, br, mx, ae, sa, sg, in, kr, tw, hk, my, th, ph, id, vn, za, eg, il, ie, nz, etc.) are all routed through a residential proxy in that country. Salary strings are parsed against common European, Asian, and Middle-Eastern formats and converted to your target currency when requested.