Indeed Job Scrapper avatar

Indeed Job Scrapper

Pricing

$0.15 / actor start

Go to Apify Store
Indeed Job Scrapper

Indeed Job Scrapper

crape job listings from Indeed.com and Indeed India (in.indeed.com) by role, skill, and location. Returns deduplicated, capped results ready to pipe into spreadsheets, databases, ATS systems, or AI workflows. Built for developers, recruiters, and data teams who need structured Indeed job data .

Pricing

$0.15 / actor start

Rating

0.0

(0)

Developer

Dinesh Kumar Wadhwani

Dinesh Kumar Wadhwani

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

20 days ago

Last modified

Share

Indeed Jobs Scraper — Multi-Role, Multi-Location, Global + India

Scrape job listings from Indeed.com and Indeed India (in.indeed.com) by role, skill, and location. Returns deduplicated, capped results ready to pipe into spreadsheets, databases, ATS systems, or AI workflows.

Built for developers, recruiters, and data teams who need structured Indeed job data without managing browser automation themselves. Supports multiple roles, multiple skills, and multiple locations in a single run — with role normalization built in so you get consistent results even when job titles are written differently across companies.


Why this Actor

  • Multi-role search — search up to 3 job titles in one run, combined with up to 3 supporting skills
  • Role normalization — automatically expands common abbreviations (VPVice President, SnrSenior, devDeveloper) so you reach the right jobs regardless of how companies write titles
  • Global + India — works on both indeed.com and in.indeed.com
  • Hard deduplication — uses Indeed's internal job key (jk) to deduplicate across search terms, locations, and pages. The same job never appears twice
  • 100-job cap — stops cleanly at 100 unique results per run, no runaway pagination
  • No proxy required — works without residential proxies on standard Apify infrastructure

What it does

This Actor searches Indeed job listings using:

  • Up to 3 roles — each normalized and combined with skills to form targeted search queries
  • Up to 3 skills — appended to each role to narrow results
  • Multiple locations — searches each location independently, results pooled and deduplicated globally
  • One time frame — filter by how recently jobs were posted

For each role + skill combination, the Actor builds a targeted search URL, loads the results page, extracts all job cards, deduplicates by job key, and paginates until the 100-job global cap is reached.

Role normalization

Before searching, the Actor expands common abbreviations:

InputNormalized
VP EngineeringVice President Engineering
SVP ProductSenior Vice President Product
Snr DeveloperSenior Developer
Tech LeadTechnical Lead
Java DevJava Developer
JS DevJavaScript Developer
Head of EnggHead of Engineering

Input

FieldTypeRequiredLimitDescription
rolesstring[]✅ Yes3Job titles to search for
skillsstring[]No3Supporting keywords appended to each role
locationsstring[]✅ YesCities, regions, or countries to search in
timeFramestringNoDays since posting: 1, 3, 7, 14 or "" for any time
maxJobsnumberNo100Max results to collect (hard cap at 100)

Example — Senior engineering leadership roles across India

{
"roles": ["VP Engineering", "Head of Engineering"],
"skills": ["SaaS", "Platform"],
"locations": ["Bangalore", "Pune", "Hyderabad"],
"timeFrame": "7",
"maxJobs": 100
}

This produces search queries including:

  • Vice President Engineering in each location
  • Vice President Engineering SaaS in each location
  • Vice President Engineering Platform in each location
  • Head of Engineering in each location
  • (and so on for each role × skill combination)

All results are deduplicated globally — if the same job appears in multiple searches, it is saved only once.

Example — Full-stack developer roles globally

{
"roles": ["Full Stack Developer", "Software Engineer"],
"skills": ["React", "Node.js"],
"locations": ["London", "Berlin", "Remote"],
"timeFrame": "3",
"maxJobs": 50
}

Output

Each result is saved as a flat JSON record to the Apify dataset:

{
"matchedSearchTerm": "Vice President Engineering SaaS",
"title": "Vice President of Engineering",
"company": "Acme Corp",
"location": "Bengaluru, Karnataka",
"url": "https://in.indeed.com/rc/clk?jk=fcc1e677b4ff9df1...",
"jobKey": "fcc1e677b4ff9df1"
}
FieldDescription
matchedSearchTermThe exact search query that produced this result
titleJob title as listed on Indeed
companyHiring company name
locationLocation as shown on the job card
urlDirect link to the job listing on Indeed
jobKeyIndeed's internal job ID — used for deduplication

Results are ready to export as CSV, JSON, or connect directly to Google Sheets, Airtable, or a webhook.


How it works

The Actor uses Crawlee's PlaywrightCrawler with browser fingerprinting enabled to render Indeed's JavaScript-heavy search results pages. For each search term and location combination:

  1. Builds a targeted Indeed search URL with role, skill, location, and time frame
  2. Loads the page in a headless Chromium browser
  3. Waits for job cards to render, then scrolls to load lazy content
  4. Extracts job title, company, location, and URL from each card
  5. Deduplicates using Indeed's jk job key parameter
  6. Paginates (10 results per page) until the global cap is reached or no more results exist
  7. Stops cleanly — no runaway requests, no duplicate entries

Performance

InputResultsNotes
2 roles × 2 skills × 2 locations, last 7 daysUp to 100 unique jobsTypical run
1 role × no skills × 1 location, any timeUp to 100 unique jobsFastest run

Runtime and cost depend on how many search term × location combinations are generated and how many pages need to be visited to reach 100 unique results. Runs with high overlap between search terms (same jobs appearing across multiple queries) complete faster due to early deduplication.

💡 Tip: Set memory to 1024 MB in your Apify actor settings. Indeed's pages are JavaScript-heavy and require a full browser render — 512 MB is insufficient and will cause instability.


Use cases

  • Recruiters & talent teams — monitor competitor job postings or track hiring velocity by role and location
  • Job seekers — run daily searches across multiple cities and pipe results to a spreadsheet or notification system
  • HR analytics — benchmark job title conventions, required skills, and hiring demand across geographies
  • Market research — track which companies are hiring for specific roles and skills
  • ATS integrations — pull and deduplicate job listings before importing into applicant tracking systems
  • AI pipelines — feed structured job data into LLM workflows for summarisation, matching, or classification

Scheduling & automation

This Actor works well on a schedule. To run it daily:

  1. Open the Actor and click Schedule
  2. Set your preferred cron (e.g. 0 8 * * * for 8am daily)
  3. Use timeFrame: "1" (last 24 hours) on daily schedules to only collect fresh listings
  4. Connect the output dataset to Google Sheets, a webhook, or a downstream Apify Actor

Limitations

  • Returns up to 100 unique jobs per run. For higher volumes, split searches across multiple runs with different role or location sets.
  • Job descriptions are not included — only the data visible on the search results card (title, company, location, URL). Use the output URL to fetch full descriptions in a separate step.
  • Indeed's page structure can change without notice. If results drop to 0 unexpectedly, check the run log — screenshot debugging files are saved automatically to help diagnose layout changes.
  • Performance varies by search specificity. Very narrow searches (rare role + specific skill) may return fewer than 100 results even across multiple pages — this is expected behavior, not an error.

FAQ

Does this work for both India and global Indeed? Yes — works on both in.indeed.com and indeed.com. Use Indian city names for India-specific searches, or global cities and "Remote" for worldwide searches.

Does it require residential proxies? No — this Actor works on standard Apify infrastructure without residential proxies.

How does deduplication work? Each job is identified by Indeed's internal jk job key, extracted from the job URL. If the same job appears across multiple search terms, locations, or pages, it is saved only once.

Can I search for remote jobs? Yes — add "Remote" as one of your locations.

What does role normalization do? Before searching, the Actor expands common abbreviations and variants into full titles — so VP Eng becomes Vice President Engineer, ensuring you reach listings regardless of how companies write the title.

Is this Actor maintained? Yes — actively maintained. If Indeed changes its HTML structure and selectors break, an update ships promptly.


Input schema reference

{
"roles": ["VP Engineering", "Head of Engineering"],
"skills": ["SaaS", "B2B"],
"locations": ["Bangalore", "Remote"],
"timeFrame": "7",
"maxJobs": 100
}

timeFrame values:

ValueMeaning
1Last 24 hours
3Last 3 days
7Last 7 days
14Last 14 days
"" (empty)Any time