# Ziprecruiter Scraper (`silentflow/ziprecruiter-scraper`) Actor

ZipRecruiter job scraper with search, filters, and detail enrichment. Extract titles, salaries, companies, locations, descriptions, and apply links across 13 countries. Filter by job type, posting date, and salary. Get 50+ structured fields per job including company profile and GPS coordinates.

- **URL**: https://apify.com/silentflow/ziprecruiter-scraper.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$24.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## 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

## ZipRecruiter Scraper

by [SilentFlow](https://apify.com/silentflow)

Extract job listings, salaries, companies, locations, descriptions, and application links from ZipRecruiter, by URL or search query, at scale.

### ✨ Why use this scraper?

- 🔍 **Search by keyword + location**: Find jobs by title, company, or skill with geographic targeting
- 🎯 **Filters & sorting**: Filter by job type, posting date, salary, sort by relevance, date, or salary
- 📊 **Rich structured data**: 30+ fields per job including salary range, GPS coordinates, benefits, and apply link
- ⚡ **Fast concurrent scraping**: Configurable parallel workers for high-throughput data collection
- 🔗 **Flexible input**: Scrape by search query or paste ZipRecruiter URLs directly

### 🎯 Use cases

| Industry | Application |
|----------|-------------|
| **Job Market Analytics** | Track hiring trends, salary ranges, and demand by role across cities |
| **Recruitment Intelligence** | Monitor competitor job postings and compensation packages |
| **Career Research** | Aggregate job opportunities matching specific skills and locations |
| **HR & Staffing** | Build pipelines of open positions for staffing agencies |
| **Salary Benchmarking** | Compare salary data across regions and employment types |
| **Market Research** | Analyze which companies are hiring and in what roles |

### 📥 Input parameters

#### URL Scraping

| Parameter | Type | Description |
|-----------|------|-------------|
| `startUrls` | array | ZipRecruiter job URLs or search result URLs |

#### Search

| Parameter | Type | Description |
|-----------|------|-------------|
| `searches` | array | Search queries (e.g. `"software engineer"`, `"data analyst"`) |
| `location` | string | Location for search (e.g. `"New York, NY"`, `"Remote"`), required when using searches |

#### Sorting & Filtering

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sort` | string | `relevance` | Sort order: `relevance`, `date`, `distance`, `salary` |
| `jobType` | string |, | Employment type: `full_time`, `part_time`, `contract`, `internship`, `temporary` |
| `postedWithin` | string | `anytime` | Date filter: `today`, `3days`, `week`, `month`, `anytime` |
| `salaryRange` | string |, | Minimum salary filter (e.g. `"50000"` for $50K+) |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxItems` | integer | `50` | Maximum total jobs to return |
| `maxPages` | integer | `5` | Maximum search result pages per query (~20 jobs per page) |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeDetails` | boolean | `true` | Fetch each job detail page for full data (description, salary, benefits, coordinates) |

#### Advanced

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `concurrency` | integer | `5` | Parallel workers for detail page fetching |
| `requestTimeout` | integer | `30` | Seconds per request |
| `debugMode` | boolean | `false` | Enable verbose logging |

#### Proxy

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `proxy` | object | Residential | Proxy configuration for scraping |

### 📊 Output data

#### Job example

```json
{
  "id": "503842941",
  "url": "https://www.ziprecruiter.com/jobs/503842941-software-engineer-a-google",
  "title": "Software Engineer",
  "description": "<p>We are looking for a Software Engineer to join our team...</p>",
  "company": "Google",
  "companyUrl": "https://www.google.com",
  "companyLogo": "https://photos.ziprecruiter.com/google-logo.png",
  "location": "New York, NY",
  "city": "New York",
  "state": "NY",
  "country": "US",
  "postalCode": "10001",
  "latitude": 40.7128,
  "longitude": -74.006,
  "salaryMin": 120000,
  "salaryMax": 180000,
  "salaryInterval": "YEAR",
  "salaryCurrency": "USD",
  "salaryText": "$120,000 - $180,000/yr",
  "benefits": ["Health insurance", "401(k)", "Paid time off"],
  "employmentType": "FULL_TIME",
  "industry": "Technology",
  "category": "Software Development",
  "skills": "",
  "experienceRequirements": "",
  "postedDate": "2026-02-25",
  "validThrough": "2026-03-25",
  "postedHumanDate": "3 days ago",
  "directApply": true,
  "applyUrl": "https://www.ziprecruiter.com/jobs/apply/...",
  "scrapedAt": "2026-02-28T18:45:10Z",
  "dataType": "job"
}
````

### 🗂️ Data fields

| Category | Fields |
|----------|--------|
| **Identifiers** | `id`, `url` |
| **Job Info** | `title`, `description`, `company`, `companyUrl`, `companyLogo` |
| **Location** | `location`, `city`, `state`, `country`, `postalCode` |
| **Coordinates** | `latitude`, `longitude` |
| **Compensation** | `salaryMin`, `salaryMax`, `salaryInterval`, `salaryCurrency`, `salaryText` |
| **Benefits** | `benefits` |
| **Employment** | `employmentType`, `industry`, `category`, `skills`, `experienceRequirements` |
| **Dates** | `postedDate`, `validThrough`, `postedHumanDate` |
| **Application** | `directApply`, `applyUrl` |
| **Meta** | `scrapedAt`, `dataType` |

### 🚀 Examples

#### Search for jobs in New York

```json
{
  "searches": ["software engineer"],
  "location": "New York, NY",
  "maxItems": 50,
  "maxPages": 3
}
```

#### Full-time jobs posted this week

```json
{
  "searches": ["data analyst"],
  "location": "San Francisco, CA",
  "jobType": "full_time",
  "postedWithin": "week",
  "sort": "date",
  "maxItems": 100
}
```

#### High-salary remote jobs

```json
{
  "searches": ["machine learning engineer"],
  "location": "Remote",
  "salaryRange": "150000",
  "maxItems": 50
}
```

#### Scrape a ZipRecruiter search URL

```json
{
  "startUrls": [
    { "url": "https://www.ziprecruiter.com/jobs/search?search=nurse&location=Chicago%2C+IL" }
  ],
  "maxItems": 100,
  "includeDetails": true
}
```

### 💻 Integrations

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run_input = {
    "searches": ["software engineer"],
    "location": "New York, NY",
    "sort": "date",
    "maxItems": 50,
}

run = client.actor("silentflow/ziprecruiter-scraper").call(run_input=run_input)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["company"], item["salaryText"])
```

#### JavaScript

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('silentflow/ziprecruiter-scraper').call({
    searches: ['software engineer'],
    location: 'New York, NY',
    sort: 'date',
    maxItems: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(item.title, item.company, item.salaryText));
```

### 📈 Performance & limits

| Metric | Value |
|--------|-------|
| Fields per job | 30+ |
| Jobs per search page | ~20 |
| Max pages per search query | Configurable (default: 5) |
| Proxy | Configurable (residential recommended) |

### 💡 Tips for best results

1. **Use `includeDetails: true`** to get the full dataset, description, structured salary, benefits, GPS coordinates, and apply link
2. **Combine filters**: use `jobType`, `postedWithin`, and `salaryRange` together to get exactly what you need
3. **Location is required for searches**: always provide `location` when using the `searches` parameter
4. **Start small**: set `maxItems: 10` for your first run to verify the output format before scaling up
5. **Use `postedWithin: "week"`** to focus on fresh job listings with active applications

### ❓ FAQ

**Q: What types of ZipRecruiter URLs are supported?**
A: Job detail pages (`/jobs/...`) and search result pages (`/jobs/search?...`).

**Q: Do I need a ZipRecruiter account or API key?**
A: No. The scraper works without any ZipRecruiter credentials.

**Q: What's the difference between `includeDetails: true` and `false`?**
A: With `includeDetails: false`, search results return basic info (title, company, location, URL). With `true`, each job gets a full detail fetch, adding description, structured salary, benefits, coordinates, and more.

**Q: Can I search for remote jobs?**
A: Yes. Set `location` to `"Remote"` to find remote positions.

**Q: How many results can I get per search?**
A: ZipRecruiter typically shows ~20 results per page with many pages available. Use `maxPages` to control pagination depth.

### 📬 Support

- **Feature requests**: Let us know what you need
- **Custom solutions**: Contact us for enterprise integrations or high-volume needs

Check out our other scrapers: [SilentFlow on Apify](https://apify.com/silentflow)

# Actor input Schema

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

ZipRecruiter URLs to scrape directly. Supports job pages and search result pages.

## `searches` (type: `array`):

Keywords to search on ZipRecruiter (e.g. "software engineer", "data analyst", "nurse").

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

City or region to search in (e.g. "New York, NY", "San Francisco, CA", "Remote").

## `countryName` (type: `string`):

Country for job search. Leave empty for USA (default). Uses country-specific ZipRecruiter domains.

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

Sort order for search results.

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

Filter by employment type.

## `postedWithin` (type: `string`):

Filter by posting date.

## `salaryRange` (type: `string`):

Minimum salary filter (e.g. "50000" for $50K+, "100000" for $100K+).

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

Only keep jobs from companies matching this name (case-insensitive, partial match).

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

The maximum total number of jobs to save.

## `maxPages` (type: `integer`):

Maximum number of result pages to scrape per search query (~20 jobs per page).

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

Visit each job page to collect full data: description, salary, benefits, coordinates, apply link. Disable for faster listing-only scraping.

## `concurrency` (type: `integer`):

Number of parallel workers for scraping job pages. Higher values are faster but use more memory.

## `requestTimeout` (type: `integer`):

HTTP request timeout in seconds.

## `debugMode` (type: `boolean`):

Activate to see detailed logs.

## `proxy` (type: `object`):

Select the proxy to use for scraping.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.ziprecruiter.com/jobs/search?search=software+engineer&location=New+York%2C+NY"
    }
  ],
  "searches": [
    "software engineer"
  ],
  "location": "New York, NY",
  "countryName": "",
  "sort": "relevance",
  "jobType": "",
  "postedWithin": "anytime",
  "salaryRange": "",
  "companyName": "",
  "maxItems": 50,
  "maxPages": 5,
  "includeDetails": true,
  "concurrency": 5,
  "requestTimeout": 30,
  "debugMode": false,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Complete job data including: title, company, salary, location, description, employmentType, benefits, coordinates, and more.

## `resultsCSV` (type: `string`):

CSV format export for spreadsheet analysis

## `resultsExcel` (type: `string`):

Excel format export

# 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 = {
    "startUrls": [
        {
            "url": "https://www.ziprecruiter.com/jobs/search?search=software+engineer&location=New+York%2C+NY"
        }
    ],
    "searches": [
        "software engineer"
    ],
    "location": "New York, NY",
    "countryName": "",
    "sort": "relevance",
    "jobType": "",
    "postedWithin": "anytime",
    "salaryRange": "",
    "companyName": "",
    "maxItems": 50,
    "maxPages": 5,
    "concurrency": 5,
    "requestTimeout": 30,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/ziprecruiter-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 = {
    "startUrls": [{ "url": "https://www.ziprecruiter.com/jobs/search?search=software+engineer&location=New+York%2C+NY" }],
    "searches": ["software engineer"],
    "location": "New York, NY",
    "countryName": "",
    "sort": "relevance",
    "jobType": "",
    "postedWithin": "anytime",
    "salaryRange": "",
    "companyName": "",
    "maxItems": 50,
    "maxPages": 5,
    "concurrency": 5,
    "requestTimeout": 30,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("silentflow/ziprecruiter-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 '{
  "startUrls": [
    {
      "url": "https://www.ziprecruiter.com/jobs/search?search=software+engineer&location=New+York%2C+NY"
    }
  ],
  "searches": [
    "software engineer"
  ],
  "location": "New York, NY",
  "countryName": "",
  "sort": "relevance",
  "jobType": "",
  "postedWithin": "anytime",
  "salaryRange": "",
  "companyName": "",
  "maxItems": 50,
  "maxPages": 5,
  "concurrency": 5,
  "requestTimeout": 30,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call silentflow/ziprecruiter-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ziprecruiter Scraper",
        "description": "ZipRecruiter job scraper with search, filters, and detail enrichment. Extract titles, salaries, companies, locations, descriptions, and apply links across 13 countries. Filter by job type, posting date, and salary. Get 50+ structured fields per job including company profile and GPS coordinates.",
        "version": "1.0",
        "x-build-id": "64de6RDnSSY3Rkpjp"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/silentflow~ziprecruiter-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-silentflow-ziprecruiter-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/silentflow~ziprecruiter-scraper/runs": {
            "post": {
                "operationId": "runs-sync-silentflow-ziprecruiter-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/silentflow~ziprecruiter-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-silentflow-ziprecruiter-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "ZipRecruiter URLs to scrape directly. Supports job pages and search result pages.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searches": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Keywords to search on ZipRecruiter (e.g. \"software engineer\", \"data analyst\", \"nurse\").",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or region to search in (e.g. \"New York, NY\", \"San Francisco, CA\", \"Remote\")."
                    },
                    "countryName": {
                        "title": "Country",
                        "enum": [
                            "",
                            "uk",
                            "canada",
                            "australia",
                            "india",
                            "france",
                            "germany",
                            "spain",
                            "italy",
                            "new zealand",
                            "singapore",
                            "israel",
                            "philippines"
                        ],
                        "type": "string",
                        "description": "Country for job search. Leave empty for USA (default). Uses country-specific ZipRecruiter domains.",
                        "default": ""
                    },
                    "sort": {
                        "title": "Sort results by",
                        "enum": [
                            "relevance",
                            "date",
                            "distance",
                            "salary"
                        ],
                        "type": "string",
                        "description": "Sort order for search results.",
                        "default": "relevance"
                    },
                    "jobType": {
                        "title": "Job type",
                        "enum": [
                            "",
                            "full_time",
                            "part_time",
                            "contract",
                            "internship",
                            "temporary"
                        ],
                        "type": "string",
                        "description": "Filter by employment type.",
                        "default": ""
                    },
                    "postedWithin": {
                        "title": "Posted within",
                        "enum": [
                            "anytime",
                            "today",
                            "3days",
                            "week",
                            "2weeks",
                            "month"
                        ],
                        "type": "string",
                        "description": "Filter by posting date.",
                        "default": "anytime"
                    },
                    "salaryRange": {
                        "title": "Salary range",
                        "type": "string",
                        "description": "Minimum salary filter (e.g. \"50000\" for $50K+, \"100000\" for $100K+).",
                        "default": ""
                    },
                    "companyName": {
                        "title": "Company name filter",
                        "type": "string",
                        "description": "Only keep jobs from companies matching this name (case-insensitive, partial match).",
                        "default": ""
                    },
                    "maxItems": {
                        "title": "Maximum number of jobs",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "The maximum total number of jobs to save.",
                        "default": 50
                    },
                    "maxPages": {
                        "title": "Maximum pages per search",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of result pages to scrape per search query (~20 jobs per page).",
                        "default": 5
                    },
                    "includeDetails": {
                        "title": "Scrape full job details",
                        "type": "boolean",
                        "description": "Visit each job page to collect full data: description, salary, benefits, coordinates, apply link. Disable for faster listing-only scraping.",
                        "default": true
                    },
                    "concurrency": {
                        "title": "Concurrent workers",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of parallel workers for scraping job pages. Higher values are faster but use more memory.",
                        "default": 5
                    },
                    "requestTimeout": {
                        "title": "Request timeout (seconds)",
                        "minimum": 10,
                        "maximum": 120,
                        "type": "integer",
                        "description": "HTTP request timeout in seconds.",
                        "default": 30
                    },
                    "debugMode": {
                        "title": "Debug mode",
                        "type": "boolean",
                        "description": "Activate to see detailed logs.",
                        "default": false
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select the proxy to use for scraping."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
