Indeed Job Scraper — Salaries, Remote & Full Details
Pricing
from $2.00 / 1,000 job results
Indeed Job Scraper — Salaries, Remote & Full Details
Scrape Indeed.com job listings by keyword or URL. Returns job title, company, parsed salary range, remote/hybrid flag, job type, benefits & full description. MCP/API-ready.
Pricing
from $2.00 / 1,000 job results
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
27
Total users
2
Monthly active users
12 hours ago
Last modified
Categories
Share
💼 Indeed Job Scraper — Salaries, Remote & Full Details
This Apify Actor is for recruiters, analysts, and workflow builders who need Indeed.com job listings from a keyword search or a direct Indeed search URL. It accepts a job title, skill, keyword, role, or an existing Indeed results page and returns one dataset record per listing. Each record can include job title, company name, company rating, location, remote or hybrid signal, job type, parsed salary range, raw salary text, benefits, description, job URL, source URL, and scrape timestamp. The output is structured for spreadsheets, CRMs, AI pipelines, and Apify MCP workflows.
Best fit and connected workflows
This Actor fits workflows that begin with an Indeed search query or a saved Indeed results page and need one structured record per job listing.
Use it when:
- A role name, skill, or keyword is the starting point and you want live Indeed search results by location.
- A ready-made Indeed search URL already includes filters such as salary, date posted, or other search settings.
- You want numeric salary fields for sorting, comparison, or downstream analysis.
- You want
is_remoteandwork_typeto separate remote, hybrid, and on-site roles. - You want a direct
job_urlfor manual review, shortlist creation, or follow-up workflows. - You plan to pass the dataset into spreadsheets, CRMs, enrichment steps, or AI agents.
If your next workflow centers on a different job board or geography, a connected route can start with one of these verified related Actors:
- Use APEC Jobs Scraper for sourcing that is centered on the APEC job board and its regional audience when the next workflow needs that Actor's focused input and output contract.
- Use Ashby Jobs Scraper for career pages powered by Ashby when that board is the right source.
- Use Bayt Jobs Data Scraper for MENA Listings for MENA-focused sourcing and research around Bayt listings when the next workflow needs that Actor's focused input and output contract.
Practical scenario
Maya, a recruiter, starts with data analyst and Austin, TX. She runs the Actor and reviews records that include job_title, company_name, company_rating, salary_min, salary_max, salary_period, work_type, posted_at, and job_url. She uses the parsed salary fields to compare compensation, checks is_remote and work_type to separate remote and hybrid roles, and opens job_url for the shortlist. Her next action is to export selected listings into a spreadsheet or CRM for outreach.
Input fields
| Field | Type | Description |
|---|---|---|
searchQuery | string | Job title, skill, keyword, or role to search for. Use this when starting from a text query. |
location | string | City, state, ZIP code, or Remote to filter the search geographically. |
startUrls | array | Direct Indeed search URLs. Use this when starting from an existing Indeed results page. |
maxResults | integer | Maximum number of listings to collect. Minimum is 1 and maximum is 1000. Default is 50. |
country | string | Indeed country site: www, uk, ca, au, in, de, fr, sg, or nz. Default is www. |
proxyConfiguration | object | Proxy settings for the run. Residential proxies are the default configuration. |
Focused input example
{"searchQuery": "software engineer","location": "Austin, TX","maxResults": 25,"country": "www"}
Output fields
Each dataset item represents one Indeed job listing.
| Field | Type | Description |
|---|---|---|
job_id | string | Indeed's unique job identifier from the jk parameter in the job URL. |
job_title | string | Job title shown on Indeed. |
company_name | string | Hiring company or employer name. |
company_rating | number or null | Indeed star rating when available. |
location | string | Job location shown on Indeed. |
is_remote | boolean | True when the job is fully remote. |
work_type | string or null | Remote, Hybrid, or On-site when available. |
job_type | string or null | Full-time, Part-time, Contract, Temporary, or Internship when available. |
salary_min | number or null | Parsed minimum salary. |
salary_max | number or null | Parsed maximum salary. |
salary_currency | string or null | ISO 4217 currency code when available. |
salary_period | string or null | Pay period such as year, month, week, hour, or day. |
salary_text | string or null | Raw salary text from the listing. |
description | string | Job description snippet or full text available from the search results page. |
posted_at | string or null | Relative time since the job was posted. |
benefits | array or null | Benefits mentioned in the listing. |
job_url | string | Direct link to the full job listing on Indeed.com. |
source_url | string | Indeed search results page URL used for the scrape. |
scraped_at | string | ISO 8601 UTC timestamp of when the record was collected. |
Illustrative output record
{"job_id": "a1b2c3d4e5f67890","job_title": "Senior Software Engineer","company_name": "Acme Corporation","company_rating": 4.2,"location": "Austin, TX","is_remote": false,"work_type": "Hybrid","job_type": "Full-time","salary_min": 90000,"salary_max": 130000,"salary_currency": "USD","salary_period": "year","salary_text": "$90,000 - $130,000 a year","description": "We are looking for a Senior Software Engineer to join our team...","posted_at": "3 days ago","benefits": ["Health insurance","401(k)","Paid time off"],"job_url": "https://www.indeed.com/viewjob?jk=a1b2c3d4e5f67890","source_url": "https://www.indeed.com/jobs?q=software+engineer&l=Austin%2C+TX&start=0","scraped_at": "2026-04-09T10:30:00.000Z"}
How it works
The Actor accepts either a keyword-based Indeed search or direct Indeed URLs. The input schema supports nine country domains: United States, United Kingdom, Canada, Australia, India, Germany, France, Singapore, and New Zealand.
The live manifest identifies this Actor as a Playwright-based template with stealth behavior and Cloudflare bypass through residential proxies. The dataset view is configured as a table with common job-listing columns, which makes the output easy to scan before export or downstream processing.
Pricing
This Actor uses Pay per event pricing plus Apify platform usage.
The primary billed event is Job Result, which is charged for each job scraped. There is also a one-time Actor start event. The live Pricing tab in the Apify Console shows the current event prices and the Apify platform usage charges for the execution environment.
Example in words: if a execution collects fifty job results, the Job Result event is applied fifty times, and the run also includes Apify platform usage for the execution.
For current pricing details, open the live Pricing tab in the Apify Console.
Use with AI agents (MCP)
This Actor is available through Apify MCP as a tool for structured Indeed job retrieval. The exact Actor identity is khadinakbar/indeed-job-scraper.
Tool description: search Indeed jobs by keyword or direct search URL and return structured job records with salary parsing, work arrangement, benefits, and listing links.
Find Indeed job listings for "data analyst" in Austin, TX, return up to 20 results, and include salary and remote fields so I can compare roles by compensation and work arrangement.
Output interpretation:
jobListingspoints to the dataset items endpoint for the run output.- Each dataset record is one listing, which is useful for ranking, filtering, and downstream enrichment.
job_urlis the direct listing link, whilesource_urlshows the results page used for collection.salary_min,salary_max, andsalary_periodhelp normalize salary text into sortable values.is_remoteandwork_typehelp classify remote, hybrid, and on-site roles.- Pagination follows the number of listings collected up to
maxResults. - Cost guidance follows the same pay-per-event model described in Pricing, so agent workflows can size requests by expected job count.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/indeed-job-scraper').call({searchQuery: 'software engineer',location: 'Austin, TX',maxResults: 10,country: 'www',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Read ${items.length} job listings from the dataset`);console.log(items[0]);
Best results and outcome guidance
- Use
searchQuerywhen the starting point is a role, skill, or keyword. - Use
startUrlswhen you already have an Indeed results page with filters applied. - Keep
countryaligned with the Indeed market you want to study. - Set
maxResultsto match the sample size or pipeline batch you need. - Review
salary_texttogether with the parsed salary fields when salary formatting matters. - Use
is_remoteandwork_typetogether for routing and segmentation. - Start from
job_urlwhen a listing needs manual review or a deeper workflow step.
Continue the workflow
- Then use InfoJobs Jobs Scraper to extend 💼 Indeed Job Scraper — Salaries, Remote & Full Details with a neighboring job-market research source when the brief calls for Infojobs data.
- Then use HiringCafe Jobs Scraper to extend 💼 Indeed Job Scraper — Salaries, Remote & Full Details with a neighboring job-market research source when the brief calls for Hiringcafe data.
Design note
I found that job_id, job_title, company_name, location, is_remote, job_url, source_url, and scraped_at are required fields in the dataset schema, which makes each record a stable one-row job listing.
FAQ
When should I use searchQuery instead of startUrls?
Use searchQuery when the starting point is a role, skill, or keyword. Use startUrls when you already have an Indeed search results URL with filters applied.
Which fields help separate remote and hybrid roles?
Use is_remote for fully remote listings and work_type for the listed arrangement such as Remote, Hybrid, or On-site.
Can I analyze compensation directly from the output?
Yes. The Actor returns both raw salary text and parsed salary fields, including salary_min, salary_max, salary_currency, and salary_period when available.
Which country markets are supported?
The country field supports www, uk, ca, au, in, de, fr, sg, and nz.
How can I connect this to another workflow?
Use job_url for listing-level follow-up, export the dataset into a spreadsheet, or feed the records into an AI agent that enriches, filters, or ranks jobs. For job-board-specific sourcing, the related Actors above provide the next routing step.
Responsible use
Use this Actor for publicly accessible job listings and lawful data collection workflows. Follow applicable laws, Indeed terms, and your own internal policies for storage, sharing, and downstream use of job data.