Indeed Jobs Scraper avatar

Indeed Jobs Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Indeed Jobs Scraper

Indeed Jobs Scraper

Scrape Indeed.com job listings with salaries, company ratings, descriptions, and remote work info. Full JSON output, fast, residential-proxy-ready.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crikit

Crikit

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Categories

Share

Scrape Indeed job listings with salaries, company ratings, full descriptions, and remote-work information. This Indeed scraper returns parsed salary minimums and maximums with currency and period, job type, remote work model, company rating and review count, posting date, benefits, and the direct apply link.

No Indeed API key, no login, and no headless browser. Results land in a structured dataset you can export to JSON, CSV, Excel, or XML, or pull straight from the Apify API.

What is Indeed Jobs Scraper?

Indeed Jobs Scraper is an Apify Actor that extracts job listings with salaries and company data from Indeed and returns them as clean, structured records. Salary parsing is the differentiator. Indeed publishes salary as free text in many formats; this Actor resolves it into salaryMin, salaryMax, salaryType, and salaryCurrency so the numbers are usable without a cleanup pass.

What data can this Indeed scraper extract?

Every run writes one row per job posting. The full schema carries 40 fields; the most-used ones are below.

FieldTypeDescription
idstringUnique 16-character Indeed job identifier (the jk URL parameter).
positionNamestringJob title as posted on Indeed.
companystringHiring company name.
locationstringFormatted job location (city + state, ZIP if available).
urlstringCanonical Indeed job detail URL (desktop /viewjob format).
salarystringSalary or pay rate as a human-readable string. May be employer-provided or extracted from the description.
salaryMinnumberLower bound of the parsed pay range in the unit indicated by salaryType.
salaryMaxnumberUpper bound of the parsed pay range.
salaryTypestringPay frequency: HOURLY, DAILY, WEEKLY, MONTHLY, or YEARLY.
salaryCurrencystringISO 4217 currency code, e.g. USD.
salarySourcestringEXTRACTED if Indeed parsed it from the description; EMPLOYER_PROVIDED if posted.
jobTypearrayEmployment types as posted, e.g. ['Fulltime', 'Contract'].
remoteWorkModelstringFULLY_REMOTE, HYBRID, or null when not specified.
jobLocationCitystringCity
jobLocationStatestringState
jobLocationPostalstringPostal code
ratingnumberAverage company rating on Indeed (0-5).
reviewsCountintegerNumber of reviews underlying the company rating.
postedAtstringIndeed's relative posting time, e.g. '2 days ago'.
postingDateParsedstringApproximate ISO 8601 timestamp derived from the relative time or pubDate.
isExpiredbooleanTrue if the posting is no longer accepting applications.
urgentlyHiringbooleanUrgently hiring

See the Output tab in Apify Console for all 40 fields.

How to scrape Indeed job listings

  1. Open Indeed Jobs Scraper and click Try for free.
  2. Set position and location, or paste Indeed search URLs into startUrls.
  3. Pick a country — Indeed runs separate domains per market.
  4. Filter with fromage for recency, plus jobType, experienceLevel, remoteOnly, and radius.
  5. Turn on parseCompanyDetails for company ratings, and set maxItemsPerSearch.
  6. Click Start and watch rows appear live in the Output tab.
  7. Export the dataset as JSON, CSV, Excel, or XML — or fetch it from the Apify API once the run finishes.

Indeed Jobs Scraper input options

InputTypeWhat it doesDefault
positionstringWhat to search for on Indeed. Example: 'python developer', 'senior data scientist', 'registered nurse'. Combine..."python developer"
locationstringCity, state, ZIP, or 'remote'. Example: 'Austin, TX', '94103', 'remote'. Leave blank to search the whole country."Austin, TX"
countrystringTwo-letter country code. Indeed has dedicated country sites; this picks the right one. Defaults to US."US"
maxItemsPerSearchintegerMaximum number of jobs to scrape for each position keyword and each startUrls entry. Indeed itself caps any...25
startUrlsarrayAlternative to position + location. Paste full Indeed search URLs (https://www.indeed.com/jobs?q=...&l=...) or...
parseCompanyDetailsbooleanWhen ON, the scraper fetches each job's detail page to get the full HTML description, company logo, employer...true
saveOnlyUniqueItemsbooleanDeduplicate by Indeed job key. Recommended ON. The same job often appears as both a sponsored and an organic listing...true
fromageintegerOnly return jobs posted in the last N days. Common values: 1, 3, 7, 14. Leave blank for any age.
sortstringSort by date (newest first) or omit for Indeed's relevance ranking.
radiusintegerHow far from location to expand the search. Default 25.
jobTypestringLimit to one employment type.
experienceLevelstringFilter to a specific seniority level.
remoteOnlybooleanWhen ON, only fully remote jobs are returned.false
maxConcurrencyintegerNumber of parallel requests. Default 5 is safe; higher values speed up large runs but increase the chance of...5

Proxy is configured through the standard proxyConfiguration object; the defaults shipped with this Actor are already tuned for the target site.

Example output

{
"id": "e011635426a565cb",
"positionName": "Sr. System Analyst, Python Developer",
"company": "Esolvit Inc.",
"location": "Austin, TX 78751",
"jobLocationCity": "Austin",
"jobLocationState": "TX",
"jobLocationPostal": "78751",
"url": "https://www.indeed.com/viewjob?jk=e011635426a565cb",
"salary": "$70 - $80 an hour",
"salaryMin": 70,
"salaryMax": 80,
"salaryType": "HOURLY",
"salaryCurrency": "USD",
"salarySource": "EXTRACTION",
"jobType": ["Contract"],
"remoteWorkModel": "HYBRID",
"rating": 4.6,
"reviewsCount": 12,
"postedAt": "3 days ago",
"postingDateParsed": "2026-05-13T05:00:00.000Z",
"isExpired": false,
"sponsored": false,
"urgentlyHiring": false,
"featuredEmployer": false,
"highVolumeHiring": false,
"indeedApplyable": false,
"externalApplyLink": null,
"companyIndeedUrl": "https://www.indeed.com/cmp/Esolvit-Inc",
"companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/accdc390b31c4333972dc79b3e09723e",
"benefits": ["Health insurance", "401(k)", "Paid time off"],
"description": "Job title: Sr. System Analyst, Python Developer ... full job description ...",
"descriptionHTML": "<div><p><b>The Company</b></p> ... </div>",
"companyInfo": {
"indeedUrl": "https://www.indeed.com/cmp/Esolvit-Inc",
"reviewsUrl": "https://www.indeed.com/cmp/Esolvit-Inc/reviews",
"rating": 4.6,
"reviewsCount": 12,
"headerImageUrl": "https://...",
"employerActivity": null
},
"searchInput": { "position": "python developer", "location": "Austin, TX", "country": "US" },
"scrapedAt": "2026-05-16T16:30:00.000Z"
}

How much does it cost to scrape Indeed?

This Actor runs on pay per result pricing: $0.003 per job ($3 per 1,000). A one-time start fee of $0.00005 applies per run.

ResultsApproximate cost
1,000$3.00
10,000$30.00
100,000$300.00

You pay for rows you actually receive, so a search that returns nothing costs nothing beyond the start fee. Every Apify account includes free monthly usage credit, so you can trial Indeed Jobs Scraper at no cost.

What can you build with Indeed data?

Run salary benchmarking for a role and market

Parsed salary bands across hundreds of postings give a far more current picture than an annual compensation survey, and you can slice it by city, seniority, or remote status.

Build a recruiting or sourcing pipeline

Track which companies are hiring for which roles, and how long postings stay open — a strong signal of hiring urgency and of teams that are growing.

Generate leads for recruitment agencies

Companies posting many roles in one function are the clearest prospects for staffing services.

Posting volume by title, location, and remote model over time is a genuine leading indicator of sector demand.

Feed a job board or aggregator

Descriptions, salaries, locations, and apply links come back structured enough to populate a job board directly.

Indeed scraping tips and limits

  • Use saveOnlyUniqueItems to avoid paying for the same posting twice — Indeed repeats listings heavily across search pages.
  • fromage is the key to cheap incremental runs. Set it to 1 for a daily job and you only pay for new postings.
  • Indeed runs country-specific domains. Set country correctly or you will silently get the wrong market.
  • Indeed sits behind Cloudflare. Keep the default proxy configuration rather than switching to datacenter IPs.

Integrations and automation

Run Indeed Jobs Scraper on a schedule to keep a Indeed dataset fresh, or trigger it from your own stack through the Apify API and the official JavaScript and Python clients. Native integrations push results into Google Sheets, Slack, Airtable, Zapier, Make, GitHub, or any webhook endpoint. The Actor also works as an MCP tool, so an AI agent can call it directly.

ActorWhat it does
ATS Job Boards Scraper - Greenhouse, Ashby, LeverJobs straight from Greenhouse, Ashby, and Lever boards.
Workday Jobs Scraper - Search Any Workday Career SiteAny company's Workday career site.
Talent.com Jobs ScraperTalent.com across 21 country markets with direct apply links.
Glassdoor Company ScraperCompany reviews, salaries, and interview data.

Frequently asked questions

Does it return salary data?

Yes, and it parses it. Where Indeed publishes salary, you get salaryMin, salaryMax, salaryType, and salaryCurrency as structured values, plus the original text in salary. Not every posting discloses pay.

Can I scrape Indeed outside the United States?

Yes. Set country to the market you want and the Actor targets that Indeed domain.

Do I need a Indeed API key?

No. Indeed Jobs Scraper reads publicly available Indeed pages and endpoints directly, so there is no key to obtain, no OAuth app to register, and no account to connect.

Can I export Indeed data to CSV, Excel, or Google Sheets?

Yes. Every run stores results in an Apify dataset that exports to JSON, JSONL, CSV, Excel, XML, or HTML with one click, and the Google Sheets integration writes rows straight into a spreadsheet.

Can I run Indeed Jobs Scraper on a schedule?

Yes. Apify schedules run the Actor hourly, daily, weekly, or on any cron expression, and webhooks can notify your systems the moment a run finishes.

Scraping publicly available data is broadly lawful in the US and EU, but the answer depends on what you collect and how you use it. This Actor is built to gather public job posting information Indeed publishes publicly. Personal data carries extra obligations under GDPR and CCPA. Read Apify's guide on whether web scraping is legal and take your own legal advice for your use case.

Support and feedback

Found a bug, a missing field, or a Indeed page shape this Actor does not handle yet? Open an issue from the Issues tab on the Actor page. Feature requests and custom-scraper enquiries are welcome there too.