# Indeed Jobs Scraper — Multi-Country Jobs & Salaries (`dltik/indeed-jobs-scraper`) Actor

Scrape Indeed jobs in any country (US, UK, FR, DE, CA, ES, IT, NL, AU...) by keyword + location. Get title, company, rating, salary min/max, remote, job type, posted date, snippet + full description. Deduped by jobkey. Search + job-detail modes. No rate limits or page caps.

- **URL**: https://apify.com/dltik/indeed-jobs-scraper.md
- **Developed by:** [Walid](https://apify.com/dltik) (community)
- **Categories:** Business, Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.02 / actor start

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 — Multi-Country Jobs, Salaries & Apply URLs

> Scrape Indeed jobs in any country by keyword and location. Get title, company, rating, salary, benefits, skills, GPS, the real external apply URL and full description — deduplicated, out of the box, with a residential proxy included.

⭐ **Bookmark this actor** to keep it on top of your Apify dashboard.

### What is the Indeed Jobs Scraper?

The **Indeed Jobs Scraper** extracts job listings from [Indeed](https://www.indeed.com) across 23 countries (US, UK, FR, DE, CA, AU, ES, IT, NL and more) and returns them as clean JSON or CSV. Search by keyword and location, or fetch a single job by URL, and get title, company, rating and review count, company logo, salary min/max, location with latitude/longitude, remote/hybrid model, job type, benefits, skills, posted date, hiring signals and the full description in text and HTML — plus the real external employer apply URL. The **Indeed Jobs Scraper** deduplicates by jobkey and bundles a residential proxy that clears Indeed's Cloudflare protection automatically, so it works without you setting up proxies.

### Use cases

- **Recruiting & sourcing**: Pull fresh openings by role and city with the real apply URL to reach candidates and employers directly.
- **Job board aggregation**: Feed a job site or newsletter with deduplicated Indeed listings across multiple countries.
- **Labor market research**: Track salary ranges, benefits and hiring demand for a role or region over time.
- **Sales lead generation**: Find companies that are `urgentlyHiring` or high-volume hiring as a buying signal.
- **ATS / CRM enrichment**: Enrich a job or company record with description, benefits, skills and GPS coordinates.

### Input

Set a `mode` (`search` or `job-detail`), a `country`, and a `query` + `location`. Filter by `sortBy` (date), `experienceLevel`, `workArrangement` (remote/hybrid), `jobType` and `radius`. Minimal example:

```json
{
  "mode": "search",
  "country": "us",
  "query": "python developer",
  "location": "New York",
  "maxResults": 100,
  "sortBy": "date"
}
````

### Output

One record per job, deduplicated by jobkey. A trimmed example:

```json
{
  "title": "Senior Python Developer",
  "company": "Acme Corp",
  "company_rating": 4.1,
  "location": "New York, NY",
  "latitude": 40.7128,
  "salary_min": 130000,
  "salary_max": 160000,
  "remote": "hybrid",
  "benefits": ["401(k)", "Health insurance"],
  "is_easy_apply": true,
  "apply_url": "https://boards.greenhouse.io/...",
  "job_age_days": 2,
  "url": "https://www.indeed.com/viewjob?jk=..."
}
```

### Pricing

This actor uses **PAY\_PER\_EVENT**: **$0.02 per run** (Actor start) + **$0.0015 per job** ($1.50 / 1,000 jobs). Cloudflare-challenged runs, instruction rows and the bookmark CTA are never charged, and there is no charge for failed runs.

### Automate & schedule

Schedule the **Indeed Jobs Scraper** to run daily for fresh openings, or connect it to Google Sheets, Slack, a webhook or your ATS through Apify integrations. Recurring runs keep your job feed and market data current — set it once and forget it.

### FAQ

**Is there an official Indeed API?** Indeed retired its public Publisher API for most use cases. This actor is the practical alternative — it reads public Indeed search and job pages, no API key or partner account required.

**Can I get the real employer apply URL, not the Indeed redirect?** Yes — every job record ships `apply_url` with the external employer/ATS link, and `resolveApplyUrl` can follow the redirect to the final destination.

**Which countries are supported?** 23, including US, UK, France, Germany, Canada, Australia, Spain, Italy and the Netherlands — set the `country` code and the actor routes to the right Indeed domain.

**Does it avoid duplicate jobs?** Yes — results are deduplicated by Indeed's `jobkey` across all pages.

**Will Indeed block it?** Indeed is Cloudflare-guarded, so the actor bundles a residential proxy that rotates IPs and retries on a fresh one when challenged; challenged runs that return nothing are never charged.

***

⭐ **Found this useful? Bookmark it** — Apify ranks actors by bookmarks, and the more you bookmark, the more you support the dev.

#### Related actors

- [France Travail Scraper](https://apify.com/dltik/francetravail-scraper) — French public job board, official API
- [Welcome to the Jungle Scraper](https://apify.com/dltik/welcome-to-the-jungle-scraper) — jobs, tech stack and company profiles
- [HelloWork Scraper](https://apify.com/dltik/hellowork-scraper) — French job listings

# Actor input Schema

## `mode` (type: `string`):

What to scrape. 'search' finds jobs by query + location + filters and paginates up to maxResults. 'job-detail' returns the complete record (full description, salary, benefits) for specific Indeed jobkeys or viewjob URLs.

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

Indeed country site to scrape. Routes to the right host (e.g. us=www.indeed.com, gb=uk.indeed.com, fr=fr.indeed.com, de=de.indeed.com). Also sets the Accept-Language header and default salary currency for that market.

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

Job keyword(s) to search, e.g. 'python developer', 'registered nurse', 'commercial'. Used in 'search' mode (maps to Indeed's ?q= parameter). Leave empty to browse a location only.

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

City, region, postal code or country to search within, e.g. 'New York', 'London', 'Remote', '75001'. Used in 'search' mode (maps to Indeed's ?l= parameter). Combine with 'radius' to widen the area.

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

Maximum jobs to return in 'search' mode. Indeed paginates 10 per page (start=0,10,20...); the scraper walks pages until this cap or no more cards. Deduped by jobkey. Aliases 'limit'/'max' accepted. Each result is billed at the per-event price — start small to validate output.

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

Optional search radius around the location, in the market's unit (miles for US/UK, km for metric markets). Maps to Indeed's ?radius=. Typical values: 5, 10, 25, 50. Leave empty for Indeed's default.

## `fromDays` (type: `integer`):

Only return jobs posted within the last N days (recency filter, maps to Indeed's ?fromage=). Common values: 1, 3, 7, 14. Leave empty for all dates. Great for daily monitoring pipelines.

## `jobType` (type: `string`):

Filter by employment type (maps to Indeed's ?jt=). Leave as 'any' for no filter.

## `remoteOnly` (type: `boolean`):

When true, restrict 'search' results to remote-friendly jobs using Indeed's remote facet (sc=0kf:attr(DSQF7)). Each result still carries a 'remote' field (remote/hybrid/onsite) so you can filter downstream too. Superseded by 'workArrangement' — if you set workArrangement, use that instead.

## `workArrangement` (type: `string`):

Filter 'search' results by on-site/remote arrangement (maps to Indeed's sc=0kf:attr facet). 'any' = no filter; 'remote' = fully remote jobs (attr DSQF7); 'hybrid' = hybrid jobs (attr PAXZC). This is the richer replacement for the legacy 'remoteOnly' boolean.

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

Filter 'search' results by required experience level (maps to Indeed's sc=0kf:explvl facet). 'any' = no filter; 'entry' = ENTRY\_LEVEL; 'mid' = MID\_LEVEL; 'senior' = SENIOR\_LEVEL. Combinable with workArrangement.

## `sortBy` (type: `string`):

How to order 'search' results. 'relevance' = Indeed's default ranking; 'date' = most recently posted first (appends sort=date). Use 'date' for job-alert / daily-monitoring pipelines to catch the newest postings.

## `resolveApplyUrl` (type: `boolean`):

When true (job-detail mode only), makes ONE extra proxied request per job to follow Indeed's apply redirect and reveal the FINAL external employer/ATS apply URL (e.g. the company's Workday/Greenhouse/careers-page link). Off by default — the record already includes 'apply\_url' (the employer link when Indeed exposes it directly, no extra request). This adds no separate charge but uses more proxy bandwidth, so enable it only when you specifically need the resolved destination.

## `jobUrlsOrKeys` (type: `array`):

For 'job-detail' mode: a list of Indeed jobkeys or full viewjob URLs to fetch complete records for. Accepts either form, e.g. 'https://www.indeed.com/viewjob?jk=1a2b3c4d5e6f7g8h' or just '1a2b3c4d5e6f7g8h'. Ignored in 'search' mode.

## `customProxyUrl` (type: `string`):

STRONGLY RECOMMENDED for reliable results. This target edge-blocks the shared Apify residential pool (anti-bot challenge / login-wall). When set, this single premium-unblocker URL is used as the ONLY proxy (no rotation — the unblocker handles IPs + challenge solving). Format: http://user:pass@host:port. Works with Bright Data Web Unlocker, Oxylabs Web Unblocker, ScraperAPI (proxy mode), ZenRows. Leave empty to fall back to the Apify proxy below.

## `proxyConfig` (type: `object`):

Indeed is Cloudflare / anti-bot guarded and typically blocks datacenter and direct IPs. Enable Apify Proxy with the RESIDENTIAL group for reliable results. If a Cloudflare challenge is detected the run fails-fast with instructions and does NOT charge you.

## Actor input object example

```json
{
  "mode": "search",
  "country": "us",
  "query": "python developer",
  "location": "New York, NY",
  "maxResults": 25,
  "jobType": "any",
  "remoteOnly": false,
  "workArrangement": "any",
  "experienceLevel": "any",
  "sortBy": "relevance",
  "resolveApplyUrl": false,
  "jobUrlsOrKeys": [],
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset of normalized Indeed job records scraped by keyword + location (search) or by jobkey/URL (job-detail), deduplicated by jobkey.

# 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": "python developer",
    "location": "New York, NY",
    "proxyConfig": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("dltik/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": "python developer",
    "location": "New York, NY",
    "proxyConfig": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("dltik/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": "python developer",
  "location": "New York, NY",
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call dltik/indeed-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Indeed Jobs Scraper — Multi-Country Jobs & Salaries",
        "description": "Scrape Indeed jobs in any country (US, UK, FR, DE, CA, ES, IT, NL, AU...) by keyword + location. Get title, company, rating, salary min/max, remote, job type, posted date, snippet + full description. Deduped by jobkey. Search + job-detail modes. No rate limits or page caps.",
        "version": "1.0",
        "x-build-id": "03eVPACp2Qgfq0rQf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/dltik~indeed-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-dltik-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/dltik~indeed-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-dltik-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/dltik~indeed-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-dltik-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": {
                    "mode": {
                        "title": "Scraping mode",
                        "enum": [
                            "search",
                            "job-detail"
                        ],
                        "type": "string",
                        "description": "What to scrape. 'search' finds jobs by query + location + filters and paginates up to maxResults. 'job-detail' returns the complete record (full description, salary, benefits) for specific Indeed jobkeys or viewjob URLs.",
                        "default": "search"
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "us",
                            "gb",
                            "ca",
                            "au",
                            "fr",
                            "de",
                            "es",
                            "it",
                            "nl",
                            "be",
                            "ch",
                            "at",
                            "ie",
                            "in",
                            "br",
                            "mx",
                            "pt",
                            "pl",
                            "se",
                            "sg",
                            "za",
                            "nz",
                            "jp"
                        ],
                        "type": "string",
                        "description": "Indeed country site to scrape. Routes to the right host (e.g. us=www.indeed.com, gb=uk.indeed.com, fr=fr.indeed.com, de=de.indeed.com). Also sets the Accept-Language header and default salary currency for that market.",
                        "default": "us"
                    },
                    "query": {
                        "title": "Search query (keyword)",
                        "type": "string",
                        "description": "Job keyword(s) to search, e.g. 'python developer', 'registered nurse', 'commercial'. Used in 'search' mode (maps to Indeed's ?q= parameter). Leave empty to browse a location only."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, region, postal code or country to search within, e.g. 'New York', 'London', 'Remote', '75001'. Used in 'search' mode (maps to Indeed's ?l= parameter). Combine with 'radius' to widen the area."
                    },
                    "maxResults": {
                        "title": "Max results (search mode)",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum jobs to return in 'search' mode. Indeed paginates 10 per page (start=0,10,20...); the scraper walks pages until this cap or no more cards. Deduped by jobkey. Aliases 'limit'/'max' accepted. Each result is billed at the per-event price — start small to validate output.",
                        "default": 25
                    },
                    "radius": {
                        "title": "Search radius (miles/km)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Optional search radius around the location, in the market's unit (miles for US/UK, km for metric markets). Maps to Indeed's ?radius=. Typical values: 5, 10, 25, 50. Leave empty for Indeed's default."
                    },
                    "fromDays": {
                        "title": "Posted within N days",
                        "minimum": 1,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Only return jobs posted within the last N days (recency filter, maps to Indeed's ?fromage=). Common values: 1, 3, 7, 14. Leave empty for all dates. Great for daily monitoring pipelines."
                    },
                    "jobType": {
                        "title": "Job type",
                        "enum": [
                            "any",
                            "fulltime",
                            "parttime",
                            "contract",
                            "temporary",
                            "internship"
                        ],
                        "type": "string",
                        "description": "Filter by employment type (maps to Indeed's ?jt=). Leave as 'any' for no filter.",
                        "default": "any"
                    },
                    "remoteOnly": {
                        "title": "Remote jobs only",
                        "type": "boolean",
                        "description": "When true, restrict 'search' results to remote-friendly jobs using Indeed's remote facet (sc=0kf:attr(DSQF7)). Each result still carries a 'remote' field (remote/hybrid/onsite) so you can filter downstream too. Superseded by 'workArrangement' — if you set workArrangement, use that instead.",
                        "default": false
                    },
                    "workArrangement": {
                        "title": "Work arrangement",
                        "enum": [
                            "any",
                            "remote",
                            "hybrid"
                        ],
                        "type": "string",
                        "description": "Filter 'search' results by on-site/remote arrangement (maps to Indeed's sc=0kf:attr facet). 'any' = no filter; 'remote' = fully remote jobs (attr DSQF7); 'hybrid' = hybrid jobs (attr PAXZC). This is the richer replacement for the legacy 'remoteOnly' boolean.",
                        "default": "any"
                    },
                    "experienceLevel": {
                        "title": "Experience level",
                        "enum": [
                            "any",
                            "entry",
                            "mid",
                            "senior"
                        ],
                        "type": "string",
                        "description": "Filter 'search' results by required experience level (maps to Indeed's sc=0kf:explvl facet). 'any' = no filter; 'entry' = ENTRY_LEVEL; 'mid' = MID_LEVEL; 'senior' = SENIOR_LEVEL. Combinable with workArrangement.",
                        "default": "any"
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "How to order 'search' results. 'relevance' = Indeed's default ranking; 'date' = most recently posted first (appends sort=date). Use 'date' for job-alert / daily-monitoring pipelines to catch the newest postings.",
                        "default": "relevance"
                    },
                    "resolveApplyUrl": {
                        "title": "Resolve final external apply URL (job-detail mode)",
                        "type": "boolean",
                        "description": "When true (job-detail mode only), makes ONE extra proxied request per job to follow Indeed's apply redirect and reveal the FINAL external employer/ATS apply URL (e.g. the company's Workday/Greenhouse/careers-page link). Off by default — the record already includes 'apply_url' (the employer link when Indeed exposes it directly, no extra request). This adds no separate charge but uses more proxy bandwidth, so enable it only when you specifically need the resolved destination.",
                        "default": false
                    },
                    "jobUrlsOrKeys": {
                        "title": "Job URLs or keys (job-detail mode)",
                        "type": "array",
                        "description": "For 'job-detail' mode: a list of Indeed jobkeys or full viewjob URLs to fetch complete records for. Accepts either form, e.g. 'https://www.indeed.com/viewjob?jk=1a2b3c4d5e6f7g8h' or just '1a2b3c4d5e6f7g8h'. Ignored in 'search' mode.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "customProxyUrl": {
                        "title": "Custom proxy / unblocker URL (recommended)",
                        "type": "string",
                        "description": "STRONGLY RECOMMENDED for reliable results. This target edge-blocks the shared Apify residential pool (anti-bot challenge / login-wall). When set, this single premium-unblocker URL is used as the ONLY proxy (no rotation — the unblocker handles IPs + challenge solving). Format: http://user:pass@host:port. Works with Bright Data Web Unlocker, Oxylabs Web Unblocker, ScraperAPI (proxy mode), ZenRows. Leave empty to fall back to the Apify proxy below."
                    },
                    "proxyConfig": {
                        "title": "Proxy configuration (residential strongly recommended)",
                        "type": "object",
                        "description": "Indeed is Cloudflare / anti-bot guarded and typically blocks datacenter and direct IPs. Enable Apify Proxy with the RESIDENTIAL group for reliable results. If a Cloudflare challenge is detected the run fails-fast with instructions and does NOT charge you.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
