# Indeed Jobs Scraper (`scrapesmith/indeed-jobs-scraper`) Actor

🔥 ~$0.06/1K l Scrape Indeed jobs by keyword & location in any country — title, company, salary, job type, skills and full description. Thousands per run, export to JSON/CSV/Excel. No cookies, no login.

- **URL**: https://apify.com/scrapesmith/indeed-jobs-scraper.md
- **Developed by:** [Scrape Smith](https://apify.com/scrapesmith) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.05 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Indeed Jobs Scraper 🔎 — Salary, Company & Full Description

Extract **clean, structured job listings from Indeed** at scale — title, company, location, **salary**, job type, **required skills**, **full job description**, posting date and more. Search by keyword and location, paginate deep, and export to **JSON, CSV, or Excel**.

Fast, reliable, and built to collect **thousands of jobs per run** without missing data.

---

### ✨ What you get

- **Full job descriptions** on every result (HTML + clean text) — not just snippets.
- **Salary** (range or estimate), **job type** (full-time, part-time, contract…), and **skills/tags**.
- **Company** name, profile link, and logo.
- **Precise location** — city, state, country, postal code, street address, and coordinates.
- **Posting date**, remote flag, occupation categories, urgent/high-volume hiring signals.
- **20+ Indeed countries** and **any location** you want.
- **Deep collection** — go far beyond a single page, by location and by date posted.

### 🌍 Works anywhere

United States, United Kingdom, Canada, Australia, India, Germany, France, Spain, Italy, Netherlands, Ireland, Singapore, New Zealand, South Africa, Brazil, Mexico, UAE, Philippines, Poland, Sweden, Pakistan — and more.

---

### 🚀 Quick start

1. Enter one or more **search keywords** (e.g. `software engineer`, `registered nurse`).
2. Set a **location** (e.g. `New York, NY` or `Remote`) and pick the **country**.
3. (Optional) Add more **locations** and a **"last N days"** value to collect more.
4. Click **Start**. Export the results as JSON / CSV / Excel.

#### Example input

```json
{
  "queries": ["software engineer"],
  "country": "us",
  "location": "New York, NY",
  "maxItemsPerQuery": 1000,
  "scrapeDescription": true
}
````

#### Collect a lot more for the same search

Indeed shows up to ~1,000 results per individual search. To go beyond that:

- **By time** — set **Collect jobs posted in the last N days** to gather every job for the *same* keyword and location across a date range.
- **By place** — add multiple **Locations**; every keyword runs against every location.

```json
{
  "queries": ["software engineer"],
  "country": "us",
  "locations": ["New York, NY", "San Francisco, CA", "Austin, TX", "Remote"],
  "datePostedDays": 14
}
```

***

### 📦 Output fields

| Field | Description |
|------|-------------|
| `title` | Job title |
| `company`, `companyUrl`, `companyLogo` | Employer name, profile link, logo |
| `locationText`, `city`, `state`, `country`, `postalCode`, `streetAddress` | Location detail |
| `latitude`, `longitude` | Coordinates |
| `isRemote` | Remote flag |
| `salary` | Pay range / estimate (when posted) |
| `jobTypes` | Full-time, Part-time, Contract, etc. |
| `skills`, `attributes` | Skills and job tags |
| `categories` | Occupation categories |
| `descriptionHtml`, `descriptionText` | Full job description |
| `datePublished` | When the job was posted |
| `isUrgentHire`, `isHighVolumeHiring` | Hiring signals |
| `url`, `jobkey` | Link and unique ID |

> Some fields (e.g. salary, job type, street address) appear only when the employer provides them.

#### Example output

```json
{
  "title": "Senior Software Engineer",
  "company": "Acme Corp",
  "companyLogo": "https://…/logo.png",
  "locationText": "New York, NY 10001",
  "city": "New York", "state": "NY", "country": "US",
  "latitude": 40.7128, "longitude": -74.006,
  "isRemote": false,
  "salary": "$140,000 - $180,000 a year",
  "jobTypes": ["Full-time"],
  "skills": ["Python", "AWS", "Distributed systems"],
  "categories": ["Software Development Occupations"],
  "descriptionText": "About the role …",
  "datePublished": "2026-06-08T00:00:00.000Z",
  "url": "https://www.indeed.com/viewjob?jk=…"
}
```

***

### 💡 Use cases

- **Job boards & aggregators** — keep listings fresh and complete.
- **Recruitment & sourcing** — track who's hiring, where, and for what skills.
- **Market & salary research** — analyze pay, demand, and hiring trends by role and region.
- **Lead generation** — find companies actively hiring.
- **AI / ML datasets** — full descriptions for training and analysis.

### ⚙️ Inputs at a glance

- **Search keywords** (`queries`)
- **Location** (`location`) and **Locations** (`locations`) for breadth
- **Country** (`country`)
- **Collect jobs posted in the last N days** (`datePostedDays`)
- **Max jobs per search** (`maxItemsPerQuery`) and **Max total items** (`maxItems`)
- **Include full job descriptions** (`scrapeDescription`)
- **Start URLs** (`startUrls`) — paste Indeed search URLs directly
- **Proxy** — leave the default on

### ❓ FAQ

**How many jobs can I get per search?**
A single keyword+location returns up to ~1,000. Use multiple locations and/or "last N days" to collect far more.

**Do I need login or cookies?**
No. Just enter your search and run.

**Which formats can I export?**
JSON, CSV, Excel, and HTML table — via the dataset, API, or integrations.

**Is a proxy required?**
Yes — keep the default proxy setting on for reliable results.

***

#### Support

If a run shows a code like `QZ-610` or `QZ-620`, it's usually a temporary network hiccup — **just run it again**. If it persists, contact support with the code and we'll sort it out quickly.

# Actor input Schema

## `queries` (type: `array`):

Job titles / keywords to search, e.g. 'software engineer', 'registered nurse'. Each is searched separately.

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

City, state, or ZIP to search in (e.g. 'New York, NY' or 'Remote'). Leave empty for the whole country.

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

Which Indeed country to search.

## `datePostedDays` (type: `integer`):

A single search returns up to ~1,000 jobs. Set this to collect ALL jobs posted in the last N days for your keyword + location (far more than 1,000). Leave 0 for a single newest-first search.

## `scrapeDescription` (type: `boolean`):

Include each job's full description (HTML + text). Leave off for a lighter payload; title, company, salary, location, skills, etc. are always included.

## `maxItemsPerQuery` (type: `integer`):

Maximum jobs to collect per keyword. A single search caps at ~1,000; with 'Collect jobs posted in the last N days' it can go much higher.

## `maxItems` (type: `integer`):

Hard cap on total jobs across all keywords. Leave empty for no extra cap.

## Actor input object example

```json
{
  "queries": [
    "software engineer"
  ],
  "country": "us",
  "datePostedDays": 0,
  "scrapeDescription": true,
  "maxItemsPerQuery": 1000
}
```

# 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 = {
    "queries": [
        "software engineer"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesmith/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 = { "queries": ["software engineer"] }

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

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

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

```

## CLI example

```bash
echo '{
  "queries": [
    "software engineer"
  ]
}' |
apify call scrapesmith/indeed-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesmith/indeed-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Indeed Jobs Scraper",
        "description": "🔥 ~$0.06/1K l Scrape Indeed jobs by keyword & location in any country — title, company, salary, job type, skills and full description. Thousands per run, export to JSON/CSV/Excel. No cookies, no login.",
        "version": "0.0",
        "x-build-id": "7epbYBgCEawVhlwN6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapesmith~indeed-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapesmith-indeed-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapesmith~indeed-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapesmith-indeed-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapesmith~indeed-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapesmith-indeed-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "queries": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "Job titles / keywords to search, e.g. 'software engineer', 'registered nurse'. Each is searched separately.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, state, or ZIP to search in (e.g. 'New York, NY' or 'Remote'). Leave empty for the whole country."
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "us",
                            "uk",
                            "ca",
                            "au",
                            "in",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "nl",
                            "ie",
                            "sg",
                            "nz",
                            "za",
                            "br",
                            "mx",
                            "ae",
                            "ph",
                            "pl",
                            "se",
                            "pk"
                        ],
                        "type": "string",
                        "description": "Which Indeed country to search.",
                        "default": "us"
                    },
                    "datePostedDays": {
                        "title": "Collect jobs posted in the last N days",
                        "minimum": 0,
                        "maximum": 60,
                        "type": "integer",
                        "description": "A single search returns up to ~1,000 jobs. Set this to collect ALL jobs posted in the last N days for your keyword + location (far more than 1,000). Leave 0 for a single newest-first search.",
                        "default": 0
                    },
                    "scrapeDescription": {
                        "title": "Include full job descriptions",
                        "type": "boolean",
                        "description": "Include each job's full description (HTML + text). Leave off for a lighter payload; title, company, salary, location, skills, etc. are always included.",
                        "default": true
                    },
                    "maxItemsPerQuery": {
                        "title": "Max jobs per keyword",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum jobs to collect per keyword. A single search caps at ~1,000; with 'Collect jobs posted in the last N days' it can go much higher.",
                        "default": 1000
                    },
                    "maxItems": {
                        "title": "Max total items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on total jobs across all keywords. Leave empty for no extra cap."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
