# Indeed Jobs Scraper - Jobs, Salaries & Company Profiles (`automly/indeed-jobs-scraper`) Actor

Scrape Indeed jobs from every Indeed country by keyword, location, date, job type, remote, experience, pay or company, or from any Indeed link: title, company, rating, salary, benefits, schedule, full description, plus company profiles.

- **URL**: https://apify.com/automly/indeed-jobs-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.06 / 1,000 jobs

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Indeed Jobs Scraper - Jobs, Salaries & Company Profiles

### What is Indeed Jobs Scraper?

**Indeed Jobs Scraper** is a tool that lets you **scrape job listings from Indeed in 62 countries**: job title, company, company rating, location, salary with its minimum, maximum, pay period and currency, job type, remote or hybrid, experience level, benefits, shift and schedule, skills, posting date, "Urgently hiring" and "Easily apply" badges, and the **full job description**. It also scrapes **Indeed company profiles**: rating, review count, CEO approval, size, revenue, industry and headquarters. Type a keyword and a location or paste any Indeed link, click **Start**, and download the jobs as Excel, CSV or JSON.

- ⚡ **Fast:** 5,000 jobs from one keyword in about 35 seconds, 2,000 jobs with full descriptions in about 25 seconds (our tests)
- 🌍 **Every Indeed country:** indeed.com, uk.indeed.com, ca, au, in, de, fr, nl, jp, br, mx and 50 more
- 💰 **Salaries you can sort:** pay text plus parsed minimum, maximum, period and currency
- 📈 **Big searches:** one keyword can give tens of thousands of jobs, far more than the 1,000 Indeed shows for one search
- 🔓 **No login:** no Indeed account needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers about 25,000 jobs with full details (about 50,000 without)

### What can Indeed Jobs Scraper do?

- **Scrape Indeed job search results** for any keyword and location, like `registered nurse` in `Austin, TX` or `software engineer` in `London`
- **Filter Indeed jobs like on the site:** date posted, job type, remote or hybrid, experience level, minimum pay, "Easily apply" and company
- **Scrape full Indeed job descriptions** as text and HTML, with benefits, schedule and skills
- **Scrape Indeed jobs from any Indeed link:** search pages with the filters you set on the site, single job pages and company job pages
- **Scrape Indeed company profiles:** rating, reviews, CEO approval, size, revenue, industry, headquarters, website and social links
- **Collect Indeed salary data** across cities, roles and countries
- **Monitor new Indeed jobs** every day with the "Last 24 hours" filter and a schedule
- Export to Excel, CSV, JSON, HTML or XML, or send the data to Google Sheets, Make, Zapier and more

### What data can you extract from Indeed?

| | | |
|---|---|---|
| 💼 Job title and standard title | 🏢 Company, rating and review count | 📍 Location, city, state, postal code, coordinates |
| 💰 Salary text, min, max, period, currency | 🕒 Job type (full-time, part-time, contract, ...) | 🏠 Remote, hybrid or in person |
| 🎓 Experience level | 🎁 Benefits | 📆 Shift and schedule |
| 🧰 Skills, licenses and education | 📅 Date posted and date listed on Indeed | ⚡ Urgently hiring, hiring multiple candidates |
| ✅ Easily apply flag | 🔗 Indeed job link and the employer's own job link | 📝 Full description (text and HTML) |
| 🏭 Company industry, size, revenue | 🏛️ Headquarters, CEO and CEO approval | 🌐 Company website, logo and social links |

### How to scrape Indeed

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Indeed Jobs Scraper**.
3. Enter search keywords and a location, pick the country, or paste Indeed links, one per line.
4. Set filters if you want them, how many jobs to save, and whether to include full job details.
5. Click **Start**, then download the jobs as Excel, CSV, JSON or HTML.

### How much does it cost to scrape Indeed jobs?

You pay only for the rows you get: one price for a job from the list, a higher one for a job with full details (full description and company profile), and one for a company profile.

| Apify plan | Jobs per 1,000 | Jobs with full details per 1,000 | Company profiles per 1,000 |
|---|---|---|---|
| Free | $0.10 | $0.20 | $0.50 |
| Starter (Bronze) | $0.09 | $0.18 | $0.45 |
| Scale (Silver) | $0.08 | $0.16 | $0.40 |
| Business (Gold) and higher | $0.07 | $0.14 | $0.35 |

Platform usage is included in these prices, so there is nothing else to pay. For example, 1,000 jobs cost $0.10 on the Free plan and $0.07 on Business, and 1,000 jobs with full details cost $0.20 on the Free plan.

Every Apify account gets **$5 of free usage each month**, so you can try it at no cost. **Max results** keeps the cost of a run under control, and you can also set a maximum cost per run. See the **Pricing** tab for details.

### ⬇️ Input

| Setting | What it does |
|---|---|
| **What to scrape** | Jobs, or company profiles. One kind per run |
| **Search keywords** | Job titles, skills or companies, like `registered nurse`. Each keyword is its own search |
| **Location** | City, state, region or postal code, like `New York, NY`, `Toronto, ON`, `10001` or `Remote`. Leave empty for the whole country |
| **Country** | Which Indeed site to search, like United States, United Kingdom, Canada, Germany or India |
| **Distance** | How far around the location to look (miles in the US and UK, kilometres elsewhere) |
| **Indeed links** | Search pages with any filters, job pages (`https://www.indeed.com/viewjob?jk=...`) and company pages (`https://www.indeed.com/cmp/Starbucks`), from any Indeed country |
| **Max results** | The most rows to save in the whole run (default 100) |
| **Include full job details** | Adds the full description and the company profile. Turn it off for a cheaper list with the main fields and a short snippet |
| **Date posted, Job type, Remote or on-site, Experience level, Minimum pay, Pay period, Easily apply only, Company** | The same filters as on Indeed. Several choices in one filter mean any of them |
| **Company names** | For a company run: company names or company page links |

Connection settings: the default works for most runs.

Nurses in Austin posted in the last 3 days, full-time or part-time, with full details:

```json
{
  "keywords": ["registered nurse"],
  "location": "Austin, TX",
  "country": "US",
  "datePosted": "3",
  "jobTypes": ["full_time", "part_time"],
  "maxResults": 500
}
```

Remote senior software jobs paying at least $120,000 a year:

```json
{
  "keywords": ["software engineer"],
  "workSettings": ["remote"],
  "experienceLevels": ["senior_level"],
  "salaryMin": 120000,
  "salaryPeriod": "year",
  "maxResults": 1000
}
```

Jobs from Indeed links in the UK and Germany:

```json
{
  "startUrls": [
    "https://uk.indeed.com/jobs?q=nurse&l=London",
    "https://de.indeed.com/jobs?q=pflege&l=Berlin"
  ],
  "maxResults": 200
}
```

Company profiles:

```json
{
  "scrapeType": "companies",
  "companies": ["Google", "Walmart", "https://uk.indeed.com/cmp/Tesco"]
}
```

### ⬆️ Output

Every job is one row. A job with full details:

```json
{
  "jobKey": "5498e763d9315ca7",
  "url": "https://www.indeed.com/viewjob?jk=5498e763d9315ca7",
  "title": "Software Engineer III - Full Stack",
  "normalizedTitle": "senior software engineer",
  "companyName": "JPMorganChase",
  "companyKey": "6a4f92264916b111",
  "companyUrl": "https://www.indeed.com/cmp/Jpmorganchase-2",
  "companyRating": 3.9,
  "companyReviewCount": 20436,
  "location": "Jersey City, NJ 07310",
  "city": "Jersey City",
  "state": "NJ",
  "postalCode": "07310",
  "streetAddress": "575 Washington Boulevard",
  "countryCode": "US",
  "latitude": 40.728752,
  "longitude": -74.03531,
  "isRemote": false,
  "workSetting": null,
  "jobTypes": ["Full-time"],
  "experienceLevel": "Senior level",
  "schedule": [],
  "benefits": ["Health insurance", "Tuition reimbursement", "Retirement plan"],
  "qualifications": ["AI models", "Rapid prototyping", "Software engineering", "Database systems", "CSS"],
  "salaryText": "$137,750 - $185,000 a year",
  "salaryMin": 137750,
  "salaryMax": 185000,
  "salaryPeriod": "year",
  "salaryCurrency": "USD",
  "salaryIsEstimate": false,
  "postedAt": "2026-10-02T05:00:00Z",
  "listedAt": "2026-10-02T23:25:45Z",
  "isUrgentHire": false,
  "isHighVolumeHiring": false,
  "easyApply": false,
  "externalUrl": "https://JPMorganChase.contacthr.com/153807691",
  "sourceName": "JPMorgan Chase",
  "occupations": ["Software Development Occupations", "Technology Occupations"],
  "language": "en",
  "snippet": "JOB DESCRIPTION We have an exciting and rewarding opportunity for you to take your software engineering career to the next level. As a Software Engineer III at JPMorganChase within the Consumer & Community Banking Wealth Management, you serve as a seasoned member of an agile team to design and…",
  "descriptionText": "JOB DESCRIPTION\n\nWe have an exciting and rewarding opportunity for you to take your software engineering career to the next level...",
  "descriptionHtml": "<div><b>JOB DESCRIPTION</b><br>\n<br>\n<br>\n<p>We have an exciting and rewarding opportunity...</div>",
  "companyIndustry": "Banking & Lending",
  "companySize": "10,000+",
  "companyRevenue": "more than $10B (USD)",
  "companyHeadquarters": "New York, NY",
  "companyDescription": "JPMorgan Chase is one of the world's oldest, largest and best-known financial institutions...",
  "companyCeo": null,
  "companyCeoApproval": 85,
  "companyWebsite": "https://www.jpmorganchase.com/",
  "companyLogo": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/256x256/62e186e96c7550325814ef6880fae379",
  "source": "software engineer in New York, NY",
  "scrapedAt": "2026-10-03T01:43:42Z"
}
```

Without full details, a job has the same fields, with a short `snippet` instead of the description and no company profile. A company run saves one row per company with `companyName`, `companyRating`, `companyReviewCount`, `companyCeoApproval`, `companyIndustry`, `companySize`, `companyRevenue`, `companyHeadquarters`, `companyAddresses`, `companyDescription`, `companyCeo`, `companyWebsite`, `companyLogo`, `companyStockSymbol` and the company's Facebook, X and Instagram links.

The **Overview** tab lists the jobs, the **Job details** tab shows pay, benefits and descriptions, and the **Companies** tab shows company profiles. The run report says about how many jobs match each search and names any job or company that is not on Indeed.

### How can I use Indeed data?

- **Job market research:** count openings by role, city, country and company over time
- **Salary benchmarking:** compare pay ranges for a role across cities and employers
- **Lead generation for recruiters and staffing agencies:** find companies that are hiring right now, with their size and industry
- **Job boards and aggregators:** fill your own site with fresh jobs and full descriptions
- **Competitor hiring intelligence:** follow what roles a company opens, where, and at what pay
- **Benefits and remote-work studies:** see which employers offer which benefits and remote or hybrid work

### How many jobs can I get?

Indeed itself shows at most 1,000 jobs for one search. This scraper goes past that, so one keyword can give tens of thousands of jobs; the run report lists any search it could not get in full. A job found by several keywords or links is saved once. **Max results** counts rows for the whole run, across every keyword and link.

### ❓FAQ

#### How much does it cost to scrape Indeed?

$0.10 per 1,000 jobs, $0.20 per 1,000 jobs with full details and $0.50 per 1,000 company profiles on the Free plan, less on higher plans. See "How much does it cost to scrape Indeed jobs?" above for every plan.

#### How many jobs can I get from one search?

Tens of thousands per keyword, more than the 1,000 Indeed itself shows for one search. A job found by several keywords or links is saved once, and **Max results** sets the most rows for the whole run.

#### Which countries are supported?

All 62 Indeed country sites, including the United States, United Kingdom, Canada, Australia, India, Ireland, Germany, France, the Netherlands, Spain, Italy, Japan, Brazil, Mexico, Singapore and the United Arab Emirates. Pick the country in the input, or paste links from any of them. Labels like job type and benefits come in the site's own language.

#### How are the dates given?

`postedAt` is when the employer posted the job and `listedAt` is when it appeared on Indeed, both as exact UTC times. Indeed's "Posted 3 days ago" is counted from `listedAt`, and the **Date posted** filter uses the same date.

#### Why do some jobs have no salary?

Many employers do not show pay. When a job shows none, the salary fields are empty. The **Minimum pay** filter uses Indeed's own pay filter, which can also include jobs whose pay Indeed knows but does not show.

#### Can I scrape a company's jobs?

Yes: paste its Indeed company page (`https://www.indeed.com/cmp/Starbucks`) as a link, or type its name in **Company** next to your keywords.

#### What happens with a closed job or a wrong link?

The run goes on with the other inputs, and the run report lists the jobs and companies that are not on Indeed. A link that is not an Indeed search, job or company page is named in the error message before the run starts.

#### Do I need an Indeed account?

No. The scraper reads the public jobs and company pages anyone can see without signing in. It does not collect applicant data.

#### Can I get results in real time?

Yes. Besides normal runs, the actor has a real-time API that answers with the jobs or companies directly, without starting a run:

```
GET https://<your-actor-standby-url>/search?q=registered%20nurse&l=Austin%2C%20TX&country=US
GET https://<your-actor-standby-url>/company?name=Starbucks
Authorization: Bearer <YOUR_API_TOKEN>
```

#### Can I connect Indeed Jobs Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape Indeed?

This scraper only collects public job listings and company information that employers chose to publish on Indeed. It does not collect private data such as applicant details, email addresses or phone numbers. Some fields, like a CEO's name, can still be personal data, which may be protected by laws such as GDPR, so only scrape it for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Indeed Jobs Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Indeed.

#### Something isn't working, or I need another field?

Open the **Issues** tab with your input and what you expected. We read every one and usually reply within a day.

### Scrape more job data

| Actor | What it gets |
|---|---|
| [LinkedIn Jobs Scraper](https://apify.com/automly/linkedin-jobs-scraper) | LinkedIn job listings with salaries, company info and full descriptions |
| [HiringCafe Jobs Scraper](https://apify.com/automly/hiringcafe-jobs-scraper) | HiringCafe jobs with apply links, salary ranges, experience and skills |
| [LinkedIn Company Employees Scraper + Emails (No Login)](https://apify.com/automly/linkedin-company-employees-scraper) | A company's employees from LinkedIn, filtered by job title, to reach hiring managers |
| [LinkedIn People Search Scraper (No Login)](https://apify.com/automly/linkedin-people-search-scraper) | LinkedIn profiles by job title, company, location or school |
| [Google Maps Scraper](https://apify.com/automly/google-maps-scraper) | Local businesses with phone, website, rating and address, for recruiter and sales leads |

### ⭐ Your feedback

Have an idea or found a problem? Tell us on the **Issues** tab. If Indeed Jobs Scraper saved you time, a short review on the **Reviews** tab helps other people find it and tells us what to improve.

# Actor input Schema

## `scrapeType` (type: `string`):

Jobs from searches and links, or company profiles (rating, reviews, size, industry, headquarters) from company names and company links. One kind per run.

## `keywords` (type: `array`):

Job titles, skills or companies to search for, one per line ("software engineer", "registered nurse", "warehouse"). Each keyword is its own search.

## `location` (type: `string`):

City, state, region or postal code, as you would type it on Indeed ("New York, NY", "London", "Toronto, ON", "10001", "Remote"). Leave empty for the whole country.

## `country` (type: `string`):

Which Indeed country site to search. Links always use their own country.

## `radius` (type: `integer`):

How far around the location to search: miles on indeed.com and uk.indeed.com, kilometres on the other sites.

## `startUrls` (type: `array`):

Paste Indeed links in any mix: search result pages with any filters you set on the site (indeed.com/jobs?q=nurse\&l=Austin%2C+TX\&fromage=3), job pages (indeed.com/viewjob?jk=...) and company pages (indeed.com/cmp/Google: its jobs, or its profile in a company run). Every country site works.

## `maxResults` (type: `integer`):

Most rows to save in the whole run, across all keywords and links.

## `includeDetails` (type: `boolean`):

Adds the full description (text and HTML) and the company profile: industry, size, revenue, headquarters, CEO, website and logo. Turn off for a cheaper list with the main fields and a short snippet.

## `datePosted` (type: `string`):

Only jobs posted in this period.

## `jobTypes` (type: `array`):

Only these job types (any of them). Leave empty for all.

## `workSettings` (type: `array`):

Only remote, hybrid or in-person jobs (any of them). Leave empty for all.

## `experienceLevels` (type: `array`):

Only these experience levels (any of them). Leave empty for all.

## `salaryMin` (type: `integer`):

Only jobs that pay at least this much, in the pay period below (for example 80000 a year or 25 an hour). Jobs that show no pay are left out when this is set.

## `salaryPeriod` (type: `string`):

The period of the minimum pay above.

## `easyApply` (type: `boolean`):

Only jobs you can apply to directly on Indeed.

## `companyName` (type: `string`):

Only jobs from this company, by its name on Indeed ("Google", "Amazon.com", "Starbucks").

## `companies` (type: `array`):

For a company run: company names as Indeed shows them ("Google", "Walmart") or company page links, one per line.

## `proxyConfiguration` (type: `object`):

The default works for most runs. If results come back empty, try a different proxy option.

## Actor input object example

```json
{
  "scrapeType": "jobs",
  "keywords": [
    "software engineer"
  ],
  "location": "New York, NY",
  "country": "US",
  "radius": 25,
  "maxResults": 20,
  "includeDetails": true,
  "datePosted": "any",
  "salaryPeriod": "year",
  "easyApply": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

No description

## `details` (type: `string`):

No description

## `companies` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "software engineer"
    ],
    "location": "New York, NY",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/indeed-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["software engineer"],
    "location": "New York, NY",
    "maxResults": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/indeed-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "software engineer"
  ],
  "location": "New York, NY",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call automly/indeed-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/indeed-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/lgiYXeZzz8hDJRvxz/builds/TH6RFlGf9KALW7glx/openapi.json
