Indeed Jobs Scraper
Pricing
from $2.99 / 1,000 results
Indeed Jobs Scraper
Scrape Indeed job listings across 20+ country domains: job title, company, structured salary (min/max/period/currency), city, state, posted date, snippet, apply URL, and the full job description. Pay per job. No login required.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
Nate Schnell
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
What does Indeed Jobs Scraper do?
Indeed Jobs Scraper extracts public job listings from Indeed across 20+ country domains (US, UK, Canada, Australia, Germany, France, India, Japan, Singapore, Brazil, Mexico, and more). For every job it returns the title, company, structured salary, location (city/state), posted date, snippet, apply URL, and the full job description — ready to drop into your ATS, your job-board build, or your salary benchmarking pipeline.
Search by keyword and location, filter by job type / posted-within-N-days / remote-only / radius, or paste fully-formed Indeed search URLs. Indeed Jobs Scraper handles session rotation and fingerprinting automatically, so you don't manage cookies or logins.
What data can you extract from Indeed?
- Job essentials —
jobKey,title,viewJobUrl,postedRelative,postedAt,scrapedAt - Company info —
company,companyIndeedUrl,companyRating,companyReviewCount - Compensation —
salary.min,salary.max,salary.type(HOURLY/DAILY/WEEKLY/MONTHLY/YEARLY),salary.currency,salary.text - Location —
location,city,state,country,remote,remoteWorkType(REMOTE_ALWAYS / HYBRID / IN_PERSON / UNKNOWN) - Description —
description(plain text),descriptionHTML(formatted),snippet - Hiring signals —
sponsored,urgentlyHiring,expired,indeedApplyable,thirdPartyApplyUrl,jobTypes
The full output field reference is in the Output section.
How to use Indeed Jobs Scraper
- Click Try for free above (or open the actor in your Apify console).
- In the Searches input, add one or more searches — each takes a
query,location, andcountry. Or paste fully-formed Indeed search URLs into Start URLs. - Set Maximum records and Maximum pages per search to cap the run.
- Leave Proxy configuration on the default
RESIDENTIALgroup. Indeed blocks datacenter IPs. - Click Save & Start.
- When the run finishes, download the dataset as JSON, CSV, Excel, XML, or HTML, or pull it from the Apify API.
How much does it cost?
Pay per job. Every job record emitted to the dataset costs one billable event — $2.99 per 1,000 jobs (final pricing is set on the actor's pricing tab). That matches the volume-leading Indeed scraper on the Store.
Apify's free tier includes $5 of platform credit each month, so you can scrape roughly 1,600 jobs/month at no cost. A 100-job default-settings run finishes in under a minute.
Want full job descriptions? Turn on the Include full job description toggle in the input form. The actor will visit each posting's detail page to pull the full text (~5,000–10,000 chars per job) into the description and descriptionHTML fields. Runs take ~5× longer in this mode; the per-job price is unchanged.
Input
Indeed Jobs Scraper accepts an array of searches (each with query, location, country, and optional jobType / remoteOnly / postedWithinDays / radius / sort), or an array of fully-formed Indeed startUrls. Single-search shortcuts at the top level (query, location, country, jobType, radius, sort, fromDays, remoteOnly) are accepted for convenience when there's only one search.
{"searches": [{ "query": "data engineer", "location": "Berlin", "country": "de", "postedWithinDays": 7 },{ "query": "registered nurse", "location": "Remote", "country": "us", "remoteOnly": true }],"maxItems": 200,"maxPagesPerSearch": 10,"includeFullDescription": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
Every record is a single Indeed job posting. The dataset is flat and stable — same shape for every record. Example:
{"jobKey": "ae28a64386e2b84e","title": "Application Engineer - AI Trainer","company": "DataAnnotation","companyIndeedUrl": "https://www.indeed.com/cmp/Dataannotation","companyRating": 4.1,"companyReviewCount": 1634,"location": "Boston, MA","city": "Boston","state": "MA","country": "US","remote": false,"remoteWorkType": "REMOTE_ALWAYS","salary": {"min": 50,"max": 100,"type": "HOURLY","currency": "USD","text": "$50 - $100 an hour"},"jobTypes": ["Contract"],"postedRelative": "30+ days ago","postedAt": "2026-01-16T06:00:00.000Z","snippet": "If you pass that assessment, you'll receive an email confirmation, and paid work will become available to you through our platform.","sponsored": true,"urgentlyHiring": false,"expired": false,"indeedApplyable": false,"thirdPartyApplyUrl": "https://www.indeed.com/applystart?jk=ae28a64386e2b84e...","viewJobUrl": "https://www.indeed.com/viewjob?jk=ae28a64386e2b84e","description": "About the role\n\nWe are looking for...","descriptionHTML": "<p>About the role</p><p>We are looking for...</p>","scrapedFromUrl": "https://www.indeed.com/jobs?q=software+engineer&l=Remote","scrapedAt": "2026-05-20T01:38:28.000Z","searchInput": { "query": "software engineer", "location": "Remote", "country": "us" }}
Field aliases (id, positionName, url, postingDateParsed, rating, reviewsCount, isExpired, externalApplyLink, jobType, urlInput) mirror the canonical fields so migration from other Indeed scrapers is a rename, not a rewrite.
Integrations
Pipe Indeed Jobs Scraper into Make, n8n, or Zapier; push records straight into Google Sheets, Airtable, BigQuery, or a webhook; call the dataset from Python or Node via the apify-client; or chain it into your ATS or CRM. Schedule it as a recurring run for daily / weekly job-market sweeps.
Related actors
- Hacker News Search Scraper — same pay-per-result shape for Hacker News stories, comments, and Show HN. Useful for sourcing engineers from Who-is-hiring threads.
- Scholarly Articles Scraper (Crossref) — same no-login model for 150M+ scholarly articles, journal papers, and preprints.
FAQ
How does Indeed Jobs Scraper work?
The actor opens Indeed search pages in a fingerprinted headless browser, reads the in-page job-cards data structure that Indeed renders for its own UI, then optionally visits each job's detail page to capture the full description and the company's Indeed profile URL. Sessions rotate aggressively to keep blocking rates low.
Can I use Indeed Jobs Scraper as an API?
Yes. Start a run via POST https://api.apify.com/v2/acts/<your-username>~indeed-jobs-scraper/runs?token=<APIFY_TOKEN> with the input JSON in the body, then read results from GET https://api.apify.com/v2/datasets/<dataset-id>/items. Full reference: Apify API docs.
Can I use Indeed Jobs Scraper in Python or Node.js?
Yes.
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("<your-username>/indeed-jobs-scraper").call(run_input={"searches": [{"query": "data engineer", "location": "Berlin", "country": "de"}],"maxItems": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["company"], item["salary"]["text"])
Which Indeed country domains are supported?
US, UK, Ireland, Canada, Australia, New Zealand, Germany, France, Spain, Italy, Netherlands, Poland, India, Singapore, Japan, Brazil, Mexico — set the country field to the two-letter code (us, uk, de, …) and the actor routes to the right domain automatically.
Why is a residential proxy required?
Indeed blocks datacenter IPs aggressively. Without a residential proxy you'll hit a security check within a couple of requests and the run will return empty. The default proxy group on this actor is RESIDENTIAL for that reason — leave it on.
Is it legal to scrape Indeed?
Scraping publicly accessible job listings is generally legal in the US, UK, and EU under cases like hiQ v. LinkedIn. Indeed Jobs Scraper only fetches data that Indeed serves to anonymous visitors — no login, no paywall bypass. You are responsible for respecting Indeed's Terms of Service in your jurisdiction and for handling any personal data you extract in line with GDPR / CCPA. Don't use scraped data to discriminate against applicants or to spam employers.
Your feedback
Found a missing field, a country that doesn't route correctly, or a job-card layout the parser doesn't handle? Open an issue on the actor's Issues tab — bug reports and feature requests are answered.