Indeed Job Postings Scraper
Pricing
from $2.40 / 1,000 job posting returneds
Indeed Job Postings Scraper
Indeed job postings scraper, 22 countries: title, company, location, salary, link. Filter by keyword, place, date. Pay per job. Indeed may refuse some requests: fewer results possible License: personal use only; resale and redistribution prohibited. Created with the help of artificial intelligence.
Pricing
from $2.40 / 1,000 job posting returneds
Rating
0.0
(0)
Developer
Bon Plein Capital
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Indeed Job Scraper
This Indeed job scraper turns a few job keywords into a clean list of Indeed job postings (title, company, location, salary, job type, posting date and link) that you can download as JSON, CSV or Excel, or read through the Apify API. It works on 22 country sites of Indeed (United States, United Kingdom, Canada, Australia, Germany, France, Spain, Italy and more), so you can follow hiring trends, build a job board, watch competitors' openings or feed a recruiting pipeline without copying pages by hand.
What can this Actor do?
- Search Indeed by keyword, country and location, and read as many result pages as you want.
- Return structured data for each posting: job title, company name, company rating, location, salary text with minimum, maximum, period and currency when Indeed shows them, job types, remote flag, posting date, a short snippet and the public link.
- Filter by posting age (last 1, 3, 7 or 14 days) and keep only the postings that show a salary.
- Remove duplicates across pages and searches, so each job is paid for once.
- Behave like a polite visitor: a normal browser identity, cookies kept for the session, pauses between pages and a new identity if a page is refused.
- Try it on the Apify free plan: the prefilled input reads one page and costs a fraction of a cent.
Only public search pages are read. The Actor never logs in, never reads private data, and never tries to solve a captcha or a challenge page: if Indeed refuses a request several times in a row, the run ends with a clear status message and you only pay for the results that were produced.
How to use it
- Click Try for free and open the Input tab.
- Enter one or more job keywords in Job search keywords, for example
python developerornurse. - Add the Indeed countries to search as two-letter codes (
us,gb,fr,de,jp...). Each country site is searched in its own language and layout. - Optionally set a Location, Posted within (days) and Only jobs with a salary. Keep Maximum number of jobs low (5 to 10) for a first test.
- Leave Use Apify Proxy on, then click Start. A small run ends in about one to three minutes.
- Open the Output tab (table view) and download the jobs as JSON, CSV or Excel, or call the Actor from the API, Make, Zapier or n8n.
How the data is read
- Different card formats: the job cards are read from the data embedded in the page, from the page's structured job data, or from the visible cards, whichever the country site serves.
- Salary and company: salary minimum, maximum, period and currency come from Indeed's data when present, and are otherwise parsed from the displayed text (
$110,000 - $140,000 a year,45.000 € par an,£15.50 an hour,CHF 80'000 pro Jahr,月給 30万円,5 - 8 Lakh per year). The company name, rating and review count are kept when Indeed shows them, and left empty (never invented) when it hides them. - Protection pages: Indeed sometimes shows a Cloudflare challenge. The Actor does not solve or bypass it. It waits when it gets HTTP 429, retries up to seven times per page with a fresh browser identity and a residential proxy address in the country of the site, and stops within about three minutes with a status message listing the HTTP codes it received (403, 429...) if the page stays refused. Results already collected are kept and only they are billed.
Input
| Field | Meaning |
|---|---|
queries | Job titles or keywords, each one searched separately |
countries | Indeed country codes such as us, gb, fr, de |
location | City, region or zip code (optional) |
postedWithinDays | Only jobs from the last N days (optional) |
onlyWithSalary | Skip postings without a salary |
maxItems | Maximum number of jobs in total |
maxPagesPerSearch | Result pages to read for each keyword and country |
useApifyProxy | Route requests through Apify Proxy (recommended) |
{"queries": ["python developer"],"countries": ["us", "gb", "ca"],"maxItems": 5,"maxPagesPerSearch": 1,"useApifyProxy": true}
Output
Each result is one dataset item. Example:
{"jobKey": "a80654465f93f95d","title": "Senior Python Developer","company": "Nitka Technologies","companyRating": 3.9,"companyReviewCount": 120,"location": "Remote","salaryText": "$110,000 - $140,000 a year","salaryMin": 110000,"salaryMax": 140000,"salaryPeriod": "year","salaryCurrency": "USD","jobTypes": ["Full-time"],"remote": true,"postedDate": "2026-07-30","postedText": "Posted 3 days ago","snippet": "We offer 100% remote, full-time work with a flexible schedule...","url": "https://www.indeed.com/viewjob?jk=a80654465f93f95d","country": "US","searchQuery": "python developer"}
How much does it cost?
This Actor uses pay per event pricing: you pay a small amount for each job posting returned, and nothing for results that are not produced. For 1,000 job postings you pay 1,000 result events, about $4.00 per 1,000 results (see the Pricing tab for the current price), plus a small amount of Apify platform usage (proxy traffic). Apify's free plan gives you monthly credits to try the Actor before you pay.
FAQ
Is it legal to use this Actor?
The Actor only reads public Indeed search pages. You are responsible for using the results lawfully and in line with Indeed's terms. Company names and job texts are public business information, but if you store or process personal data (for example a recruiter's name found in a job text), you must respect the GDPR and local privacy laws.
Why did a run return fewer jobs than expected?
Indeed shows about 10 to 15 jobs per page and may refuse some requests. The Actor retries with a new browser identity and a new proxy address, but it never tries to solve captchas. If a run ends with a "refused" status, try again later, with fewer pages, or keep the proxy option on.
What does an input with filters look like?
{"queries": ["registered nurse", "data analyst"],"countries": ["fr", "de", "jp"],"location": "","postedWithinDays": 7,"onlyWithSalary": true,"maxItems": 100,"maxPagesPerSearch": 3,"useApifyProxy": true}
A salary shown in another currency or language is parsed the same way. For example CHF 80'000 pro Jahr gives salaryMin 80000, salaryPeriod year, salaryCurrency CHF; £15.50 an hour gives 15.5, hour, GBP.
What does an input with a location look like?
{"queries": ["warehouse operator"],"countries": ["us"],"location": "Austin, TX","maxItems": 20,"maxPagesPerSearch": 2,"useApifyProxy": true}
If one country site refuses the requests, the Actor moves on to the next country after a share of its time budget, so the other countries still return their jobs.
What if a salary or company field is empty?
Indeed does not show a salary or a company on every posting. The field is then null: the Actor never guesses a value. Use onlyWithSalary to skip postings without a salary.
Why do I sometimes get a 403 or a "refused" status?
Indeed protects its pages and may answer HTTP 403 to automated visitors. This Indeed job scraper reads the page like a normal visitor (browser-like headers, cookies, residential proxy, pauses) and retries with a fresh session, but it does not solve or bypass captchas and challenge pages. When Indeed insists, the run ends with a clear status message and you pay only for the jobs actually returned.
Does it work the same in every country?
The same fields are returned for all 22 country sites. Each site is queried with its own language header, and the salary currency defaults to the country's currency when Indeed shows a salary without one.
Does it need my Indeed account?
No. It never uses a login and never reads private pages.
Can I use it through the API?
Yes. Every run can be started and read through the Apify API and its Python and JavaScript clients.
What if something does not work?
Open an issue in the Issues tab with your input and the run link. Issues are answered as fast as possible.
Created with the help of artificial intelligence.