Skip to content

Indeed Jobs Scraper

Try for free

Extract public Indeed job listings with company, pay, location, and the full description. Search by keyword or paste Indeed URLs.

💼 Indeed Jobs Scraper

Pull public Indeed job listings into a clean dataset: title, company, location, pay, full description, apply link, and employer details. Search by keyword on any of 62 country sites, or paste Indeed search, job, or company URLs. No login, no cookies, and you pay only for jobs that are saved.

✨ Why use Indeed Jobs Scraper?

  • 💸 Pay per job — $0.003 per job saved ($3 per 1,000), plus a small amount of platform usage. Empty results are not billed.
  • 🌍 62 Indeed country sites — us, uk, de, fr, in, au, ca, jp and many more.
  • 🔓 No login — it reads the public job index, no account or cookies needed.
  • 💵 Structured pay — salary text plus numeric minimum, maximum, currency, and period.
  • 🏢 Employer data on every job — company name, logo, size, revenue, descriptions, and links.
  • 🎛️ Filters that matter — radius, remote or hybrid, experience level, job type, sort order, and how recently the job was indexed.

🎯 Use cases

  • 🔍 Job boards and aggregators — keep a fresh feed of openings for a niche or region.
  • 💰 Salary research — compare pay for a role across cities and countries.
  • 🏭 Competitor hiring signals — read all openings from a company page like https://www.indeed.com/cmp/Google/jobs.
  • 📊 Labor market analysis — track how many jobs appear for a skill over time.
  • 🎯 Recruiting and lead gen — find companies that are hiring for the roles you place or sell to.

🚀 How to use

  1. Choose Country, enter a Query (and optionally a Location), or paste URLs instead.
  2. Set Maximum jobs (default 10).
  3. Add filters if you need them: radius, remote, level, job type, sort, days.
  4. Click Start.
  5. Export to JSON, CSV, Excel, or HTML, or read the dataset through the API.

📥 Input

FieldTypeWhat it does
countryselectIndeed site to search, such as us or fr. Ignored when URLs are set.
querystringJob title or keywords.
locationstringCity, state, postal code, or remote.
urlsarrayIndeed search, job, or company jobs URLs. Query and filters are ignored when set.
maxRowsintegerMax jobs for a keyword search. Default 10.
maxRowsPerUrlintegerMax jobs per start URL.
radiusselect0, 5, 10, 15, 25, 35, 50, 100. Miles in the US and UK, km elsewhere.
remoteselectremote or hybrid.
levelselectentry_level, mid_level, senior_level. Applied on the US site.
jobTypeselectfulltime, parttime, contract, internship, temporary, permanent, seasonal, freelance.
sortselectrelevance or date.
fromDaysselectJobs indexed within 1, 3, 7, or 14 days.
enableUniqueJobsbooleanSkip a job key already saved in this run.
proxyConfigurationobjectDatacenter proxy by default.
{
  "country": "us",
  "query": "Analyst",
  "location": "New York",
  "maxRows": 10
}

Or with URLs:

{
  "urls": [
    "https://www.indeed.com/jobs?q=engineer&l=San+Francisco",
    "https://www.indeed.com/viewjob?jk=52fbc9af227aa85a"
  ],
  "maxRowsPerUrl": 10
}

📤 Output

One dataset row per job.

FieldDescription
title, jobKey, jobUrlJob title, Indeed job key, and link to the posting.
companyName, companyUrlEmployer and its Indeed company page.
locationCity, country code, and short formatted address.
salarysalaryText, salaryMin, salaryMax, salaryCurrency, salaryType.
descriptionTextFull posting as plain text.
applyUrl, isEasyApplyEmployer's off-site application link when published, else Indeed's apply link for jobs that take applications on Indeed.
jobType, attributes, occupationContract type (from Indeed's tags, else a job type stated in the title or posting), benefits and attributes, occupation categories.
datePublished, age, isRemoteDate, relative age, remote flag.
companyNumEmployees, companyRevenue, companyLogoUrl, companyLinksEmployer profile data.
{
  "title": "Entry-Level Analyst",
  "companyName": "AFRY",
  "jobUrl": "https://www.indeed.com/viewjob?jk=52fbc9af227aa85a",
  "location": {
    "city": "New York",
    "countryCode": "US",
    "formattedAddressShort": "New York, NY"
  },
  "salary": {
    "salaryText": "$65,000 - $70,000 a year",
    "salaryMin": 65000,
    "salaryMax": 70000,
    "salaryCurrency": "USD",
    "salaryType": "yearly"
  },
  "datePublished": "2026-09-28",
  "jobKey": "52fbc9af227aa85a"
}

The example is trimmed. Real rows also carry the full description, attributes, occupation, and employer profile.

💰 Pricing

$0.003 per job saved, which is $3.00 per 1,000 jobs, plus platform usage for compute and proxy traffic. A search that finds nothing saves no rows and is not billed.

Worked example: 1,000 jobs cost $3.00 in result fees, plus the platform usage of the run.

❓ FAQ

Is it legal to scrape Indeed? The actor reads public job pages without logging in. You are responsible for how you use the data and for complying with local law and Indeed's terms.

Do I need a login or my own proxy? No. A datacenter proxy is configured by default.

How many jobs can I get? As many as Indeed's public index has, and duplicates are removed. One broad search usually ends at about 300 to 500 unique jobs because that is where Indeed's public index stops.

Can I scrape a single job? Yes. Paste https://www.indeed.com/viewjob?jk=<job key>.

Why is the apply link empty? Indeed Apply postings do not publish an off-site application URL. isEasyApply is true for those jobs.

Can I schedule it or call it from code? Yes, with schedules in the console or through the API.

Moving from another Indeed actor? Saved inputs that use query, country, location, maxRows, and urls work the same way as the pay-per-result Indeed jobs actor.

⚠️ Limits

  • Indeed's public index repeats jobs across pages and usually runs out at about 300 to 500 unique jobs for one search; the run then stops and the status message says how many unique jobs it found. Split a broad search by location or filters to get more.
  • Reads the public job index only. It does not log in and does not apply to jobs.
  • Sponsored placement, campaign counts, application counts, founded year, company sector, the Indeed Apply URL, and requirement severity are not in the public index, so those fields stay empty.
  • The experience-level filter applies on the US site. Seasonal and freelance have no separate filter on the public index and are skipped.
  • includeSimilarJobs does not drop rows, because the public index does not separate similar jobs.
  • An invalid-only list of start URLs fails the run with a message that none of the URLs is an Indeed jobs URL.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.