How to Scrape Indeed Jobs with Apify (2026 Guide)
Apify's Indeed Scraper extracts job listings from Indeed.com including title, company, location, salary, and job description. No coding required.
Indeed is one of the largest public job indexes in the world. Teams use it for competitive hiring intelligence, salary benchmarking, skills trend analysis, and market maps by city or role.
Pulling that data at scale is hard: Cloudflare-style challenges, geo-mismatched IPs, and pagination caps break naive scripts. The Indeed Scraper on Apify runs headless browsers, managed proxies, and maintained selectors so you can focus on analytics instead of infrastructure.
Open Apify and try Indeed Scraper →
What you get from the scraper
Typical fields (exact names can vary by Actor version—verify in a sample run) include:
| Data | Why it matters |
|---|---|
| Job title | Role taxonomy, seniority, keyword demand |
| Company | Hiring velocity by competitor or segment |
| Location | Geo labor supply, remote vs. on-site mix |
| Salary | Often present for US tech roles; sometimes missing if the employer omits it |
| Full description | Tech stack signals (Kubernetes, Snowflake, etc.) via NLP or regex |
| URLs / IDs | Deduplication and change tracking over time |
Selector drift: Indeed A/B tests layouts. Maintained Actors absorb CSS/DOM changes; home-grown parsers break without constant care.
Step-by-step: scrape Indeed without code
Step 1: Sign in to Apify
Create an account at apify.com. The free tier includes monthly credits you can use for test runs.
Step 2: Open the Indeed Scraper
From the Store, open the Indeed Scraper and click through to the Input tab.
Step 3: Define your search
Configure:
- Query — e.g. data engineer, registered nurse, forklift operator.
- Location — city, region, or country string Indeed understands.
- Limits — max items per run to control cost.
Keep each run focused. Very broad queries hit pagination ceilings (Indeed stops deep pagination around ~1000 visible results per search). For national coverage, use many narrow searches (metro areas, zip radii, or role variants) and deduplicate downstream—same strategy as large Maps jobs.
Step 4: Use proxies appropriately
Indeed expects traffic that matches the job market geography. A datacenter IP in another continent requesting London listings is a red flag. Apify’s Actor wiring uses rotating proxies suited to the job; when tuning JSON, follow the Actor docs for country and proxy groups.
Step 5: Run and export
Start the Actor. When the run completes, open the Dataset and download JSON, CSV, or Excel, or pull data via the Apify API into your warehouse or n8n.
Use cases
HR and recruiting research
- Competitor hiring: who is scaling which functions.
- Time-to-fill proxies: volume of reposted roles.
- Comp bands: compare disclosed ranges where available.
Job market and economic analysis
- Skills mix: rising vs. declining technologies in descriptions.
- Geo heat maps: where demand concentrates for a title.
- Remote trends: keyword and location patterns over time.
Sales and vendor intelligence
- Expansion signals: new offices, bulk hiring in a vertical.
- Account prioritization: employers posting many roles in your ICP.
Always use scraped job posts ethically: no applicant PII, no bypassing authenticated employer areas, and compliance with Indeed’s terms and applicable law.
Why not plain requests or raw Playwright?
| Approach | Pain point |
|---|---|
| HTTP only | Cloudflare JS challenges; empty or blocked HTML |
| DIY Playwright | You own CAPTCHA edges, proxy pools, session warming, and DOM updates |
| Apify Indeed Scraper | Hosted runs, proxy integration, and Actor maintenance in one place |
For custom logic, you can still chain Apify with Python or Node using the official SDKs after you prove the workflow in the Console.
Schedule recurring runs, trigger from webhooks, and store history in Apify datasets—then pipe into BI or your ATS analytics stack.
No. Public job listings are the scope. Employer dashboards, applications, and candidate data require authorization and are off-limits for scrapers.
The scraper returns what the listing shows. Many employers omit pay bands; the salary field may be empty. Model analytics with missing-data handling.
Split the problem: narrower locations, job-title variants, or salary filters. Merge and dedupe datasets after multiple runs.
No for the default path: configure the Indeed Scraper in the Apify UI and export CSV or JSON. Code is optional for API automation.
It depends on your jurisdiction, Indeed’s terms, and your use case. Use public listings responsibly, avoid circumventing authentication, and consult legal counsel for sensitive programs.
Start with the free tier credits, then scale based on run frequency, concurrency, and proxy usage. Check current Apify pricing and the Indeed Scraper’s own compute estimates.




