⚡ Indeed Jobs Scraper avatar

⚡ Indeed Jobs Scraper

Pricing

from $2.40 / 1,000 job listings

Go to Apify Store
⚡ Indeed Jobs Scraper

⚡ Indeed Jobs Scraper

Scrape Indeed job listings by keyword and location, or paste an Indeed jobs search URL. Get titles, companies, salaries, full descriptions, skills, and company details as clean JSON. No login needed.

Pricing

from $2.40 / 1,000 job listings

Rating

0.0

(0)

Developer

VeroAPIs

VeroAPIs

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

1

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Indeed Jobs Scraper: Job Listings, Salaries and Company Data from 60 Countries

Indeed Jobs Scraper extracts job listings from Indeed: title, company, location, salary, posting date, job type, work arrangement, full description, skills, benefits, and rich company details. Download them as JSON, CSV, Excel, or XML, or pull them into your own app as an Indeed jobs API. It runs in the cloud, needs no coding, and no Indeed login or API key.

Try it right away: type what you're searching for and where, pick a country, click Start, and watch the dataset fill up with structured job data.

What you can do

  • Search Indeed in 60 countries: the US, UK, Canada, Australia, Germany, France, India, the UAE, Brazil, and more.
  • Get salaries in every country, in the local currency: pay ranges, single figures, "from" and "up to" pay, per hour, month, or year.
  • Filter like on Indeed: date posted, job type, remote only, and distance, all in one search.
  • Paste Indeed search links straight from your browser. Each link keeps its own filters.
  • See who's hiring: company website, logo, size, revenue, industry, CEO, and address.
  • Spot remote and hybrid jobs with a work arrangement on every job that has one.
  • Get clean data: duplicate postings removed, dates in one format, and common job types named in English for every country.
  • Schedule it: run daily or weekly to track new jobs.

What data does it extract?

Each result is one job listing:

DataDetails
💼 Jobtitle, Indeed URL, direct apply URL, easy-apply flag, posting date, date listed on Indeed, and who posted it
🏢 Companyname, Indeed page, website, logo, industry, size, revenue, description, CEO, and address
📍 Locationformatted location plus city, state, country, postal code, street address, and GPS coordinates
🏠 Work arrangementremote, hybrid, or on-site, plus a simple remote flag
💰 Salarymin and max pay with currency and pay period, exactly as the employer lists it
🗂️ Job typefull-time, part-time, contract, internship, temporary, and more, in English
🎁 Benefitshealth insurance, paid time off, 401(k), and the other perks the employer lists
🧰 Skillsthe skill, experience, and qualification tags Indeed attaches to the posting, plus occupation categories
🚩 Hiring signalsurgently hiring and hiring-many-people flags
📝 Descriptionthe full job description in both plain text and HTML

How do I scrape Indeed jobs?

  1. Say what you want: enter Search keywords (a job title or skill) and a Location.
  2. Pick a country: choose which country's Indeed site to search (60 supported).
  3. Narrow it down (optional): filter by date posted, job type, remote, and distance.
  4. Set how many: choose Maximum jobs, or use 0 for every job Indeed shows.
  5. Click Start: then download the results from the Output tab in any format, or send them anywhere with integrations.

Prefer to build the search on Indeed yourself? Open Indeed in your browser, apply your filters, copy the link from the address bar, and paste it into Indeed search links. You can add several. Each keeps its own filters, and the country is read from the link automatically. Links like indeed.com/q-python-developer-l-New-York,-NY-jobs.html, the ones search engines show, work too.

Input example

{
"keywords": "software engineer",
"location": "Austin, TX",
"country": "us",
"maxItems": 100,
"datePosted": "last7Days",
"jobType": ["fullTime"],
"remote": true,
"sortBy": "date",
"deduplicate": true
}

You can also drive it entirely from pasted Indeed search links:

{
"startUrls": [
{ "url": "https://uk.indeed.com/jobs?q=data%20analyst&l=London&radius=25&sort=date" }
],
"maxItems": 200
}

Output example (abridged)

{
"id": "65be268ac7e37360",
"title": "Store Manager",
"url": "https://www.indeed.com/viewjob?jk=65be268ac7e37360",
"applyUrl": "https://www.rei.jobs/jobs/31963/job",
"easyApply": true,
"company": {
"name": "REI",
"url": "https://www.indeed.com/cmp/Rei-9119d8f7",
"website": "http://www.rei.com",
"logo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/c3720b67af8dc599c63cc9a5fc088dc3",
"industry": null,
"employeeCount": "10,000+",
"revenue": "Decline to state",
"description": "At REI, we inspire, educate, and outfit for a lifetime of outdoor adventure and stewardship.",
"ceoName": "Mary Beth Laughton",
"address": "Seattle, WA"
},
"location": {
"formatted": "Lynnwood, WA 98036",
"city": "Lynnwood",
"state": "WA",
"country": "United States",
"countryCode": "US",
"postalCode": "98036",
"streetAddress": "19500 Alderwood Mall Parkway",
"latitude": 47.821487,
"longitude": -122.27182
},
"workArrangement": null,
"isRemote": false,
"postedDate": "2026-09-29",
"postedTimestamp": 1790658000000,
"listedDate": "2026-09-30",
"listedTimestamp": 1790728993051,
"jobTypes": [],
"salary": { "min": 105056.64, "max": 131289.59, "currency": "USD", "period": "YEAR" },
"benefits": ["Health insurance", "Employee discount", "Retirement plan"],
"occupations": ["Retail Store Managers", "Retail Occupations", "Sales, Retail & Customer Support Occupations"],
"attributes": ["Managing retail teams", "Sales team management", "Employee retention", "Mid-level"],
"isUrgentHire": false,
"isHighVolumeHiring": false,
"language": "en",
"source": "REI (Recreational Equipment Inc.)",
"descriptionText": "Overview:\n\nREI Co-op is united around discovering, building and celebrating better ways of working…",
"descriptionHtml": "<div>Overview:\n<div>\nREI Co-op is united around discovering, building and celebrating better ways of working…"
}

A single posted pay figure shows up as equal min and max. "From" pay has no max, and "up to" pay has no min.

Input reference

FieldTypeDescription
keywordsstringJob title, skill, or company to search for.
locationstringCity, state, or ZIP. Type Remote to focus on remote roles. Leave empty to search the whole country.
countrystringWhich country's Indeed site to search (e.g. us, gb, ca, de). Default us.
maxItemsintegerTotal jobs to return across all searches. 0 = every job Indeed shows. Default 100.
datePostedstringany, last24Hours, last3Days, last7Days, or last14Days. Works like Indeed's own Date posted filter. Default any.
sortBystringrelevance (Indeed's default ranking) or date (newest first).
jobTypearrayAny of fullTime, partTime, contract, internship. You get jobs of any of the types you pick.
remotebooleanReturn only jobs Indeed tags as remote. Default false.
radiusintegerSearch radius in miles around the location. Default 25.
deduplicatebooleanKeep only one copy of each job (same title, company, location). Default true.
startUrlsarrayIndeed job-search links to scrape, each with its own filters.

Why scrape Indeed jobs?

  • Job-market research: track demand for roles, skills, and titles across regions and over time.
  • Recruiting & sourcing: see who's hiring, where, and how fast.
  • Salary benchmarking: gather the pay employers list, in every country and currency.
  • Lead generation: find companies actively hiring in your space, with their website, size, and CEO.
  • Job boards and apps: feed fresh Indeed listings into your own site, newsletter, or AI agent.

Use it as an Indeed jobs API

Call it from your own code and get Indeed jobs back as JSON. In Python, with the Apify client (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("vero-api/indeed-jobs-scraper").call(run_input={
"keywords": "data analyst",
"location": "London",
"country": "gb",
"maxItems": 200,
})
for job in client.dataset(run.default_dataset_id).iterate_items():
print(job["title"], job["company"]["name"], job["salary"])

The same works from JavaScript or any HTTP client: start a run with run-sync-get-dataset-items and the jobs come back in the response. Your token is under Settings → API & Integrations in Apify Console.

Use it from your AI assistant (MCP)

Ask Claude, Cursor, VS Code, or any assistant that supports MCP about jobs in plain words. Add this server to its MCP settings:

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

Then just ask, for example:

  • "Which companies are hiring remote data engineers in Canada this week, and what do they pay?"
  • "Compare nurse salaries in Toronto and London."
  • "List part-time warehouse jobs near Dallas posted in the last 3 days."

Integrations

Send every new batch of jobs to Google Sheets, Slack, Airtable, a webhook, or your database with Apify's integrations, Make, n8n, or Zapier. Schedule the actor to run every morning and get a fresh list of jobs without lifting a finger.

Pricing

This Actor uses pay-per-event pricing: a small fee when a run starts, plus a fee per job delivered. You only pay for the listings you actually receive. Set Maximum jobs to control your spend, and see the Pricing tab for the current price per job.

FAQ

Do I need an Indeed account or API key? No. Just enter your search and click Start.

Which countries can I search? 60 countries, from the United States, the UK, and Canada to Germany, India, Brazil, the UAE, and South Africa. Pick one under Country, or paste a link from any country's Indeed site.

Do I get salaries outside the US? Yes. Pay comes in the local currency (CAD, GBP, EUR, INR, and so on) whenever the employer lists it on Indeed.

How many jobs can I get per search? As many as Indeed shows for that search, up to about 1,000. To collect more, run several searches, for example one per city or job type, in the same run.

What does the Date posted filter use? The same date as Indeed's own filter: when Indeed listed or last refreshed the job. Each job shows both postedDate (when the employer first published it) and listedDate.

Can I pick several job types at once? Yes. You get jobs of any of the types you pick, for example full-time and part-time jobs together.

Why do some jobs have no salary? Not every employer lists pay. You get the pay whenever the job shows it, including single figures and "from" or "up to" pay.

Does it remove duplicates? Yes. Indeed often lists the same role several times. With Remove duplicates on (the default), you get each job once.

Can I schedule it? Yes. Use Apify's scheduler to run it every day or week and keep your job list fresh.

Is this an official Indeed product? No. This Actor is not affiliated with, endorsed by, or sponsored by Indeed. It reads the public job listings anyone can see on Indeed.

Notes

  • Reads Indeed's public job listings, the same ones anyone can browse on the site, so there's no login to set up.
  • Nothing to configure: reliable results are handled for you.
  • The same role often appears more than once; Remove duplicates (on by default) keeps just the first copy.
  • Mix filters freely: date, job type, and remote all work together in a single search.

More tools from us