Indeed Scraper avatar

Indeed Scraper

Pricing

Pay per event

Go to Apify Store
Indeed Scraper

Indeed Scraper

Scrape Indeed job listings with salary, company details, and full descriptions. Search by keyword, location, job type across 18 countries. Pure HTTP — fast and cheap. 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

6

Total users

2

Monthly active users

2 days ago

Last modified

Share

Scrape job listings from Indeed.com and extract structured data including job titles, companies, salaries, locations, descriptions, and more.

What does Indeed Scraper do?

Indeed Scraper extracts job posting data from Indeed, the world's largest job search engine. It returns structured data that you can export as JSON, CSV, or Excel for analysis, monitoring, or integration with your tools.

What data can you extract?

FieldDescription
Job titleFull position title
CompanyHiring company name + logo URL
LocationJob location (city, state, zip, remote)
SalarySalary range (actual or estimated)
Job typeFull-time, part-time, contract, etc.
DescriptionComplete job description text and HTML
Remote statusWhether the job is remote
Posting dateWhen the job was listed
Job URLDirect link to the listing
Employer industryCompany's industry sector
Employer sizeNumber of employees
Employer revenueCompany revenue range
Employer descriptionBrief company description
Company websiteDirect company URL

Why scrape Indeed?

  • Job market research — Analyze hiring trends, in-demand skills, and salary benchmarks across industries and locations
  • Recruitment intelligence — Monitor competitor hiring activity and identify talent market dynamics
  • Salary benchmarking — Compare compensation packages across companies, roles, and regions
  • Lead generation — Identify companies that are actively hiring (growing companies = potential customers)
  • Academic research — Study labor market patterns, job description language, and employment trends
  • Career planning — Track job availability and requirements for specific roles

How to scrape Indeed job listings

  1. Go to the Indeed Scraper page on Apify Store.
  2. Click Try for free to open the actor configuration.
  3. Enter a job title or keyword (e.g., "software engineer", "data analyst", "marketing manager").
  4. Enter a location (e.g., "New York, NY", "Remote", "San Francisco, CA").
  5. Optionally filter by job type, salary, experience level, or date posted.
  6. Set the maximum number of results you want.
  7. Click Start and wait for your data.
  8. Download results as JSON, CSV, or Excel, or connect via the Apify API.

Input example

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

Direct URL scraping

You can also provide Indeed search URLs or 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
}

Supported countries

Search across 18 Indeed country domains: US, UK, Canada, Australia, India, Germany, France, Netherlands, Belgium, Switzerland, Austria, Italy, Spain, Brazil, Mexico, Japan, Singapore, and Hong Kong.

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,
"isSponsored": false,
"employerIndustry": "Technology",
"employerSize": "10,000+",
"employerRevenue": "more than $10B (USD)",
"employerDescription": "Leading technology company...",
"scrapedAt": "2026-03-14T01:30:00.000Z"
}

Pricing

This actor uses pay-per-event pricing — 3x cheaper than alternatives:

EventPriceDescription
Run started$0.005One-time charge per run
Job listing scraped$0.003Per job listing extracted

Cost estimate: Scraping 1,000 job listings costs approximately $3.01 ($0.005 start + $3.00 for listings). Compare to competitors charging $5+ per 1,000 results.

Pure HTTP architecture (no browser overhead) means lower platform costs too.

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
  • Use filters to narrow results and reduce costs (job type, salary range, date posted)
  • Country matters — Set the correct country to search the right Indeed domain

Integrations

Connect Indeed Scraper with your tools and workflows:

  • Google Sheets — Export job listings directly to a spreadsheet for tracking and analysis
  • Slack — Get notified when new jobs matching your criteria are found
  • Zapier — Trigger workflows when new job data is available (e.g., alert hiring managers, update CRM)
  • Make — Build automated pipelines: scrape jobs, enrich with Job Posting Enrichment, then push to your ATS
  • Webhooks — Send results to your own API endpoint
  • Schedule — Run daily or weekly to monitor new job postings automatically

Programmatic access via API

Use the Apify API to run Indeed Scraper from your code.

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"
  • "Get all remote Python developer jobs posted this week"

Learn more in the Apify MCP documentation.

FAQ

How much does it cost to scrape Indeed?

At $0.003 per listing, scraping 1,000 jobs costs about $3. Apify's free plan includes $5/month of platform credits, so you can scrape ~1,600 job listings per month for free.

How fast is the 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 full job description text and HTML. Set it to false for faster runs when you only need the summary fields.

Can I scrape Indeed in other countries?

Yes. Set the country parameter to search on 18 different Indeed domains including UK, Canada, Australia, Germany, France, India, Japan, and more.

What data formats can I export?

You can download results as JSON, CSV, Excel, XML, or HTML table. You can also access the data via the Apify API or connect it to Google Sheets, Zapier, Make, and other integrations.

This actor is provided for educational and research purposes. Users are responsible for ensuring their use complies with Indeed's Terms of Service and applicable laws. Always use scraped data responsibly.

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. Filter results with salary not null to get only listings with salary data.

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 to build a live job tracking dashboard, or use Slack notifications to get alerted 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 higher or to 0 for unlimited. Some Indeed country domains have fewer listings than the US site.

Other job scrapers and lead generation tools