Indeed Jobs Scraper - Beyond 1,000 Jobs, Pay Data, No Login avatar

Indeed Jobs Scraper - Beyond 1,000 Jobs, Pay Data, No Login

Pricing

from $0.70 / 1,000 jobs

Go to Apify Store
Indeed Jobs Scraper - Beyond 1,000 Jobs, Pay Data, No Login

Indeed Jobs Scraper - Beyond 1,000 Jobs, Pay Data, No Login

Returns Indeed job postings from 62 countries: title, employer, location, pay, full description, job type, remote flag, apply link and the employer's profile. Reads past Indeed's limit of 1,000 jobs per search and has an only-new mode for monitoring. No login, no browser.

Pricing

from $0.70 / 1,000 jobs

Rating

0.0

(0)

Developer

Ben

Ben

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

💼 Indeed Jobs Scraper

Returns job postings from Indeed's 62 country sites without a login, a cookie or a browser. One row per job: title, employer, place with coordinates, pay, full description, job type, remote flag, the employer's own apply link and the employer's profile. A search does not stop at Indeed's 1,000 jobs, the date filter works together with the job type and remote filters, and an only-new mode turns a schedule into a feed of fresh postings.

Price: $1.00 per 1,000 jobs on the Apify Free plan, down to $0.70 from the Gold plan up. A search without results costs nothing. Export to JSON, CSV or Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

🔎 What is the Indeed Jobs Scraper?

Indeed's phone app gets its job lists from a data service that answers with 100 complete postings per request. This Actor asks that service the way the app does, so it never loads an Indeed web page and needs 512 MB of memory instead of a browser. The default run returns 50 jobs in about two seconds.

What data does it extract?

  • Job: id, Indeed link, title, full description as text and as HTML, language, job types, remote and hybrid flags, Indeed's tags (skills, benefits, schedule, education)
  • Place: city, state, postcode, street where given, country, latitude and longitude
  • Pay: the amount as Indeed words it, lower and upper end as numbers, unit and currency
  • Dates: when the employer published the job and when Indeed listed it; whether it has been taken down
  • Applying: the employer's own job page, and whether Indeed takes the application itself
  • Employer: name, Indeed page, rating and number of reviews, size, revenue, industry, website, logo, description, chief executive
  • Contacts: email addresses written in the description

What users of Indeed scrapers ask for, and what this Actor does

The open and closed issues of the four most used Indeed Actors on Apify were read on October 4, 2026. These points come up again and again:

Asked for thereHere
More results: runs end at 100, 472 or 1,000 jobsIndeed ends every list after 1,000 jobs. The Actor then reads the search in stretches of time. 10,000 jobs of one search took 125 seconds
Jobs with unrelated titlestitleOnly puts every search word into the job title. In a test 100 of 100 results matched, against 54 of 100 without it
Date limit together with job type or remoteIndeed's service refuses that combination. The Actor applies both and returned the same 54 jobs as Indeed's own filter in a test
No repeated jobsA job is saved once per run, also when two searches find it
Runs that fail or come back emptyA search without jobs ends as a successful run with a message. If Indeed's service does not answer Apify's address, the run moves to a proxy by itself
Pay outside the United StatesIndeed gives pay only to a request in the country's own language setting. The Actor sends it for each of the 62 countries

⬇️ Input

FieldTypeDefaultWhat it does
queriesarrayJob titles, skills or company names. Each entry is searched in each location. Empty means every job of the location
locationsarrayCities, regions or postcodes. Empty means the whole country
countryCodestringUSOne of the 62 Indeed country sites
maxResultsinteger50Jobs to save per search, up to 10,000
postedWithinDaysintegerOnly jobs Indeed listed within this many days. Any number
jobTypesarrayfulltime, parttime, contract, internship, temporary, permanent, perdiem, seasonal, prn. Each type is a search of its own
remotestringanyremote or hybrid
titleOnlybooleanfalseEvery search word must be in the job title
distanceinteger25Around the location: miles in the United States and the United Kingdom, kilometres elsewhere
sortstringdatedate (newest first) or relevance (Indeed's ranking)
linksarrayIndeed search links from any country site, and links of single jobs
onlyNewJobsbooleanfalseSkip every job an earlier run with the same monitor name delivered
monitorIdstringName of that memory

An empty input runs a sample search (software engineer in Austin, TX). Indeed's own search operators work inside queries: title:(data analyst), company:Siemens, and quotes for an exact phrase.

Example input

Two job titles in two cities:

{
"queries": ["data analyst", "business analyst"],
"locations": ["New York, NY", "Chicago, IL"],
"maxResults": 200
}

Every nurse job Indeed listed in the United States in the last two days, well beyond 1,000:

{
"queries": ["nurse"],
"postedWithinDays": 2,
"maxResults": 10000
}

Full-time and part-time jobs in Germany from the last two weeks, matched by title:

{
"queries": ["Pflegefachkraft", "Erzieher"],
"locations": ["Berlin", "Hamburg"],
"countryCode": "DE",
"jobTypes": ["fulltime", "parttime"],
"postedWithinDays": 14,
"titleOnly": true,
"maxResults": 100
}

Searches copied from the browser, and single jobs:

{
"links": [
"https://uk.indeed.com/jobs?q=nurse&l=Manchester&fromage=3",
"https://www.indeed.com/viewjob?jk=62d64fca32d4bbc0"
],
"maxResults": 100
}

A watch that delivers only new jobs every hour:

{
"queries": ["driver"],
"locations": ["Chicago, IL"],
"jobTypes": ["parttime"],
"maxResults": 200,
"onlyNewJobs": true,
"monitorId": "chicago-drivers"
}

Coming from another Indeed Actor?

The input names of the common Indeed Actors are read as well: title, query, position, keyword, location, country (upper or lower case), limit, maxRows, maxItemsPerSearch, maxItems, datePosted, fromDays, jobType, radius, startUrls, urls and jobKeys. An input like this one runs here unchanged:

{
"country": "us",
"query": "data analyst",
"location": "New York, NY",
"maxRows": 20,
"jobType": "fulltime",
"fromDays": "7",
"remote": "remote"
}

⬆️ Output

One row per job. A row of the sample search (the description and the tags are shortened here; this job had 3,239 characters of description and 36 tags):

{
"jobId": "62d64fca32d4bbc0",
"url": "https://www.indeed.com/viewjob?jk=62d64fca32d4bbc0",
"applyUrl": "https://www.amazon.jobs/jobs/10462261/software-development-engineer-ii-amazon-leo?cmpid=DA_INAD200785B",
"indeedApply": false,
"title": "Software Development Engineer II, Amazon Leo",
"normalizedTitle": "software engineer",
"company": "Amazon.com",
"companyUrl": "https://www.indeed.com/cmp/Amazon.com",
"location": "Austin, TX",
"city": "Austin",
"state": "TX",
"postalCode": null,
"streetAddress": null,
"country": "US",
"latitude": 30.26715,
"longitude": -97.74306,
"remote": false,
"hybrid": false,
"jobTypes": ["Full-time"],
"salaryText": "$143,700 - $194,400 a year",
"salaryMin": 143700,
"salaryMax": 194400,
"salaryUnit": "YEAR",
"salaryCurrency": "USD",
"description": "DESCRIPTION\n\nAmazon Leo is Amazon’s low Earth orbit satellite network. Our mission is to deliver fast, reliable internet connectivity to customers beyond the reach of existing networks. …",
"descriptionHtml": "<div><h2 class=\"jobSectionHeader\"><b>DESCRIPTION</b></h2><div>\nAmazon Leo is Amazon&rsquo;…",
"emails": [],
"postedAt": "2026-06-19T05:00:00+00:00",
"listedAt": "2026-10-03T07:51:34.881000+00:00",
"expired": false,
"language": "en",
"attributes": ["Version control", "Computer science", "Software engineering", "Device driver development", "…"],
"occupations": ["Software Development Occupations", "Embedded Software & Firmware Developers", "Technology Occupations", "Software Development & Architecture Occupations"],
"urgentHire": false,
"highVolumeHiring": true,
"companyRating": 3.5,
"companyReviews": 56088,
"companyIndustry": "Internet and software",
"companySize": "10,000+",
"companyRevenue": "more than $10B (USD)",
"companyWebsite": "https://www.amazon.jobs",
"companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/3e9d43f5c277de169808abdcaf49ba2c",
"companyDescription": "Our mission is to be Earth's most customer-centric company.",
"companyCeo": "Andrew Jassy",
"searchQuery": "software engineer",
"searchLocation": "Austin, TX",
"position": 15,
"scrapedAt": "2026-10-04T13:40:52.779554+00:00"
}

postedAt is the employer's date and listedAt the time Indeed listed the posting; an employer can publish in June and Indeed list the job again in October. Date filters and the only-new mode use listedAt. jobTypes carries the same English names in every country. The run also writes a SUMMARY record with the number of jobs per search, the searches without jobs and the reason a run stopped.

💰 What a run costs

Apify planPer 1,000 jobs
Free$1.00
Bronze$0.90
Silver$0.80
Gold, Platinum, Diamond$0.70

Apify's standard start event ($0.00005) is the only other charge; proxies are included. Not charged: a search without jobs, a job link Indeed no longer knows, a job already delivered in only-new mode, a job outside your date limit, and a job a second search of the same run finds again. Set the run's maximum charge and the Actor stops at it with the rows it has saved.

⏱️ Measured (October 4, 2026)

RunJobsTime
Empty input (sample search)502 s
One search to the limit (nurse, United States)10,000125 s
Four searches side by side, 1,500 jobs each6,00021 s
Full-time jobs of a search with more than 1,0001,50040 s
Nine searches in Germany with a date limit, two job types and title matching2013 s
Four job links, one of them no longer known to Indeed31 s
Only-new watch, second run right after the first0 new2 s

A run of 2,500 jobs that was killed after 14 seconds and started again ended with 2,500 rows, none of them twice.

Indeed's service ends every list after 1,000 jobs. When a search reaches that point, the Actor goes on in stretches of hours: the jobs listed up to 9 hours ago, then 9 to 18 hours ago, and so on. A stretch that is full again is halved.

A full list is also not the newest 1,000 jobs. In the search for nurse jobs in the United States, the first list ended at 999 jobs and reached 19 hours back; read exactly, those 19 hours held 1,014 jobs. The next list of 1,000 covered the following eleven hours, and the exact read of those hours found 427 jobs the list had left out. As a check, the first 28 hours of that search were counted again hour by hour: 1,673 jobs, and every one of them was in the run's dataset.

Above 1,000 jobs a search is read newest first. With a job type or remote filter the Actor checks each job's type itself inside a stretch, which matches Indeed's own filter job for job (574 full-time jobs in 20 hours, none missing).

🌍 Countries and pay

Argentina, Australia, Austria, Bahrain, Belgium, Brazil, Canada, Chile, China, Colombia, Costa Rica, Czech Republic, Denmark, Ecuador, Egypt, Finland, France, Germany, Greece, Hong Kong, Hungary, India, Indonesia, Ireland, Israel, Italy, Japan, Kuwait, Luxembourg, Malaysia, Mexico, Morocco, Netherlands, New Zealand, Nigeria, Norway, Oman, Pakistan, Panama, Peru, Philippines, Poland, Portugal, Qatar, Romania, Saudi Arabia, Singapore, South Africa, South Korea, Spain, Sweden, Switzerland, Taiwan, Thailand, Turkey, Ukraine, United Arab Emirates, United Kingdom, United States, Uruguay, Venezuela and Vietnam.

Indeed answers with pay only when the request carries the country's own language setting. In six test searches (United Kingdom, Germany, Canada, Australia, India, France; 100 jobs each) not one of the 600 jobs carried pay when asked with the American setting. Asked with each country's own setting, 80, 30, 80, 72, 44 and 68 of them did. salaryText therefore comes in the country's language ("£12.75 an hour", "16,40 € pro Stunde", "月給 26.2万円 以上"), and salaryMin, salaryMax, salaryUnit and salaryCurrency hold the same pay as numbers and codes.

🔔 Watching searches for new jobs

Turn on onlyNewJobs, give the watch a monitorId and put the run on a schedule. The first run delivers the newest jobs up to maxResults. Later runs read each search from its newest job and stop at the first page without anything new, so a quiet search costs nothing. Jobs listed before the oldest job of the first run stay outside the watch. The memory is a key-value store named indeed-jobs-monitor in your own account; delete a record there to start a watch over.

🤖 For AI agents

Smallest useful call:

{"queries": ["data analyst"], "locations": ["New York, NY"], "maxResults": 25}

Each row is one job with title, company, location, salaryText, salaryMin, salaryMax, jobTypes, remote, description, listedAt, applyUrl, companyWebsite and url. queries and locations take several entries at once; countryCode picks the country. Add "postedWithinDays": 1 for today's jobs. A search without jobs returns no rows; the status message and the SUMMARY record name it. No credentials are needed.

💡 Use cases

  • 📊 Labour market and pay research: what employers offer for a role by city and country, with pay as numbers.
  • 🎯 Sales and recruiting leads: who is hiring for which role, with company size, revenue and website on every row.
  • 🧩 Job boards and aggregators: fresh postings with the employer's own apply link, delivered by an hourly watch.
  • 🤖 Job search agents: complete descriptions and tags as input for matching and summaries.

⚠️ Limits, stated plainly

  • Fewer jobs than the count on Indeed's website. The website counts sponsored postings, and its service lists few of them. For nurse jobs in Austin from the last three days the website announced 124 jobs and the service listed 81. The website's first page showed 35 postings, 20 of them sponsored: of the 15 unsponsored ones 13 were in the Actor's result, of the 20 sponsored ones 7. A second search gave 14 of 15 and 3 of 15.
  • 10,000 jobs per search and run. For more, split the search by location or run it again with a date limit.
  • More than 1,000 jobs within one hour cannot be divided. Indeed's date filter works in whole hours. Such a search gets 1,000 jobs of that hour and a note in the status message; narrow it by place.
  • Relevance order covers the first 1,000 jobs. Everything beyond is read newest first.
  • Pay as the posting states it. Indeed's own pay estimates are not part of the service's answer, and a posting without pay has none here.
  • Employer profile where Indeed has one. In the sample run 43 of 50 jobs came with company size and rating and 44 with a website.
  • Few email addresses. Indeed does not publish recruiter contacts. emails holds addresses written in the description, which 5 of 50 jobs had in the sample run.
  • No number of applicants and no sponsored flag: the service does not give them.
  • Tags in the country's language. attributes and occupations come as Indeed words them on the country site; jobTypes, remote and hybrid are the same everywhere.
  • Several job types are several searches. Indeed reads two types as "both at once", so each type is searched on its own and maxResults applies to each.

❓ FAQ

Do I need an Indeed account, cookies or a proxy? No. The Actor reads what Indeed's app shows without an account.

How do I get more than 1,000 jobs? Set maxResults to the number you want, up to 10,000 per search. The Actor reads past Indeed's limit by itself.

Why do I get fewer jobs than Indeed's website says? The website's count includes sponsored postings; see the limits above for measured numbers.

Can I combine the date limit with job type and remote? Yes. Indeed's service takes only one of them at a time; the Actor applies the other one itself.

Why do some results not match my keywords? Indeed also searches the description. Turn on titleOnly, or write title:(your words) yourself.

How do I get every job of one company? Put company:Name into queries, with or without a location.

Can I check whether jobs are still online? Paste their links into links. Each job comes back with its current data and the expired flag; a job Indeed no longer knows is counted in the status message and costs nothing.

Where do I find a contact for a company? companyWebsite is on most rows. The Website Contact & Email Extractor reads emails and phone numbers from such websites.

My code was written for another Indeed Actor. What differs? The input names are read as they are. In the output, positionName is title, companyName is company, id or key is jobId, externalApplyLink or jobUrl is applyUrl, descriptionText is description, and pay is salaryText, salaryMin, salaryMax, salaryUnit and salaryCurrency.

How do I call it from code? With the Apify API or the Python and JavaScript clients; every run returns a dataset you can fetch as JSON or CSV. It also works as a tool through Apify's MCP server.

Is it legal? The Actor reads job postings that Indeed shows to everyone without a login. Postings can contain names and email addresses of contact persons: GDPR, CCPA and similar rules apply to how you store and use them, and Indeed's terms apply to you as well. Collect only what you need.

🔗 You might also like

Keywords: indeed scraper, indeed jobs scraper, indeed job search api, scrape indeed jobs, indeed salary data, indeed job postings export, indeed jobs csv, indeed api alternative, job postings data, hiring data, job market data, remote jobs indeed, indeed uk jobs, indeed germany jobs, indeed canada jobs, job monitoring, new jobs alert, company hiring signals, no login indeed scraper