Indeed Jobs Scraper (51 Countries, No Login)
Pricing
from $0.55 / 1,000 jobs
Indeed Jobs Scraper (51 Countries, No Login)
Scrape Indeed jobs and full descriptions from 51 countries with no login: title, company, location, yearly USD salary, job type, remote or hybrid, posting date and benefits. Every job is flagged with the employer's US H-1B/PERM record and UK sponsor licence. No duplicates. From $1 per 1,000 jobs.
Pricing
from $0.55 / 1,000 jobs
Rating
0.0
(0)
Developer
locaihost data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Search Indeed in 51 countries by keyword and location and get one row per job with title, company, location, job type, remote flag, the stated salary converted to yearly US dollars, and the employer's real US H-1B/PERM filing record and UK sponsor licence. No login, no cookies.
- Track who is hiring: pull every new job for a role and city into a sheet each morning.
- Research salaries: compare stated pay in one currency and one period across cities and countries.
- Find jobs that can sponsor a visa: keep only employers that file H-1B or PERM applications or hold a UK sponsor licence.
- Run a job board for international candidates: tag every listing with sponsorship evidence.
- Get a daily job alert: schedule a saved search with
onlyNewand receive only jobs you haven't seen.
Quick start
Paste this into the JSON tab of the input and click Start:
{"keywords": ["software engineer"], "locations": ["Austin, TX"], "country": "US", "maxResults": 20}
You get 20 jobs in about 30 seconds. maxResults is the cap for the whole run; each keyword is searched in every location, on the Indeed site of the country you pick (a London search needs "country": "GB").
What data can I get?
| Group | Fields |
|---|---|
| Job | jobId, title, companyName, companyUrl, jobUrl, postedAt, postedAgo, descriptionSnippet, benefits |
| Full description (opt-in) | description: the whole job description as plain text, with includeDescription on; null otherwise |
| Location and type | location, city, state, postalCode, country, remote, workArrangement, jobTypes, jobTypesText |
| Salary as stated | salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod |
| Salary per year | salaryYearlyMin, salaryYearlyMax, salaryYearlyMinUsd, salaryYearlyMaxUsd, salaryUsdRateDate |
| Listing | companyRating, companyReviewCount, sponsored, urgentlyHiring, easyApply |
| US sponsorship | sponsorSignal (strong, some, none), sponsorMatch, h1bEmployer, h1bCertifiedLatestFY, h1bCertifiedTotal, permCertifiedTotal, similarFiledTitle, similarTitleFilings, similarTitleMedianWage + currency and period |
| UK sponsorship | ukLicensed, ukSponsorName, ukRating, ukRoutes, ukMatchBasis, possibleMatches |
| Plain English | sponsorNote: one sentence you can show a candidate |
| Run | searchKeywords, searchLocation, searchCountry, searchVariant, scrapedAt |
How salaries are converted. Yearly figures use 2,080 hours, 260 days, 52 weeks or 12 months, the same rule the US Department of Labor uses for H-1B wages, so they compare directly with similarTitleMedianWage. Exchange rates are the European Central Bank's reference rates of the day (salaryUsdRateDate). A currency without a published rate gets no USD figure rather than a guessed one.
How the sponsorship flag works. US evidence is the employer's certified H-1B (and H-1B1/E-3) Labor Condition Applications and PERM certifications from the US Department of Labor's public disclosure files, FY2024 to date; similarFiledTitle is the employer's filed title closest to this job, with its median filed wage. UK evidence is the Home Office register of licensed sponsors; ukMatchBasis is exact, trading-name, brand-map (a reviewed brand to legal-entity list) or unconfirmed (only similar names, listed in possibleMatches and never counted). When nothing is found the note says "no filings found under this name", never "doesn't sponsor". The flag is evidence, not legal advice.
One real row (run on 2026-10-18, shortened):
{"jobId": "a8cacb8086a3b132","title": "Associate Software Engineer","companyName": "Charles Schwab","location": "Austin, TX","remote": false,"workArrangement": "hybrid","salaryText": "$44.23 - $45.19 an hour","salaryMin": 44.23,"salaryMax": 45.19,"salaryCurrency": "USD","salaryPeriod": "hour","salaryYearlyMinUsd": 91998,"salaryYearlyMaxUsd": 93995,"salaryUsdRateDate": "2026-10-16","benefits": ["Dental insurance", "401(k)", "401(k) matching", "Tuition reimbursement"],"postedAt": "2026-10-15T05:00:00.000Z","companyRating": 3.9,"companyReviewCount": 2941,"sponsored": false,"jobUrl": "https://www.indeed.com/viewjob?jk=a8cacb8086a3b132","sponsorSignal": "strong","sponsorNote": "Charles Schwab & Company, Inc.: 352 certified H-1B/E-3 LCAs in FY2026 (year in progress), 1,399 in FY2024–FY2026, 399 certified PERM. Closest filed title: \"Associate - Software Development & Engineering\" (13 filings, median wage $91,105).","h1bCertifiedLatestFY": 352,"permCertifiedTotal": 399,"similarTitleMedianWage": 91105,"ukLicensed": null}
The dataset has three views (Jobs, Visa sponsorship evidence, Salaries) and exports to JSON, CSV, Excel or HTML. The run's SUMMARY record lists the searches run, jobs skipped and why, and the data dates.
Full job description
Turn on includeDescription to get each job's whole description as plain text in description (lists become "- " lines). The run opens each job on Indeed's search page the way clicking a job card does (the search URL with vjk=<jobId>), which Indeed's robots.txt allows; it never opens /viewjob, which robots.txt asks automated visitors to avoid. That is one more page per job, so a run takes a few seconds longer per job (3 to 15 seconds in our tests), and it is a paid add-on (below). E-mail addresses, phone numbers and recruiter names after "contact" are removed. When a description can't be read, the job is still returned with description: null and the add-on isn't charged.
{"keywords": ["registered nurse"], "locations": ["Austin, TX"], "includeDescription": true, "maxResults": 20}
Only the country you asked for, no duplicates
Each Indeed country is its own site, and the run reads only the one you chose (country): a page Indeed sends to another country's site is not read, and a job Indeed files under another country is skipped. A job is returned once per run, keyed by Indeed's job key (jobId): when two of your searches, locations or the narrower versions of a search find the same job, it is returned and charged once. onlyNew extends that across runs.
How much does it cost?
You pay per job returned, with salary conversion and sponsorship flags included. There is no charge for Apify platform usage on top.
| Row | Free and Starter | Scale | Business |
|---|---|---|---|
| Job | $1.00 per 1,000 | $0.75 per 1,000 | $0.55 per 1,000 |
Job description, add-on with includeDescription ($) | $5.00 per 1,000 | $3.75 per 1,000 | $2.75 per 1,000 |
Plus $0.00005 per run start. Apify's free $5 monthly credit covers about 5,000 jobs, or about 830 jobs with full descriptions. The description add-on costs more because each description is one more Indeed page. Free-plan runs stop at 1,000 jobs each; any paid Apify plan removes the cap.
What's free: a job found by two of your searches (returned and charged once), jobs outside your date, job type or remote filters, jobs dropped by visaSponsorship: only-with-evidence, sponsored listings when includeSponsored is off, jobs skipped by onlyNew, jobs from another country's site, descriptions that couldn't be read, and runs that find nothing. To cap a run's spend, set Maximum cost per run in the run options.
Limits, stated up front
- One page per search. Indeed shows a logged-out visitor only the first page of results (15 jobs, plus sponsored listings on US pages); the next page asks you to sign in, and the Actor never signs in. To return more, it also runs narrower versions of your search that any visitor can run (newest first, each job type, hybrid, remote, last 1 or 3 days), each showing a different first page. Expect about 100 to 200 different jobs per keyword and location; add cities or keywords for more.
- The full description is opt-in. By default you get the snippet Indeed shows in search results (
descriptionSnippet) andjobUrl. WithincludeDescriptionon, you also get the full text (see above), read from the search page with the job selected, never from/viewjob, which robots.txt disallows. - No search radius. Indeed's robots.txt disallows the radius setting, so Indeed's default distance around your location applies.
- Sponsored listings are real jobs employers pay to show. They are marked
sponsored: trueand checked against your filters (Indeed doesn't always apply filters to them). TurnincludeSponsoredoff to drop them. - Salary appears only when the employer stated one. Indeed's own estimates are not reported as numbers.
- Countries. The parser was checked on 15 country sites (US, UK, Canada, Australia, India, Singapore, Ireland, South Africa, UAE, Malaysia, Japan, Germany, France, the Netherlands, Brazil); the others run the same Indeed software. Search in the site's own language works.
- Indeed may push back. The Actor uses a real browser and changes the network route when a page is refused, and never solves CAPTCHAs. If Indeed keeps refusing, the run stops, keeps what it has and tells you.
- Staffing agencies are flagged with the agency's own filings, not those of the client they hire for. US filing data is refreshed quarterly; the latest fiscal year is partial.
- Time limit: if a run nears its timeout, it stops, keeps what it found and says so in the status message.
Only new since last run, and schedules
Turn on onlyNew in a saved task and schedule it daily: each run returns only jobs no earlier run of the same search returned, so you get a clean job alert and never pay twice for the same job. Skipped jobs cost nothing. Set up a schedule under Schedules in Apify Console.
Integrations: API, n8n, Make and AI agents
API. Run it and get the rows back in one call:
curl -X POST "https://api.apify.com/v2/acts/locaihost~indeed-jobs/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": ["registered nurse"], "locations": ["Houston, TX"], "country": "US", "maxResults": 50}'
Apify's API clients for Python and JavaScript work the same way.
n8n, Make, Zapier, Google Sheets, Slack, webhooks. Apify's built-in integrations send each run's dataset wherever you need it.
AI agents (MCP). Add this Actor to Claude, Cursor or any MCP client with https://mcp.apify.com/?tools=locaihost/indeed-jobs, then ask something like "What do data analyst jobs in Toronto pay this week, in US dollars a year?"
FAQ
How much does it cost to scrape Indeed jobs?
$1 per 1,000 jobs on the Free and Starter plans, salary conversion and sponsorship flags included, and less on Scale and Business. Apify's free $5 monthly credit covers about 5,000 jobs.
Can I use it through the API or from Python?
Yes. Use the run-sync-get-dataset-items call above, or Apify's Python and JavaScript clients. Every run's data is also available as JSON, CSV or Excel from its dataset.
Can I use it from an AI agent?
Yes. Through the Apify MCP server (https://mcp.apify.com/?tools=locaihost/indeed-jobs) any MCP client can run a search and read the jobs back.
Is it legal to scrape Indeed jobs?
The Actor reads only what a logged-out visitor sees on Indeed's search pages, follows Indeed's robots.txt on every request, and never logs in or asks for your account. Indeed's own terms restrict automated access, so weigh that for your use. Rows describe jobs and employers only: email addresses and phone numbers in a snippet are removed, and the sponsor data never names a private individual (household employers are dropped). You are responsible for using the data lawfully, including Indeed's terms and any data-protection law that applies to you.
Which countries can I search?
51 Indeed country sites, picked with country: the US, UK, Canada, Australia, India, Singapore and 45 more across Europe, Asia, the Middle East, Africa and Latin America. Each site has its own jobs.
Why are some fields empty?
Salary appears only when the employer stated one, many cards don't list a job type or benefits, and sponsorship fields are null when no filing matched the employer's name.
More from locaihost data
- LinkedIn Jobs Scraper: the same sponsorship flags on LinkedIn jobs, with full descriptions.
- Google Jobs Scraper: jobs from many boards at once through Google's job search.
- Glassdoor Jobs Scraper: Glassdoor listings with company ratings.
- H1B and UK Visa Sponsor Lookup: check a list of employers' sponsorship records directly.
Did it help?
If this saved you time, a quick rating on the Store helps other people find it.
Support
Something not working, or a field you need? Open an issue on the Issues tab: we answer issues within 24 hours.