# StepStone Jobs Scraper (Search / Details / Contacts) (`trakk/stepstone-jobs-scraper`) Actor

Scrape StepStone jobs by keyword, location, search URL, or job URL. HTTP-only, no browser. Includes pagination, full job details, salary/work model fields, company data, and public email/phone contact extraction.

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

## Pricing

from $1.05 / 1,000 stepstone job 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

## 💼 StepStone Jobs Scraper - Search, Details, Contacts

Pull fresh StepStone job listings by keyword, location, search URL, or direct job URL. The Actor is built for Apify and runs with HTTP requests only: no browser, no Playwright, no Puppeteer.

It is meant for people who need job-market data that is actually usable after the run: clean job rows, normalized salary fields, remote/hybrid labels, source metadata, optional full descriptions, and public contact extraction when the job page exposes it.

> Good for recruiters, job-board builders, HR analysts, salary research, competitor hiring trackers, and anyone who would rather export a dataset than click through StepStone all afternoon.

### What It Does

The Actor can:

- Search StepStone by keyword and location
- Crawl existing StepStone search URLs
- Fetch direct job-detail URLs
- Paginate search results up to your `maxItems` budget
- Drop StepStone `recommended` padding jobs by default
- Normalize `workFromHome` into `onsite`, `hybrid`, or `remote`
- Normalize salary fields when StepStone provides structured salary data
- Add stable absolute `jobUrl` and `sourceUrl` fields
- Optionally fetch full job detail pages
- Optionally extract public emails and phone numbers from detail pages
- Use Apify Proxy with German residential exits for better stability

### Input Modes

#### SEARCH

Use this when you want the Actor to build StepStone URLs for you.

```json
{
  "mode": "SEARCH",
  "keyword": "software developer",
  "location": "berlin",
  "country": "DE",
  "postedWithin": "7d",
  "maxItems": 100
}
````

#### URLS

Use this when you already have StepStone URLs from the site.

```json
{
  "mode": "URLS",
  "startUrls": [
    { "url": "https://www.stepstone.de/jobs/ai?searchOrigin=Homepage_top-search" },
    { "url": "https://www.stepstone.de/jobs/data-engineer/in-berlin" }
  ],
  "maxItems": 200
}
```

#### DETAILS

Use this for individual job pages.

```json
{
  "mode": "DETAILS",
  "startUrls": [
    { "url": "https://www.stepstone.de/stellenangebote--Example-Job-Berlin-Company--123456-inline.html" }
  ],
  "includeContacts": true
}
```

### Useful Options

| Field | What it does |
| --- | --- |
| `maxItems` | Total dataset rows to keep |
| `maxPagesPerSearch` | Pagination cap for each search |
| `includeDetails` | Fetch full job detail pages |
| `includeContacts` | Extract public emails and phone numbers from detail text |
| `excludeRecommended` | Drop `section=recommended` padding jobs |
| `remoteOnly` | Keep only jobs marked as remote-friendly |
| `salaryOnly` | Keep only jobs with salary data |
| `outputMode` | `compact` for clean rows, `full` for more native StepStone fields |
| `rawOutput` | Attach raw job payload under `_raw` |

### Output

Each result is one job row. Typical fields:

```json
{
  "id": 123456,
  "title": "Data Engineer",
  "companyName": "Example GmbH",
  "location": "Berlin",
  "datePosted": "2026-06-01T10:00:00+02:00",
  "workFromHome": "2",
  "workModel": "remote",
  "salary": "70.000 - 90.000 EUR",
  "salaryMin": 70000,
  "salaryMax": 90000,
  "salaryCurrency": "EUR",
  "section": "main",
  "skills": ["Python", "SQL"],
  "textSnippet": "Build data pipelines for analytics teams.",
  "jobUrl": "https://www.stepstone.de/stellenangebote--Data-Engineer-Berlin-Example--123456-inline.html",
  "sourceUrl": "https://www.stepstone.de/jobs/data-engineer/in-berlin",
  "scrapedAt": "2026-06-16T20:00:00+00:00"
}
```

When `includeDetails` is enabled, the Actor may also add:

- `description`
- `descriptionText`
- `employmentType`
- `validThrough`
- `hiringOrganization`
- `jobLocationDetail`
- `baseSalary`
- `contacts`

When `includeContacts` is enabled, `contacts` can include public details found in the job text:

```json
{
  "contacts": {
    "emails": ["emma.mauser@pflegecampus.de"],
    "phones": ["030 130 17 2640"],
    "people": [
      {
        "name": "Norman Knödel",
        "role": "Pflegedirektor"
      }
    ],
    "snippets": [
      "Noch Fragen? Norman Knödel Pflegedirektor Tel.: 030 130 17 2640"
    ]
  }
}
```

### Notes On StepStone

StepStone is protected by Akamai and is sensitive to geo/TLS fingerprints. This Actor uses `curl_cffi` Chrome impersonation and Apify Proxy. German residential proxy is recommended:

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "DE"
  }
}
```

If StepStone returns fewer jobs than the page number suggests, it is often because search pages contain `recommended` padding jobs. The Actor drops those by default so your dataset stays closer to the actual filter.

### Use Cases

- Track competitor hiring by role or city
- Build a fresh job-board feed
- Monitor remote and hybrid job demand
- Benchmark salary ranges where employers publish salary data
- Feed recruiting dashboards and HR analytics
- Collect job URLs for downstream enrichment

### FAQ

**Does it use a browser?**\
No. Runtime is HTTP requests only.

**Can it scrape full descriptions?**\
Yes, enable `includeDetails`. It costs more requests because each job page is fetched separately.

**Can it find emails or phone numbers?**\
Enable `includeContacts`. The Actor extracts only contacts that are publicly visible in the job detail text.

**Why use residential Germany proxy?**\
StepStone is Akamai-protected and EU geo-sensitive. German residential exits are the most stable default.

**Will every job have salary?**\
No. StepStone often exposes salary as empty. The Actor normalizes salary when StepStone provides it.

### Feature requests and issues

Need a new field, a different output format, or a workflow this actor does not cover yet? Found a bug or a StepStone response that does not parse correctly? Open an issue on the actor page in Apify Console and include the run ID, your input, what you expected, and a short example of the data you need. Clear reports help prioritize fixes and new features faster.

### Legal

This Actor is an independent tool and is not affiliated with StepStone, The StepStone Group, or their related brands. It extracts publicly available job listing data. You are responsible for using the data in a lawful way and respecting StepStone's terms, GDPR, copyright, database rights, and any rules that apply to your use case.

### SEO Keywords

stepstone scraper, stepstone jobs scraper, stepstone job scraper, stepstone.de scraper, germany jobs scraper, job market data germany, job listings API, HR analytics scraper, recruiter data, salary research Germany, remote jobs Germany, Apify StepStone actor

# Actor input Schema

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

One or more job searches, for example software developer, data engineer, product manager.

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

City or region slug, for example berlin, munich, deutschland. Leave empty for all locations.

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

Maximum number of jobs to save across the whole run.

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

AUTO detects whether you provided keyword searches or StepStone URLs.

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

StepStone country domain for generated keyword searches.

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

Fetch each job detail page and enrich the row with full description and JSON-LD fields when available.

## `includeContacts` (type: `boolean`):

Extract public emails and phone numbers from job detail text. Automatically requires detail pages.

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

StepStone search URLs, work URLs, or direct job URLs. AUTO mode detects how to use them.

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

Filter by posting age when StepStone accepts the age facet.

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

Keep only jobs marked by StepStone as remote-friendly when that field is available.

## `salaryOnly` (type: `boolean`):

Keep only jobs where salary text or structured salary data is available.

## `excludeRecommended` (type: `boolean`):

Drop recommended jobs that StepStone may add when a filtered page has too few exact matches.

## `maxPagesPerSearch` (type: `integer`):

Hard cap on pagination depth for each search URL or keyword.

## `outputMode` (type: `string`):

Compact returns clean normalized fields. Full keeps more StepStone native fields.

## `rawOutput` (type: `boolean`):

Attach the raw StepStone job object under \_raw for debugging or custom pipelines.

## `debugLog` (type: `boolean`):

Save a small HTML/API debug sample to the key-value store when parsing fails. Keep off for normal runs.

## `maxConcurrency` (type: `integer`):

How many HTTP requests may run in parallel.

## `maxRetries` (type: `integer`):

Retries for HTTP 403, 408, 425, 429, 5xx and parse failures.

## `maxProxyRetries` (type: `integer`):

Dedicated proxy / transport retry budget per request.

## `requestDelayMs` (type: `integer`):

Optional delay before each request. Keep 0 for fastest runs.

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

Apify Proxy configuration. Residential Germany is recommended because StepStone is geo-sensitive.

## `keyword` (type: `string`):

Hidden compatibility field for old tasks that used one keyword string.

## Actor input object example

```json
{
  "keywords": [
    "software developer"
  ],
  "location": "berlin",
  "maxItems": 10,
  "mode": "AUTO",
  "country": "DE",
  "includeDetails": false,
  "includeContacts": false,
  "startUrls": [
    {
      "url": "https://www.stepstone.de/jobs/ai?searchOrigin=Homepage_top-search"
    },
    {
      "url": "https://www.stepstone.de/jobs/data-engineer/in-berlin"
    }
  ],
  "postedWithin": "14d",
  "remoteOnly": false,
  "salaryOnly": false,
  "excludeRecommended": true,
  "maxPagesPerSearch": 1,
  "outputMode": "compact",
  "rawOutput": false,
  "debugLog": false,
  "maxConcurrency": 8,
  "maxRetries": 6,
  "maxProxyRetries": 6,
  "requestDelayMs": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  },
  "keyword": ""
}
```

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "keywords": [
        "software developer"
    ],
    "location": "berlin",
    "maxItems": 10,
    "startUrls": [
        {
            "url": "https://www.stepstone.de/jobs/ai?searchOrigin=Homepage_top-search"
        },
        {
            "url": "https://www.stepstone.de/jobs/data-engineer/in-berlin"
        }
    ],
    "postedWithin": "14d",
    "maxPagesPerSearch": 1,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

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

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

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

```

## Python example

```python
from apify_client import ApifyClient

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

# Prepare the Actor input
run_input = {
    "keywords": ["software developer"],
    "location": "berlin",
    "maxItems": 10,
    "startUrls": [
        { "url": "https://www.stepstone.de/jobs/ai?searchOrigin=Homepage_top-search" },
        { "url": "https://www.stepstone.de/jobs/data-engineer/in-berlin" },
    ],
    "postedWithin": "14d",
    "maxPagesPerSearch": 1,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("trakk/stepstone-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 '{
  "keywords": [
    "software developer"
  ],
  "location": "berlin",
  "maxItems": 10,
  "startUrls": [
    {
      "url": "https://www.stepstone.de/jobs/ai?searchOrigin=Homepage_top-search"
    },
    {
      "url": "https://www.stepstone.de/jobs/data-engineer/in-berlin"
    }
  ],
  "postedWithin": "14d",
  "maxPagesPerSearch": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}' |
apify call trakk/stepstone-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "StepStone Jobs Scraper (Search / Details / Contacts)",
        "description": "Scrape StepStone jobs by keyword, location, search URL, or job URL. HTTP-only, no browser. Includes pagination, full job details, salary/work model fields, company data, and public email/phone contact extraction.",
        "version": "0.1",
        "x-build-id": "0JuQVH9Lfqde9h8sw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/trakk~stepstone-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-trakk-stepstone-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/trakk~stepstone-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-trakk-stepstone-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/trakk~stepstone-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-trakk-stepstone-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": {
                    "keywords": {
                        "title": "🔍 Job keyword(s)",
                        "type": "array",
                        "description": "One or more job searches, for example software developer, data engineer, product manager.",
                        "items": {
                            "type": "string"
                        },
                        "default": []
                    },
                    "location": {
                        "title": "📍 Location",
                        "type": "string",
                        "description": "City or region slug, for example berlin, munich, deutschland. Leave empty for all locations.",
                        "default": "berlin"
                    },
                    "maxItems": {
                        "title": "💯 Number of jobs to extract",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of jobs to save across the whole run.",
                        "default": 5
                    },
                    "mode": {
                        "title": "🧭 Input type",
                        "enum": [
                            "AUTO",
                            "SEARCH",
                            "URLS",
                            "DETAILS"
                        ],
                        "type": "string",
                        "description": "AUTO detects whether you provided keyword searches or StepStone URLs.",
                        "default": "AUTO"
                    },
                    "country": {
                        "title": "🌍 StepStone country",
                        "enum": [
                            "DE",
                            "AT",
                            "FR",
                            "DK"
                        ],
                        "type": "string",
                        "description": "StepStone country domain for generated keyword searches.",
                        "default": "DE"
                    },
                    "includeDetails": {
                        "title": "📄 Include full job details",
                        "type": "boolean",
                        "description": "Fetch each job detail page and enrich the row with full description and JSON-LD fields when available.",
                        "default": false
                    },
                    "includeContacts": {
                        "title": "📞 Extract public contacts",
                        "type": "boolean",
                        "description": "Extract public emails and phone numbers from job detail text. Automatically requires detail pages.",
                        "default": false
                    },
                    "startUrls": {
                        "title": "🔗 StepStone URL(s)",
                        "type": "array",
                        "description": "StepStone search URLs, work URLs, or direct job URLs. AUTO mode detects how to use them.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "postedWithin": {
                        "title": "🕒 Posted within",
                        "enum": [
                            "all",
                            "1d",
                            "3d",
                            "7d",
                            "14d"
                        ],
                        "type": "string",
                        "description": "Filter by posting age when StepStone accepts the age facet.",
                        "default": "14d"
                    },
                    "remoteOnly": {
                        "title": "🏠 Remote only",
                        "type": "boolean",
                        "description": "Keep only jobs marked by StepStone as remote-friendly when that field is available.",
                        "default": false
                    },
                    "salaryOnly": {
                        "title": "💰 Salary only",
                        "type": "boolean",
                        "description": "Keep only jobs where salary text or structured salary data is available.",
                        "default": false
                    },
                    "excludeRecommended": {
                        "title": "Skip recommended padding",
                        "type": "boolean",
                        "description": "Drop recommended jobs that StepStone may add when a filtered page has too few exact matches.",
                        "default": true
                    },
                    "maxPagesPerSearch": {
                        "title": "Max pages per search",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Hard cap on pagination depth for each search URL or keyword.",
                        "default": 1
                    },
                    "outputMode": {
                        "title": "📦 Output style",
                        "enum": [
                            "compact",
                            "full"
                        ],
                        "type": "string",
                        "description": "Compact returns clean normalized fields. Full keeps more StepStone native fields.",
                        "default": "compact"
                    },
                    "rawOutput": {
                        "title": "Include raw payload",
                        "type": "boolean",
                        "description": "Attach the raw StepStone job object under _raw for debugging or custom pipelines.",
                        "default": false
                    },
                    "debugLog": {
                        "title": "Debug log",
                        "type": "boolean",
                        "description": "Save a small HTML/API debug sample to the key-value store when parsing fails. Keep off for normal runs.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "⚙️ Max concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many HTTP requests may run in parallel.",
                        "default": 8
                    },
                    "maxRetries": {
                        "title": "Max retries",
                        "minimum": 0,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Retries for HTTP 403, 408, 425, 429, 5xx and parse failures.",
                        "default": 6
                    },
                    "maxProxyRetries": {
                        "title": "Max proxy retries",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Dedicated proxy / transport retry budget per request.",
                        "default": 6
                    },
                    "requestDelayMs": {
                        "title": "Request delay",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Optional delay before each request. Keep 0 for fastest runs.",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy configuration. Residential Germany is recommended because StepStone is geo-sensitive.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "DE"
                        }
                    },
                    "keyword": {
                        "title": "Legacy single keyword",
                        "type": "string",
                        "description": "Hidden compatibility field for old tasks that used one keyword string.",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
