Indeed Jobs Scraper avatar

Indeed Jobs Scraper

Pricing

from $0.31 / 1,000 item extracteds

Go to Apify Store
Indeed Jobs Scraper

Indeed Jobs Scraper

Export public Indeed job listings with salaries, descriptions, benefits, company details, and apply URLs for recruiting and labor-market analysis.

Pricing

from $0.31 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Security

Limited permissions

Share

Export public Indeed job listings by keyword and location, including titles, employer names, salaries, descriptions, benefits and application links when available. Use the dataset for recruiting or labor-market research. Results follow Indeed's relevance order and optional details can be missing.

Quick start

  1. Open Input, choose a role and location, and start with five jobs.
  2. Click Start, then inspect the Dataset tab.
  3. Export results as JSON, CSV or Excel, or retrieve them through the API.
{
"query": "software engineer",
"location": "Austin, TX",
"country": "US",
"datePosted": "7",
"maxItems": 5
}

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

Choose an existing example and review its input before running:

View all ready-to-run examples.

What you get

  • Job listings: Titles, employers, locations and employment types, with salary and description details when available.
  • Application links: Indeed job links and supplied application URLs, ready to include in a recruiting shortlist.
  • Reusable exports: One row per unique job within a run, with search context and collection time for your own comparisons.

Who is it for?

  • Recruiters building a role-and-location shortlist with links back to the vacancies.
  • Labor-market researchers comparing advertised roles and available salary information across markets.
  • Hiring teams reviewing public job descriptions and benefits offered for similar positions.

Input settings

SettingAPI keyBehavior
Job title or keywordsqueryRole, skill or employer. Defaults to software engineer.
LocationlocationCity, region, postal code or Remote. The form defaults to Austin. An omitted API value adds no location restriction.
Indeed countrycountryUS, CA, GB, AU, DE, FR, NL or IN. Default US.
Date posteddatePosted0, 1, 3, 7 or 14 days since first seen on Indeed. The form defaults to 7. Omission adds no date filter.
Job typejobTypeOptional fulltime, parttime, contract, temporary or internship.
Maximum jobsmaxItems1–1,000 saved jobs. Default 25, form example 5. Fewer results are possible.
Search radiusradius0–100 miles around a supplied location. Default 25.

See each field's help for details. To explore remote work, use a relevant query/location and inspect the output flags.

Output data

Each row represents one unique job within the run. The table uses the actual dataset field names.

DataFieldsAvailability
Job and employerjobKey, title, companyName, jobTypeEmployer and employment type can be null.
LocationlocationShort, locationLong, city, countryCodeSupplied location details vary.
Paysalary, salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriodMay be absent or estimated. Periods are not normalized to annual pay.
Description and attributesdescriptionText, descriptionHtml, attributes, benefits, workScheduleBenefits are recognized attribute labels, not a completeness guarantee.
Workplaceremote, hybridText-derived indicators, not verified work arrangements.
DatesdatePublished, dateOnIndeed, scrapedAtPosting dates can be null.
LinksapplyUrl, viewJobUrl, indeedUrl, sourceUrlapplyUrl falls back to the Indeed job page. It is not always an external application form.
ContexttrackingKey, query, inputLocation, country, rank, page, source, diagnosticsrank is saved-result order, not an Indeed ranking score.

Illustrative shape-only excerpt, not an observed vacancy:

{
"jobKey": "example-job-key",
"title": "Example role",
"companyName": null,
"locationShort": null,
"salary": null,
"descriptionText": null,
"benefits": [],
"remote": false,
"hybrid": false,
"rank": 1
}

A record can still be incomplete regardless of its diagnostics value. Company ratings, review counts and contact details are not returned.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

Pay-per-event pricing includes a start event per run.

An item event is charged for each saved job. Jobs not saved are not charged as items. An empty run can still incur the start event.

See the live Pricing tab for current rates and discounts.

Tips for best results

  • Start with five jobs. Check relevance and available fields before increasing maxItems.
  • Broaden a sparse search. Try a wider location or date window when few vacancies match.
  • Compare like-for-like pay. Keep the supplied salary period and currency alongside the amount rather than treating every figure as annual pay.

Limits and caveats

  • Searches use relevance order, not newest-first sorting. There is no URL-lookup mode, separate remote-only toggle or minimum-salary filter.
  • Indeed availability varies, so the result limit is a ceiling, not a guarantee. A completed search with no matches returns an empty dataset. Access or execution errors can still fail the run.
  • No login or cookies are required. This Actor is not affiliated with Indeed and does not access private employer or applicant records.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow. For hiring comparisons, merge exports by jobKey and retain scrapedAt. This Actor does not update or remove records in previous datasets.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect Indeed job listings from your own app or automation? The examples below send input to the scraper and show how to collect its results. This is an Indeed jobs API-style export workflow, not an official Indeed API.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide, Actor runs API reference and dataset items API reference.

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~indeed-jobs-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"data analyst","location":"New York, NY","country":"US","maxItems":5}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/indeed-jobs-scraper').call({
query: 'data analyst', location: 'New York, NY', country: 'US', maxItems: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/indeed-jobs-scraper').call(run_input={
'query': 'data analyst', 'location': 'New York, NY', 'country': 'US', 'maxItems': 5,
})
items = client.dataset(run['defaultDatasetId']).list_items().items

MCP and AI agents

You can ask your AI assistant to collect data with Indeed Jobs Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Indeed Jobs Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/indeed-jobs-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Indeed Jobs Scraper by Fetch Cat, or give it the identifier fetch_cat/indeed-jobs-scraper.

Your assistant can check the available settings and retrieve the results from the returned run and dataset. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • “Find five data analyst jobs in New York and make a shortlist with employers, available salary information and application links.”
  • “Collect ten contract project manager vacancies in Austin and summarize the responsibilities from the descriptions that are available.”
  • “Find five machine learning jobs in London posted in the past week and put their titles, companies and job links into a table.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection. This Actor uses limited permissions, which supports that prepaid-token route.

Direct per-request MCP payments are a different option and are restricted to eligible pay-per-event Actors. This scraper uses pay-per-event pricing, but availability still depends on the payment integration's current requirements. Use the documented prepaid-token flow above rather than assuming a direct payment request is supported.

Follow the official guide for wallet setup and supported payment options. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration, not in prompts or public examples.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Can I use this as an Indeed API?

You can run the scraper through Apify's API and retrieve the dataset, as shown above. It is not an official Indeed API and does not provide private employer or applicant data.

Why are pay, description or benefits missing?

Indeed does not supply every detail for every job. Null salary fields and empty benefits arrays do not mean a job has no pay or benefits.

Why are there fewer jobs than requested?

The available search results or employment-type matches may be exhausted. A narrow date or location can reduce the result set. Start with a small broader search before increasing maxItems.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? Honest feedback helps others choose the right tool and helps us improve it. The Store review link currently redirects to the overview, where we could not find a review form. If Apify offers a review option in your signed-in account, you're welcome to share your experience there. Otherwise, email us feedback at the address above.

Made with care for curious people, AI agents and the possibilities in data. ♥