Indeed Jobs Scraper avatar

Indeed Jobs Scraper

Pricing

from $2.52 / 1,000 results

Go to Apify Store
Indeed Jobs Scraper

Indeed Jobs Scraper

Scrape Indeed job listings by keyword, country, location, remote, distance, job type, and recency with structured job, salary, company, and contact fields.

Pricing

from $2.52 / 1,000 results

Rating

5.0

(3)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

8

Bookmarked

221

Total users

23

Monthly active users

14 hours ago

Last modified

Share

Indeed Jobs Scraper - Indeed Job Listings API for 61 Markets

Indeed Jobs Scraper exports up to 10,000 structured job listings per run from 61 supported markets. Search by keyword and country, optionally narrow by location, remote status, distance, job type, or posting date, and receive 41 consistent output fields covering job details, salary, company information, skills, source links, and contact signals when available.

TL;DR: Choose a keyword, country, and result limit, then run the Actor and export the dataset as JSON, CSV, Excel, or another Apify-supported format. No Indeed login is required as input. Date filtering cannot be combined with Remote Only or Job Type, and fields not exposed by a listing remain null instead of being fabricated.

Indeed 61 Markets 41 Fields


Why Choose This API

Indeed job data with clear, reusable fields

๐Ÿ“‹ 41-field job records

Receive a consistent dataset containing source URLs, title, dates, structured location, remote status, description, employment details, salary fields, company information, and contact signals. Nullable fields make unavailable source data explicit.

๐Ÿ’ฐ Salary research and currency normalization

Collect minimum and maximum salary, pay period, and currency when Indeed exposes them. Set currency when you need available salary amounts converted into one target currency for comparison.

๐Ÿข Company and contact context

Results can include the employer name, Indeed company page, official website, logo, industry, employee range, revenue range, description, addresses, emails, phone numbers, and social links when those values are discoverable.

๐ŸŽฏ Transparent search controls

Search by keyword and one of 61 verified countries. Optional controls cover location, distance, remote-only roles, employment type, and posting age, with the filter compatibility rules stated in the input form and below.

๐Ÿ“ฆ Ready for recurring workflows

Use the default dataset for recruiting research, hiring-signal monitoring, compensation analysis, job-board feeds, ATS ingestion, CRM enrichment, or scheduled labor-market snapshots.


Quick Start Guide

How to export Indeed job listings in 3 steps

Open Actor Input

Enter keyword, choose country, and set max_results. Add only the optional filters you want to use.

Step 2: Run the Actor

Click Start. For a countrywide search, leave location empty. For a local search, enter a city or region and optionally set distance.

Step 3: Use the dataset

Preview the default dataset or export it in an Apify-supported format. You can also connect the run to Make, n8n, a webhook, or the Apify API.


Input Parameters

Configuration fields

ParameterTypeRequiredDescriptionExample
keywordstringYesJob title, skill, or company name to search forSoftware Engineer
countryselectYesCountry where the target job listings are locatedUnited States
max_resultsintegerYesMaximum number of jobs to return, from 1 to 10,000500
remote_onlybooleanNoRestrict results to remote-friendly positions; when enabled, posted_since is not applied by Indeedtrue
distanceintegerNoRadius in miles around location, from 50 to 10,000; when omitted with a location, Indeed uses 200 miles50
locationstringNoCity or region to focus the search onAustin, TX
posted_sincedateNoLimit results by posting age when Remote Only is off and Job Type is not selected7 days
job_typeselectNoEmployment type filter; when selected, posted_since is not applied by Indeedfulltime
currencyselectNoTarget currency for converting available salary amountsUSD

Selectable countries

Argentina, Australia, Austria, Bahrain, Belgium, Brazil, Canada, Chile, China, Colombia, Costa Rica, 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.

Filter compatibility

  • posted_since works when remote_only is off and job_type is not selected.
  • remote_only and job_type can be used independently or together, but they take precedence over posted_since.
  • distance affects a location-based search. When location is supplied without distance, the search uses a 200-mile radius.
  • currency changes available salary values after collection; it does not filter which jobs Indeed returns.

Example input

{
"keyword": "Software Engineer",
"country": "United States",
"max_results": 500,
"location": "Austin, TX",
"distance": 50,
"posted_since": "7 days",
"currency": "USD"
}

Output Data Schema

Complete 41-field job record

Every dataset item uses the same public field names. Source-dependent fields can be null.

Run and source fields

FieldTypeDescription
processorstring or nullApify Actor URL that processed the record
processed_atstring or nullUTC timestamp when the record was processed
platformstring or nullSource platform name, normally Indeed
platform_urlstring or nullIndeed job listing URL
official_urlstring or nullEmployer's original job URL when available

Core job fields

FieldTypeDescription
titlestring or nullJob title
posted_datestring or nullDate or timestamp when the listing was posted
valid_throughstring or nullClosing or expiration date when available
locationobject or nullStructured location with source text and standardized geographic fields
applicant_countinteger or nullApplicant count when available
is_remoteboolean or nullWhether the listing indicates remote or hybrid work
descriptionstring or nullJob description and requirements text

Classification fields

FieldTypeDescription
job_typestring or nullEmployment type, such as full-time or contract
job_levelstring or nullSeniority level when available
job_functionstring or nullDepartment or job function when available
listing_typestring or nullListing classification when available
skillsstring or nullSkills and attributes identified for the role
work_from_homestring or nullRemote or hybrid work arrangement
vacancy_countinteger or nullNumber of openings when available
experience_rangestring or nullExperience requirement when available
easy_applyboolean or nullWhether direct application is available

Salary fields

FieldTypeDescription
salary_periodstring or nullPay period, such as yearly, monthly, or hourly
salary_minimumnumber or nullMinimum salary amount
salary_maximumnumber or nullMaximum salary amount
salary_currencystring or nullISO currency code

Company fields

FieldTypeDescription
company_namestring or nullHiring company name
company_typestring or nullCompany ownership type when available
company_foundedinteger or nullFounding year when available
company_industrystring or nullIndustry or sector
company_urlstring or nullIndeed company page URL
company_websitestring or nullOfficial company website
company_logostring or nullCompany logo URL
company_addressesstring or nullCompany address text
company_revenuestring or nullRevenue range when available
company_descriptionstring or nullCompany overview
company_ratingnumber or nullCompany rating when available
employee_countstring or nullEmployee range when available
review_countinteger or nullReview count when available

Contact fields

FieldTypeDescription
emailsarray or nullCompany or hiring contact emails when discoverable
phonesarray or nullCompany or hiring phone numbers when discoverable
social_linksobject or nullCompany social profile URLs grouped by platform

Representative output

{
"processor": "https://apify.com/agentx/indeed-jobs-scraper?fpr=aiagentapi",
"processed_at": "2026-07-18T10:30:00.000Z",
"platform": "Indeed",
"platform_url": "https://www.indeed.com/viewjob?jk=1234567890abcdef",
"official_url": "https://careers.example.com/jobs/senior-software-engineer",
"title": "Senior Software Engineer",
"posted_date": "2026-07-15T09:00:00.000Z",
"location": {
"raw": "Austin, TX",
"locality": "Austin",
"region": "TX",
"country": "United States",
"country_code": "US"
},
"is_remote": false,
"job_type": "Full-time",
"skills": "Python, AWS, React",
"salary_minimum": 140000,
"salary_maximum": 180000,
"salary_period": "yearly",
"salary_currency": "USD",
"company_name": "Example Company",
"company_industry": "Technology",
"company_website": "https://example.com",
"emails": ["careers@example.com"]
}

Integration Examples & Options

The verified Actor ID is xO9d32iQjbduePxUD.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("xO9d32iQjbduePxUD").call(
run_input={
"keyword": "Software Engineer",
"country": "United States",
"max_results": 100,
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('xO9d32iQjbduePxUD').call({
keyword: 'Software Engineer',
country: 'United States',
max_results: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Direct API request

curl -X POST "https://api.apify.com/v2/acts/xO9d32iQjbduePxUD/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword":"Software Engineer","country":"United States","max_results":100}'

Make and n8n

Use the Apify integration in Make or n8n, select Actor ID xO9d32iQjbduePxUD, pass the same input object, wait for the run to finish, and read the default dataset items.

  • Open the Actor's API tab for generated requests in other supported languages.
  • Connect completed runs to webhooks or another Apify integration.
  • Read the default dataset in JSON, CSV, Excel, XML, RSS, or another format supported by Apify.

JSON-LD Metadata

{
"@context": "https://schema.org",
"@graph": [
{
"@type": "SoftwareApplication",
"@id": "https://apify.com/agentx/indeed-jobs-scraper#software",
"name": "Indeed Jobs Scraper",
"description": "Scrape Indeed job listings across 61 verified markets and export 41 structured job, salary, company, application, and contact fields when available.",
"applicationCategory": "BusinessApplication",
"applicationSubCategory": "Job Scraping API",
"operatingSystem": "Web, Cloud",
"url": "https://apify.com/agentx/indeed-jobs-scraper",
"dateModified": "2026-07-19",
"featureList": [
"Searches 61 supported Indeed markets",
"Returns a consistent 41-field dataset",
"Supports optional location, distance, remote, job type, date, and currency controls",
"Exports results through Apify datasets and integrations"
],
"author": { "@id": "https://apify.com/agentx#organization" },
"publisher": { "@id": "https://apify.com#organization" }
},
{
"@type": "Organization",
"@id": "https://apify.com/agentx#organization",
"name": "AgentX",
"url": "https://apify.com/agentx",
"sameAs": [
"https://apify.com/agentx",
"https://t.me/AiAgentApi"
]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Which countries can I select?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The input offers 61 supported Indeed markets. The complete list appears in the Input Parameters section and in the Actor input selector."
}
},
{
"@type": "Question",
"name": "Can I combine posting date with remote or job type filters?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. When Remote Only is enabled or Job Type is selected, Indeed does not apply Posted Since for that search. Use separate runs when you need both views."
}
},
{
"@type": "Question",
"name": "What happens when I enter a location but no distance?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The search uses a 200-mile radius. Set Distance explicitly when you need a different radius."
}
},
{
"@type": "Question",
"name": "How much does 1,000 results cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "At the FREE tier, 1,000 results cost $2.80 plus the Actor start event. At GOLD, PLATINUM, or DIAMOND, 1,000 results cost $2.52 plus the Actor start event."
}
}
]
},
{
"@type": "HowTo",
"name": "How to export Indeed job listings with Indeed Jobs Scraper",
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "Configure the search",
"text": "Enter a keyword, choose a country, set the maximum results, and add only the optional filters you need."
},
{
"@type": "HowToStep",
"position": 2,
"name": "Run the Actor",
"text": "Click Start. Leave Location empty for a countrywide search or provide a city or region for a local search."
},
{
"@type": "HowToStep",
"position": 3,
"name": "Use the dataset",
"text": "Preview or export the default dataset, or connect the completed run to an Apify integration."
}
]
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Apify",
"item": "https://apify.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "AgentX",
"item": "https://apify.com/agentx"
},
{
"@type": "ListItem",
"position": 3,
"name": "Indeed Jobs Scraper",
"item": "https://apify.com/agentx/indeed-jobs-scraper"
}
]
}
]
}

Pricing & Cost Calculator

Pay-per-event pricing

Each run charges the Actor start event plus one result event for every item pushed to the default dataset. Result price depends on the user's Apify plan.

Event or tierPriceBilling unit
Actor start$0.01Run start event; the event count depends on Actor memory, with a minimum of one
FREE result$0.00280One default dataset result
BRONZE result$0.00271One default dataset result
SILVER result$0.00261One default dataset result
GOLD result$0.00252One default dataset result
PLATINUM result$0.00252One default dataset result
DIAMOND result$0.00252One default dataset result

Example costs at the default memory setting

PlanResultsResult costActor startEstimated total
FREE500$1.40$0.01$1.41
FREE1,000$2.80$0.01$2.81
FREE5,000$14.00$0.01$14.01
GOLD or higher1,000$2.52$0.01$2.53

Actual cost depends on the number of results produced, the user's plan, and the number of Actor start events charged for the selected memory.


Use Cases & Applications

Recruiting and talent intelligence

  • Track open roles by title, skill, employer, country, or city.
  • Monitor changes in competitor hiring activity with scheduled runs.
  • Build sourcing research datasets without mixing incompatible field names.

Compensation and workforce research

  • Compare disclosed salary ranges by role and location.
  • Normalize available salaries into a selected currency.
  • Analyze skill demand, employment type, remote status, and posting age.

B2B and company research

  • Identify companies actively hiring for relevant roles.
  • Enrich hiring signals with company websites, industry, size, revenue, and contact fields when available.
  • Feed structured records into a CRM, data warehouse, dashboard, or alerting workflow.

Job products and automation

  • Populate a niche job board or internal opportunity feed.
  • Schedule recurring exports for market snapshots.
  • Connect datasets to Make, n8n, webhooks, or the Apify API.

FAQ

Which countries can I select?

The input offers 61 supported Indeed markets. The complete list appears in the Input Parameters section and in the Actor input selector.

Can I combine posting date with remote or job type filters?

No. When remote_only is enabled or job_type is selected, Indeed does not apply posted_since for that search. Use separate runs when you need both views.

What happens when I enter a location but no distance?

The search uses a 200-mile radius. Set distance explicitly when you need a different radius.

Does every result contain salary and company details?

No. Indeed does not expose every field for every listing. Salary, company, contact, application, and classification fields remain null when the source does not provide enough information.

Does currency filter the jobs returned?

No. currency converts available salary amounts after collection. It does not change the Indeed search results.

Can I run countrywide searches?

Yes. Leave location empty to search the selected country without adding a city or region.

How much does 1,000 results cost?

At the FREE tier, 1,000 results cost $2.80 plus the Actor start event. At GOLD, PLATINUM, or DIAMOND, 1,000 results cost $2.52 plus the Actor start event.


Trust & Data Responsibility

  • Supported market list: every country shown in the selector is available for this Actor.
  • Transparent billing: pricing is declared per Actor start and per dataset result, with every plan tier listed above.
  • Explicit nullability: source-dependent fields are nullable; missing values are not presented as verified facts.
  • No Indeed credentials requested: the public input schema does not ask for an Indeed username, password, or cookie.

Indeed Jobs Scraper is intended for lawful collection and analysis of publicly accessible job-listing data. You are responsible for reviewing Indeed's terms, applicable privacy and database laws, employment-data rules, and the permitted use of any contact information in each jurisdiction. This documentation is not legal advice.


Enrich Your Workflow

Support & Community

Last Updated: 2026-07-19