Skip to main content

How to Scrape Indeed Jobs with Apify (2026 Guide)

· 5 min read
Yassine El Haddad
Software Developer & Automation Specialist

I build production AI agents, web scrapers, and automation pipelines. Most of what I publish here comes from the actual problems they run into: proxies that get banned, anti-bot stacks that fingerprint your client, RAG that drifts when the underlying data moves. Stack: Python, TypeScript, Go, FastAPI, LangChain, Crawlee, Playwright, deployed on AWS, GCP, and Cloudflare.

Quick Answer

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:

DataWhy it matters
Job titleRole taxonomy, seniority, keyword demand
CompanyHiring velocity by competitor or segment
LocationGeo labor supply, remote vs. on-site mix
SalaryOften present for US tech roles; sometimes missing if the employer omits it
Full descriptionTech stack signals (Kubernetes, Snowflake, etc.) via NLP or regex
URLs / IDsDeduplication 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.

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?

ApproachPain point
HTTP onlyCloudflare JS challenges; empty or blocked HTML
DIY PlaywrightYou own CAPTCHA edges, proxy pools, session warming, and DOM updates
Apify Indeed ScraperHosted 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.

Apify Affiliate Banner 728x90Apify Affiliate Banner 728x90Apify Affiliate Banner 300x50Apify Affiliate Banner 300x50
Scale on Apify

Schedule recurring runs, trigger from webhooks, and store history in Apify datasets—then pipe into BI or your ATS analytics stack.

Explore Apify for Indeed and job data →

Frequently Asked Questions

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.