# Indeed Jobs Scraper 💼 Salaries, Filters & Company Data (`factden/indeed-jobs-scraper`) Actor

$2/1K results · Scrape Indeed job listings with salaries, full descriptions and company profiles. Advanced filters (salary range, remote, date, job type, experience), all result pages, 60+ countries. No blocking. Free trial 🚀

- **URL**: https://apify.com/factden/indeed-jobs-scraper.md
- **Developed by:** [FactDen](https://apify.com/factden) (community)
- **Categories:** Jobs, Automation, Integrations
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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 | Salaries, Filters & Company Data API (2026)

**Scrape Indeed job listings at scale — with salaries, full descriptions, and free company profiles — across 60+ countries.** This Indeed scraper is the only one with a **native salary-range filter**, it returns **every result page** (not just the first), and it enriches each employer with a **free** company profile in a separate dataset.

> ⚡ **No login, no proxy setup, no anti-bot tuning, no CAPTCHA work** — it's a pure-API scraper (no fragile browser/HTML path), all handled inside the actor.

> 💰 **$2 / 1,000 jobs · company profiles are free · free trial.** New Apify users get a **$5 credit (~2,500 jobs)** on the first run.

**Contents:** [What's different](#whats-different-about-this-indeed-scraper) · [Indeed API vs this](#indeeds-official-api-vs-this-scraper) · [Use cases](#common-use-cases) · [Input](#input) · [Output](#output) · [Pricing](#pricing--how-much-does-it-cost-to-scrape-indeed) · [FAQ](#faq)

### What's different about this Indeed scraper

Most Indeed scrapers do the same basic search. These are the things **competitors don't offer**:

- 🏆 **Native salary-range filter** — filter at the source by minimum/maximum annual salary. Almost every other scraper makes you pull everything and filter afterward.
- 🏆 **Every result page** — auto date-window sharding breaks past Indeed's ~1,000-result depth ceiling, with honest *retrieved-vs-estimated* coverage reporting (no silent truncation).
- 🏆 **Free company profiles** — rating, review count, company size, industry, CEO, founded, revenue, website, and socials, in a **separate dataset you're not billed for**.
- 🏆 **Pure-API & reliable** — talks to Indeed's structured API, not a scraped HTML page, so there's no browser/Cloudflare surface to break.

> **Quick start (30 seconds):** open the **Input** tab (it's pre-filled), set a **keyword** + **location**, click **Start**. Results stream into the **Output** tab — download as JSON, CSV, or Excel.

**No-setup checklist** — what other scrapers make you handle yourself:

- **No login** or Indeed account (public data only)
- **No proxy** configuration (Apify proxy bundled)
- **No anti-bot** tuning (handled inside the actor)
- **No CAPTCHA** handling
- **No code** for the form-based flow

### Indeed's official API vs this scraper

Indeed's Publisher API is closed to new applicants and never exposed job-search filters or company data the way this actor does.

| | Indeed Publisher API | This actor |
|---|---|---|
| Access | Closed / approval-gated | Apify account (free signup) |
| Setup time | Application + review | ~30 seconds |
| **Salary-range filter** | — | ✅ native |
| **All result pages** (past the ~1,000 cap) | — | ✅ auto date-sharding |
| **Free company profiles** | — | ✅ separate dataset, unbilled |
| Remote / date / type / level filters | limited | ✅ |
| Schedule / webhook delivery | bring your own | ✅ native via Apify |

### What does the Indeed Jobs Scraper do?

Enter a search (or paste Indeed search/job URLs, or job keys) and it returns:

- **Jobs** — one structured row per listing, with the full description inline (no extra request).
- **Companies** *(optional, free)* — one deduped row per unique employer, with profile + ratings + firmographics.

Output renders in the run's **Output** tab with a dataset dropdown (**Jobs** / **Companies**). Download as JSON, CSV, or Excel, or pull via the Apify API.

<p align="center"><img src="https://raw.githubusercontent.com/factden/apify-actor-assets/main/indeed-jobs-scraper/01-input-form.png" width="520" alt="Indeed Jobs Scraper input form on Apify Console — search keyword, location, country, the native salary-range filter, and a free company-profiles toggle"></p>

### Who it's for

- **Recruiting & sourcing** — monitor live openings by role, location, and company; build talent pipelines.
- **Salary benchmarking** — per-job pay ranges and compensation trends by title + market (with the native salary-range filter).
- **Market & competitive research** — track competitor hiring activity, hiring demand, company growth, and ratings.
- **Skills & labor-market analysis** — measure demand for specific skills, roles, and experience levels by region.
- **Lead generation** — find companies actively hiring, with firmographics.
- **Data enrichment & ML** — append company ratings/firmographics to your datasets, or feed job-recommendation/matching models and academic employment research.

More ideas on Apify's [industry pages](https://apify.com/industries).

### Common use cases

**1. Salary benchmark for a role + market** (the native filter no competitor has):
```json
{ "query": "software engineer", "location": "San Francisco, CA", "salaryMin": 150000, "maxItems": 500 }
````

**2. Fresh remote roles posted this week:**

```json
{ "query": "data analyst", "location": "Remote", "remote": "remote", "datePosted": "7", "sort": "date" }
```

**3. Jobs + free company firmographics:**

```json
{ "query": "registered nurse", "location": "Chicago, IL", "scrapeCompany": true, "maxItems": 200 }
```

**4. Look up specific jobs by key (refresh known listings):**

```json
{ "jobKeys": ["6e4040455f842cbd", "cc2175979cc7dfce"], "scrapeCompany": true }
```

### How to scrape Indeed jobs

1. Enter a **search keyword** and **location** (or paste Indeed **search/job URLs**, or **job keys**).
2. Pick a **country** and optional **filters** (salary range, remote, date, job type, experience level).
3. Optionally toggle **company profiles** (free).
4. Click **Start** — results stream to the dataset as structured JSON (export to CSV, Excel, JSON, or API).

### Input

| Field | Type | Notes |
|---|---|---|
| `query` | string | Job title / keywords (e.g. "software engineer") |
| `location` | string | City, region, postal code, or "remote" — **must match the chosen country** |
| `country` | enum | 60+ Indeed country sites (US, GB, CA, AU, IN, DE, FR, …) |
| `maxItems` | int | Cap per run; `0` = no limit (date-sharded past the ~1,000 ceiling) |
| `sort` | enum | `relevance` / `date` |
| `radius` | int | Distance from location (unit auto by country) |
| `datePosted` | enum | last 1 / 3 / 7 / 14 days |
| `jobType` | array | full-time, part-time, contract, temporary, internship, per diem |
| `remote` | enum | remote / hybrid |
| `experienceLevel` | enum | entry / mid / senior |
| `salaryMin` / `salaryMax` | int | **Native annual salary-range filter** |
| `scrapeCompany` | bool | Add the free company-profile dataset (default on) |
| `startUrls` | array | Indeed search or job URLs to scrape directly |
| `jobKeys` | array | Indeed `jk=` values for exact lookup |

### Output

Two datasets, joinable by `companyKey`. Company rows are **free** — you're billed per job only.

<p align="center"><img src="https://raw.githubusercontent.com/factden/apify-actor-assets/main/indeed-jobs-scraper/02-output-jobs-overview.png" width="900" alt="Indeed Jobs Scraper Jobs output — Overview table with title, company, rating, reviews, job category, location, salary, type, remote, and date-posted columns"></p>

**Jobs** (one representative row):

```json
{
  "jobKey": "6d50b3ebeb3fb122",
  "title": "Senior Software Engineer",
  "company": "Plaid",
  "companyRating": 4.1,
  "companyReviewCount": 312,
  "companyPageUrl": "https://www.indeed.com/cmp/Plaid",
  "location": "New York, NY",
  "city": "New York", "state": "NY", "countryCode": "US",
  "latitude": 40.7142, "longitude": -74.0059,
  "salary": "$120,000 - $160,000 a year",
  "salaryMin": 120000, "salaryMax": 160000, "salaryPeriod": "YEAR", "currency": "USD",
  "jobType": ["Full-time"],
  "occupations": ["Software Development Occupations", "Back End Developers"],
  "remote": "remote",
  "datePosted": "2026-06-10",
  "benefits": ["Health insurance", "401(k)"],
  "description": "…full job description…",
  "isUrgentHire": false,
  "easyApply": true,
  "url": "https://www.indeed.com/viewjob?jk=6d50b3ebeb3fb122"
}
```

**Companies** *(when `scrapeCompany` is on — free)*:

```json
{
  "companyKey": "2434d16763f36e79",
  "company": "Plaid",
  "rating": 4.1,
  "reviewCount": 312,
  "industry": "Internet and Software",
  "employees": "1,001-5,000",
  "revenue": "$100M-$500M",
  "ceo": "Zach Perret",
  "founded": 2013,
  "website": "https://plaid.com",
  "companyPageUrl": "https://www.indeed.com/cmp/Plaid",
  "facebook": "…", "twitter": "…", "instagram": "…"
}
```

<p align="center"><img src="https://raw.githubusercontent.com/factden/apify-actor-assets/main/indeed-jobs-scraper/03-output-companies-overview.png" width="900" alt="Indeed Jobs Scraper Companies dataset — free company profiles with rating, review count, employee size, and website, joined to jobs by companyKey"></p>

You can download the dataset in JSON, CSV, Excel, or via the API.

### Pricing — how much does it cost to scrape Indeed?

Pay-per-event: **$0.01 per run + $2 per 1,000 job rows**. **Company-profile rows are free**, and platform compute is included (no separate usage charge).

| Example | Cost |
|---|---|
| 100 jobs | ~$0.21 |
| 1,000 jobs | ~$2.01 |
| 10,000 jobs | ~$20.01 |

**Tiered discounts apply automatically** by Apify plan: $2.00 → $1.80 (Starter) → $1.50 (Scale) → **$1.20 / 1,000 on Business** (40% off). The Apify [Free plan](https://apify.com/pricing) includes **$5/month** of usage — about **2,500 jobs free every month**.

### Run on a schedule / Indeed jobs API

This actor doubles as an **Indeed jobs API** — call it from the [Apify API](https://docs.apify.com/api/v2) or the [Python](https://docs.apify.com/api/client/python) / [JS](https://docs.apify.com/api/client/js) clients, and use Apify [Schedules](https://docs.apify.com/platform/schedules) + [Webhooks](https://docs.apify.com/platform/integrations/webhooks) for incremental pulls (set `datePosted` to the last day and run daily).

**Python**

```python
from apify_client import ApifyClient

## Get your token from https://console.apify.com/account/integrations?fpr=factden
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("factden/indeed-jobs-scraper").call(run_input={
    "query": "software engineer", "location": "New York, NY",
    "salaryMin": 150000, "maxItems": 200,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(job["title"], job["company"], job.get("salary"))
```

### FAQ

**Does it get all jobs or just the first page?** All result pages, up to your `maxItems`. It auto-shards by date window to break past Indeed's ~1,000-result depth ceiling, and reports retrieved-vs-estimated totals so you always know your coverage.

**Can I filter by salary?** Yes — a **native** salary-range filter (`salaryMin`/`salaryMax`), which most Indeed scrapers don't support.

**Is company data really free?** Yes. Company-profile rows go to a separate dataset that isn't billed — you only pay per job row.

**What's the `occupations` field?** Indeed's job-category taxonomy (e.g. "Software Development Occupations", "Back End Developers") — populated per job, useful for filtering/segmenting by category.

**Which countries are supported?** 60+ Indeed country sites (US, UK, Canada, Australia, India, Germany, France, and more). Make sure the `location` belongs to the chosen `country`.

**Do I need an Indeed account or API key?** No login, account, or proxy setup required.

**How much does it cost?** ~$2 per 1,000 jobs, with a free trial; company profiles are free.

**Is scraping Indeed legal?** This actor collects only publicly available data. Note that personal data is protected by GDPR (EU) and similar laws elsewhere — don't scrape personal data without a legitimate reason, and consult your lawyers if unsure. You are responsible for complying with Indeed's terms and applicable laws. See Apify's guide: [is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

### More from factden

Researching software products? See our sibling actor **[G2 Reviews Scraper](https://apify.com/factden/g2-reviews-scraper?fpr=factden)** for B2B SaaS competitive intelligence and AI/RAG ingestion.

Hotel review data? See **[Trip.com & Ctrip Hotel Reviews Scraper](https://apify.com/factden/ctrip-trip-reviews-scraper?fpr=factden)** for hospitality competitive intelligence and AI/RAG ingestion.

***

*Built by [factden](https://apify.com/factden?fpr=factden) on the Apify platform. **Try the Indeed Jobs Scraper free** with Apify's $5 monthly credit.*

***

*Keywords: indeed scraper, indeed jobs scraper, indeed api, scrape indeed, indeed job listings, indeed salary scraper, indeed company data, job board scraper.*

# Actor input Schema

## `query` (type: `string`):

Job title, keywords, or company to search for (e.g. "software engineer", "registered nurse"). Leave empty to scrape all jobs in the location.

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

City, state/region, postal code, or "remote" (e.g. "New York, NY", "London", "90210").

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

Indeed country to search. 60+ supported. Switches the regional Indeed index.

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

Maximum number of job listings to return across all result pages. Set 0 for no limit (capped by Indeed's depth ceiling — the run reports retrieved vs. estimated totals).

## `sort` (type: `string`):

Result ordering.

## `scrapeCompany` (type: `boolean`):

Also pull each company's profile: rating, reviews, size, CEO, founded, revenue, website & socials. Free — you're only billed per job.

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

Distance from the location to include (0 = exact location only). Unit is set automatically by country — miles for US/UK/CA/AU/IE/NZ/IN/ZA, kilometers elsewhere.

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

Only jobs posted within this window.

## `jobType` (type: `array`):

Filter by employment type (multiple allowed).

## `remote` (type: `string`):

Filter to remote or hybrid roles. Leave as Any for no filter.

## `experienceLevel` (type: `string`):

Filter by required experience level. Leave as Any for no filter.

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

Only jobs paying at least this much per year (native Indeed salary-range filter — most scrapers can't do this).

## `salaryMax` (type: `integer`):

Only jobs paying at most this much per year.

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

Indeed search URLs (e.g. .../jobs?q=...\&l=...) or job URLs (.../viewjob?jk=...) to scrape directly, in addition to the keyword search above.

## `jobKeys` (type: `array`):

Indeed job keys (the jk= value) to fetch directly — fast, exact lookup of known jobs. Works with or without a search.

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

Residential or mobile proxies are strongly recommended for reliability at scale.

## Actor input object example

```json
{
  "query": "software engineer",
  "location": "New York, NY",
  "country": "US",
  "maxItems": 100,
  "sort": "relevance",
  "scrapeCompany": true,
  "radius": 25,
  "datePosted": "",
  "jobType": [],
  "remote": "",
  "experienceLevel": "",
  "startUrls": [],
  "jobKeys": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Per-job rows: title, company, rating, location, parsed salary, job type, remote, date posted, category, full description.

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

Per-employer rows (when company enrichment is on): rating, review count, industry, CEO, founded, revenue, website, socials. Free — billing is per job only.

# 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 = {
    "query": "software engineer",
    "location": "New York, NY"
};

// Run the Actor and wait for it to finish
const run = await client.actor("factden/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 = {
    "query": "software engineer",
    "location": "New York, NY",
}

# Run the Actor and wait for it to finish
run = client.actor("factden/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 '{
  "query": "software engineer",
  "location": "New York, NY"
}' |
apify call factden/indeed-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Indeed Jobs Scraper 💼 Salaries, Filters & Company Data",
        "description": "$2/1K results · Scrape Indeed job listings with salaries, full descriptions and company profiles. Advanced filters (salary range, remote, date, job type, experience), all result pages, 60+ countries. No blocking. Free trial 🚀",
        "version": "1.0",
        "x-build-id": "fW4DUfcCGbkcBYBnW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/factden~indeed-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-factden-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/factden~indeed-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-factden-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/factden~indeed-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-factden-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": {
                    "query": {
                        "title": "🔍 Search keywords",
                        "type": "string",
                        "description": "Job title, keywords, or company to search for (e.g. \"software engineer\", \"registered nurse\"). Leave empty to scrape all jobs in the location."
                    },
                    "location": {
                        "title": "📍 Location",
                        "type": "string",
                        "description": "City, state/region, postal code, or \"remote\" (e.g. \"New York, NY\", \"London\", \"90210\")."
                    },
                    "country": {
                        "title": "🌍 Country",
                        "enum": [
                            "US",
                            "GB",
                            "CA",
                            "AU",
                            "IN",
                            "IE",
                            "NZ",
                            "ZA",
                            "SG",
                            "AE",
                            "DE",
                            "FR",
                            "NL",
                            "ES",
                            "IT",
                            "BE",
                            "CH",
                            "AT",
                            "SE",
                            "NO",
                            "DK",
                            "FI",
                            "PL",
                            "PT",
                            "GR",
                            "BR",
                            "MX",
                            "AR",
                            "CL",
                            "CO",
                            "PE",
                            "JP",
                            "KR",
                            "HK",
                            "TW",
                            "PH",
                            "MY",
                            "ID",
                            "TH",
                            "VN"
                        ],
                        "type": "string",
                        "description": "Indeed country to search. 60+ supported. Switches the regional Indeed index.",
                        "default": "US"
                    },
                    "maxItems": {
                        "title": "💯 Max jobs",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of job listings to return across all result pages. Set 0 for no limit (capped by Indeed's depth ceiling — the run reports retrieved vs. estimated totals).",
                        "default": 100
                    },
                    "sort": {
                        "title": "🔀 Sort by",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "Result ordering.",
                        "default": "relevance"
                    },
                    "scrapeCompany": {
                        "title": "🏢 Company profiles (free)",
                        "type": "boolean",
                        "description": "Also pull each company's profile: rating, reviews, size, CEO, founded, revenue, website & socials. Free — you're only billed per job.",
                        "default": true
                    },
                    "radius": {
                        "title": "📡 Search radius",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Distance from the location to include (0 = exact location only). Unit is set automatically by country — miles for US/UK/CA/AU/IE/NZ/IN/ZA, kilometers elsewhere.",
                        "default": 25
                    },
                    "datePosted": {
                        "title": "📅 Date posted",
                        "enum": [
                            "",
                            "1",
                            "3",
                            "7",
                            "14"
                        ],
                        "type": "string",
                        "description": "Only jobs posted within this window.",
                        "default": ""
                    },
                    "jobType": {
                        "title": "💼 Job type",
                        "type": "array",
                        "description": "Filter by employment type (multiple allowed).",
                        "items": {
                            "type": "string",
                            "enum": [
                                "fulltime",
                                "parttime",
                                "contract",
                                "temporary",
                                "internship",
                                "perdiem"
                            ],
                            "enumTitles": [
                                "Full-time",
                                "Part-time",
                                "Contract",
                                "Temporary",
                                "Internship",
                                "Per diem"
                            ]
                        },
                        "default": []
                    },
                    "remote": {
                        "title": "🏠 Remote / on-site",
                        "enum": [
                            "",
                            "remote",
                            "hybrid"
                        ],
                        "type": "string",
                        "description": "Filter to remote or hybrid roles. Leave as Any for no filter.",
                        "default": ""
                    },
                    "experienceLevel": {
                        "title": "🧑‍🎓 Experience level",
                        "enum": [
                            "",
                            "entry_level",
                            "mid_level",
                            "senior_level"
                        ],
                        "type": "string",
                        "description": "Filter by required experience level. Leave as Any for no filter.",
                        "default": ""
                    },
                    "salaryMin": {
                        "title": "💰 Minimum salary (annual)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only jobs paying at least this much per year (native Indeed salary-range filter — most scrapers can't do this)."
                    },
                    "salaryMax": {
                        "title": "💰 Maximum salary (annual)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only jobs paying at most this much per year."
                    },
                    "startUrls": {
                        "title": "🔗 Start URLs (optional)",
                        "type": "array",
                        "description": "Indeed search URLs (e.g. .../jobs?q=...&l=...) or job URLs (.../viewjob?jk=...) to scrape directly, in addition to the keyword search above.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "jobKeys": {
                        "title": "🔑 Job keys (lookup mode)",
                        "type": "array",
                        "description": "Indeed job keys (the jk= value) to fetch directly — fast, exact lookup of known jobs. Works with or without a search.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "🌐 Proxy",
                        "type": "object",
                        "description": "Residential or mobile proxies are strongly recommended for reliability at scale.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
