Indeed Scraper avatar

Indeed Scraper

Pricing

Pay per event

Go to Apify Store
Indeed Scraper

Indeed Scraper

Scrape Indeed job listings with salary ranges, company details, and full descriptions. Search by keyword, location, and job type across 18 countries. Pure HTTP โ€” 3x cheaper than browser-based alternatives. Export to JSON, CSV, Excel.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

4

Monthly active users

a day ago

Last modified

Share

Extract structured job listing data from Indeed.com at scale โ€” titles, salaries, companies, descriptions, employer metadata, and 15+ fields per listing. Pure HTTP requests (no browser), covering 18 country domains, with results in seconds. Used by recruiters, job seekers, market researchers, and sales teams to turn Indeed's 300M+ monthly visitors into actionable datasets.

What does Indeed Scraper do?

Indeed Scraper extracts job posting data from Indeed, the world's largest job search engine. Enter a job title and location, and get back structured, analysis-ready data you can export as JSON, CSV, Excel, or push directly to Google Sheets, Slack, or your own API.

Every listing includes the job title, company details, salary (actual or estimated), location, full description, and employer metadata (industry, size, revenue) โ€” all extracted from a single run.

The scraper supports keyword search with filters (job type, date posted, experience level) as well as direct URL scraping for Indeed search pages or individual job detail pages.

Who is Indeed Scraper for?

  • Recruiters and staffing agencies โ€” Monitor open positions across competitors, track which companies are hiring for specific roles, and identify talent demand patterns before your clients ask
  • Job seekers and career coaches โ€” Track new postings daily, compare salary ranges across cities, and spot which skills appear most in target job descriptions
  • Market researchers and analysts โ€” Study hiring trends, wage growth, and labor demand across industries, regions, and time periods with structured data ready for analysis
  • Sales and business development teams โ€” Identify companies that are actively hiring (growing companies = warm leads), then enrich with contact data using companion scrapers
  • HR and compensation analysts โ€” Benchmark salaries, benefits, and job requirements against market data to build competitive offers and retention strategies
  • Academic researchers โ€” Collect large-scale employment data for labor economics, NLP analysis of job descriptions, or diversity and inclusion studies

Why use Indeed Scraper?

  • Pure HTTP speed โ€” No browser overhead. Extracts 100 jobs in under 10 seconds, 1,000 jobs in about a minute
  • 18 country domains โ€” Search US, UK, Canada, Australia, India, Germany, France, Netherlands, Belgium, Switzerland, Austria, Italy, Spain, Brazil, Mexico, Japan, Singapore, and Hong Kong
  • 3x cheaper than alternatives โ€” Pay-per-event pricing at $0.003/listing vs. competitors charging $0.008-0.01+ per result
  • No login or API key needed โ€” No Indeed account required, no rate-limited official API to deal with
  • Rich employer metadata โ€” Get employer industry, company size, revenue, and description alongside every job listing
  • Flexible input โ€” Search by keywords + location, or paste Indeed URLs directly for targeted scraping

What data can you extract from Indeed?

FieldTypeDescription
titlestringFull position title
companystringHiring company name
companyUrlstringIndeed company profile URL
companyLogostringCompany logo image URL
locationstringJob location (city, state, zip, or "Remote")
salarystringSalary range โ€” actual or Indeed estimate
jobTypearrayFull-time, part-time, contract, temporary, internship
datePostedstringISO 8601 posting date
descriptionstringFull job description (plain text)
descriptionHtmlstringFull job description (HTML)
jobUrlstringDirect link to the Indeed listing
jobIdstringIndeed's unique job identifier
isRemotebooleanWhether the job is remote
employerIndustrystringCompany's industry sector
employerSizestringNumber of employees (e.g., "10,000+")
employerRevenuestringCompany revenue range
employerDescriptionstringBrief company description from Indeed
scrapedAtstringISO 8601 timestamp of when data was extracted

How much does it cost to scrape Indeed?

This actor uses pay-per-event pricing. You only pay for what you scrape โ€” no monthly subscriptions, no minimum commits.

EventPrice
Run started$0.005
Job listing scraped$0.003

Tiered pricing

TierMonthly costIncluded resultsPer-result cost
Free$0~1,600 listings$0.003 (from free credits)
Starter ($49/mo)$49~16,000 listings$0.003
Scale ($499/mo)$499~166,000 listings$0.003
BusinessCustomUnlimitedVolume discounts available

Real-world cost examples

Use caseVolumeCost
Daily job alert (1 search, 20 results)600/month~$1.95
Weekly salary benchmark (5 roles, 100 each)2,000/month~$6.02
Recruiter pipeline (50 searches/day)30,000/month~$90.15
Market research project (one-time)10,000 listings~$30.05

Compare to competitors charging $50-100+ for equivalent volumes.

How to scrape Indeed job listings step by step

  1. Go to the Indeed Scraper page on Apify Store
  2. Click Try for free to open the actor in Apify Console
  3. Enter a job title or keyword (e.g., "software engineer", "data analyst", "registered nurse")
  4. Enter a location (e.g., "New York, NY", "Remote", "London")
  5. Select a country if searching outside the US (18 domains supported)
  6. Optionally filter by job type, date posted, or set a max results limit
  7. Click Start and wait for your data โ€” most runs finish in seconds
  8. Download results as JSON, CSV, or Excel, or connect via API, Google Sheets, Slack, or webhooks

Search example

{
"query": "software engineer",
"location": "New York, NY",
"country": "US",
"maxItems": 100,
"jobType": "fulltime",
"includeDescription": true
}

Direct URL scraping

You can also provide Indeed search URLs or individual job detail URLs directly:

{
"urls": [
"https://www.indeed.com/jobs?q=python+developer&l=Austin%2C+TX",
"https://www.indeed.com/viewjob?jk=abc123"
],
"maxItems": 50
}

Input parameters

ParameterTypeDefaultDescription
querystringโ€”Job title, keywords, or company name to search for
locationstringโ€”City, state, zip code, or "remote"
countryenumUSIndeed country domain: US, UK, CA, AU, IN, DE, FR, NL, BE, CH, AT, IT, ES, BR, MX, JP, SG, HK
maxItemsinteger50Maximum number of listings to extract. Set 0 for unlimited
jobTypeenumanyFilter: fulltime, parttime, contract, temporary, internship
datePostedenumanyFilter: last 24 hours, 3 days, 7 days, or 14 days
includeDescriptionbooleantrueScrape full job description for each listing. Set false for faster summary-only runs
urlsarrayโ€”Indeed search or job detail URLs to scrape directly (use instead of search parameters)
maxRequestRetriesinteger3Number of retry attempts for failed requests (1-10)

Output example

{
"title": "Senior Software Engineer",
"company": "Cisco",
"companyUrl": "https://www.indeed.com/cmp/Cisco",
"companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/logo.png",
"location": "San Francisco, CA 94105",
"salary": "$163.6K - $303.1K/year",
"jobType": ["Full-time"],
"datePosted": "2026-03-12T10:00:00.000Z",
"description": "We are looking for a Senior Software Engineer to join our team...",
"descriptionHtml": "<b>We are looking for...</b>",
"jobUrl": "https://www.indeed.com/viewjob?jk=abc123",
"jobId": "abc123",
"isRemote": false,
"employerIndustry": "Technology",
"employerSize": "10,000+",
"employerRevenue": "more than $10B (USD)",
"employerDescription": "Leading technology company...",
"scrapedAt": "2026-03-14T01:30:00.000Z"
}

Tips for best results

  • Use specific keywords โ€” "react developer" returns more relevant results than "developer"
  • Set includeDescription: false for faster runs when you only need listing summaries (titles, companies, salaries)
  • Use filters to reduce cost โ€” Narrow by job type, date posted, or salary range so you only pay for relevant listings
  • Pick the right country โ€” Set the country parameter to match the Indeed domain you want. Searching US for London jobs won't work
  • Combine with scheduling โ€” Set up a daily or weekly schedule to monitor new postings automatically and pipe results to Google Sheets or Slack
  • Use direct URLs for precision โ€” If you have specific Indeed search URLs or job detail pages, pass them via urls instead of search parameters
  • Filter by job type โ€” Use the jobType parameter to only get full-time, part-time, contract, or internship listings

Integrations

Connect Indeed Scraper with your tools and workflows:

  • Google Sheets โ€” Export job listings directly to a spreadsheet for tracking, analysis, or sharing with your team
  • Slack โ€” Get notified in a channel when new jobs matching your criteria are found
  • Zapier โ€” Trigger workflows when new job data arrives (e.g., alert hiring managers, update your CRM, send email digests)
  • Make โ€” Build automated pipelines: scrape jobs, enrich with Job Posting Enrichment, then push to your ATS
  • Webhooks โ€” Send results to your own API endpoint in real time
  • Schedule โ€” Run daily or weekly to monitor new job postings automatically without manual intervention

Programmatic access via API

Use the Apify API to run Indeed Scraper from your code. Get your API token from Apify Console Settings.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("automation-lab/indeed-scraper").call(run_input={
"query": "data analyst",
"location": "Chicago, IL",
"maxItems": 50,
"includeDescription": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['title']} @ {item['company']} โ€” {item.get('salary', 'N/A')}")

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/indeed-scraper').call({
query: 'data analyst',
location: 'Chicago, IL',
maxItems: 50,
includeDescription: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(`${item.title} @ ${item.company} โ€” ${item.salary}`));

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~indeed-scraper/runs?token=YOUR_API_TOKEN&waitForFinish=120" \
-H "Content-Type: application/json" \
-d '{"query": "data analyst", "location": "Chicago, IL", "maxItems": 50}'

Use with AI agents via MCP

Indeed Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Example prompts

Once connected, try asking your AI assistant:

  • "Search Indeed for 'software engineer' jobs in San Francisco and export to CSV"
  • "Get all remote Python developer jobs posted in the last 7 days"
  • "Compare data analyst salaries across New York, Chicago, and Austin using Indeed data"

Learn more in the Apify MCP documentation.

Web scraping of publicly available data is generally legal in the United States, as confirmed by the landmark hiQ Labs v. LinkedIn ruling where the court held that scraping public data does not violate the Computer Fraud and Abuse Act.

Indeed Scraper only accesses publicly available job listings โ€” the same data any visitor can see without logging in. It does not bypass authentication, access private data, or violate CAPTCHAs.

That said, users are responsible for ensuring their specific use case complies with Indeed's Terms of Service and applicable local laws. Common best practices include:

  • Using scraped data for analysis, research, and internal business purposes
  • Not republishing raw job listings on competing platforms
  • Respecting rate limits and avoiding excessive load on Indeed's servers
  • Complying with data protection regulations (GDPR, CCPA) when handling personal information

This actor is provided as a data extraction tool. How you use the data is your responsibility.

Legality

Scraping publicly available data is generally legal according to the US Court of Appeals ruling (HiQ Labs v. LinkedIn). This actor only accesses publicly available information and does not require authentication. Always review and comply with the target website's Terms of Service before scraping. For personal data, ensure compliance with GDPR, CCPA, and other applicable privacy regulations.

FAQ

How much does it cost to scrape 1,000 Indeed jobs? At $0.003 per listing plus $0.005 per run, scraping 1,000 jobs costs about $3.01. Apify's free plan includes $5/month of platform credits, so you can scrape approximately 1,600 listings per month at no cost.

How fast is Indeed Scraper? Very fast. It uses pure HTTP requests (no browser), so it can extract 100 jobs in under 10 seconds. A typical run of 50 listings completes in 3-5 seconds.

Does it extract full job descriptions? Yes. Set includeDescription: true (the default) to get the complete job description in both plain text and HTML. Set it to false for faster runs when you only need summary fields like title, company, salary, and location.

Can I scrape Indeed in other countries? Yes. Set the country parameter to search across 18 different Indeed domains including UK, Canada, Australia, Germany, France, India, Japan, Singapore, and more.

What data formats can I export? JSON, CSV, Excel, XML, or HTML table. You can also access data via the Apify API or connect it to Google Sheets, Zapier, Make, Slack, and other integrations.

Why are salary fields missing for some jobs? Not all Indeed listings include salary information. When employers don't provide a salary range, Indeed may show an estimate (marked accordingly in the data) or no salary at all. You can filter results to only include listings where salary is not null.

Can I scrape Indeed on a schedule for job monitoring? Yes. Use Apify Schedules to run the scraper daily or weekly. Combine with Google Sheets for a live job tracking dashboard, or Slack to get alerts when new jobs match your criteria.

The scraper returned fewer results than expected. Why? Indeed's search results vary by location, keyword specificity, and date filters. Very niche searches may have few listings. Also, maxItems caps the output โ€” set it to 0 for unlimited. Some Indeed country domains have fewer listings than the US site.

The scraper is running slowly or timing out. What should I do? Set includeDescription: false if you don't need full descriptions โ€” this skips individual page fetches and significantly speeds up runs. If retries are high, increase maxRequestRetries to 5-7. For very large runs (10,000+ listings), split into multiple smaller runs by location or keyword.

Some fields are null. Is the scraper broken? No. Fields like employerIndustry, employerSize, employerRevenue, and salary depend on whether Indeed and the employer provide that data. Smaller companies often lack industry and revenue data. This is normal โ€” the scraper extracts everything available.

Other job scrapers and lead generation tools

  • LinkedIn Jobs Scraper โ€” Scrape job listings from LinkedIn with structured salary, location, and company data
  • Job Posting Enrichment โ€” Enrich any job listing URL with company details, contacts, and structured data
  • Google Maps Lead Finder โ€” Find businesses and leads on Google Maps with emails, phones, and ratings
  • Email Finder โ€” Find email addresses for any person at any company
  • Website Contact Finder โ€” Extract contact details (emails, phones, socials) from company websites