# StepStone Jobs Scraper (`khadinakbar/stepstone-jobs-scraper`) Actor

Scrape StepStone.de job postings — title, company, salary range, skills, location, apply URL. MCP-ready, HTTP-only.

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

## Pricing

from $3.00 / 1,000 job scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 — Salary, Company & Full Description

**StepStone Jobs Scraper** extracts structured job postings from **StepStone.de**, Germany's largest job board, by keyword + location or from any StepStone search / job-detail URL. It returns one clean, flat record per job — title, company, location, **parsed salary range**, skills, work-from-home flag, employment type, posted date, and apply URL — billed pay-per-result at **$0.003 per job**. HTTP-only (no headless browser), residential-proxy backed, and MCP-ready for AI agents.

It is purpose-built for the **DACH job market**: it speaks StepStone's URL scheme (`/work/{keyword}/in-{location}`), parses German salary strings (`55.000 € – 70.000 € pro Jahr`), and pulls the full job description from StepStone's structured JobPosting data.

### Use cases for StepStone job data

- **Recruiting & sourcing** — pull live vacancies for a role + city and feed your ATS or outreach list.
- **Salary benchmarking** — collect parsed salary ranges across a title to build compensation bands.
- **Job-market research** — track posting volume, skills demand, and remote share across the German market.
- **Job aggregators & boards** — ingest normalized StepStone listings into your own search index.
- **AI agents** — give Claude, ChatGPT, or any MCP client a live German job-search tool.

### What data can I extract with StepStone Jobs Scraper?

One record per job posting:

| Field | Description |
|-------|-------------|
| `jobId` | StepStone internal job id |
| `title` | Job title |
| `company` | Hiring company |
| `companyLogo`, `companyUrl` | Company logo + StepStone profile link |
| `location`, `region` | City + region/Bundesland |
| `latitude`, `longitude` | Geocoordinates (when available) |
| `workFromHome` | Remote / work-from-home flag |
| `employmentType` | FULL_TIME, PART_TIME, CONTRACT, … |
| `salaryText` | Raw salary string as shown |
| `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryPeriod` | Parsed salary range (e.g. 55000 / 70000 / EUR / year) |
| `skills` | Skills / labels / tags |
| `category` | StepStone discipline / category |
| `postedAt` | ISO 8601 posting date |
| `jobUrl`, `applyUrl` | Job-detail + apply links |
| `description` | Full job description (when "Fetch full job details" is on) |
| `sponsored` | Promoted-listing flag |
| `source`, `searchUrl`, `scrapedAt` | Provenance + ISO 8601 scrape time |

### How much will scraping StepStone cost you?

Pay-per-result, billed per job returned:

- **`job-scraped`** — **$0.003** per job
- **`apify-actor-start`** — $0.00005 per run (scaled by memory)

Worked examples:

- 100 jobs ≈ **$0.30**
- 1,000 jobs ≈ **$3.00**
- 10,000 jobs ≈ **$30.00**

Enabling "Fetch full job details" does **not** change the per-job price — the full description is included.

### How to use StepStone Jobs Scraper

#### How to scrape StepStone by search term or URL

1. Enter a **Keyword** (e.g. `data engineer`) and optionally a **Location** (e.g. `Berlin`). Leave Location empty to search all of Germany.
2. Or paste one or more StepStone **Start URLs** — search pages (`/work/...`, `/jobs/...`) or job-detail links (`...-inline.html`). When set, Keyword/Location/filters are ignored.
3. Optionally set **Date posted**, **Remote only**, and **Maximum jobs**.
4. Run it. Results stream into the dataset; export as JSON, CSV, or Excel.

#### ⬇️ Input

```json
{
  "keyword": "data engineer",
  "location": "Berlin",
  "postedWithin": "7",
  "workFromHomeOnly": false,
  "maxItems": 100,
  "enrichDetails": true
}
````

#### ⬆️ Output

```json
{
  "jobId": "12345678",
  "title": "Senior Data Engineer (m/w/d)",
  "company": "Acme GmbH",
  "location": "Berlin",
  "region": "Berlin",
  "workFromHome": true,
  "employmentType": "FULL_TIME",
  "salaryText": "55.000 € – 70.000 € pro Jahr",
  "salaryMin": 55000,
  "salaryMax": 70000,
  "salaryCurrency": "EUR",
  "salaryPeriod": "year",
  "skills": ["Python", "SQL", "ETL"],
  "postedAt": "2026-05-28T00:00:00Z",
  "jobUrl": "https://www.stepstone.de/stellenangebote--Senior-Data-Engineer--12345678-inline.html",
  "applyUrl": "https://www.stepstone.de/stellenangebote--Senior-Data-Engineer--12345678-inline.html",
  "source": "stepstone.de",
  "scrapedAt": "2026-06-01T12:00:00Z"
}
```

### Scrape any job-board or lead data with dedicated scrapers

Part of a full job & lead-generation toolkit — combine StepStone with these:

- [Jobs Scraper (Indeed + LinkedIn + Glassdoor)](https://apify.com/khadinakbar/jobs-scraper)
- [Indeed Job Scraper](https://apify.com/khadinakbar/indeed-job-scraper)
- [Google Jobs Scraper](https://apify.com/khadinakbar/google-jobs-scraper)
- [LinkedIn Jobs Scraper](https://apify.com/khadinakbar/linkedin-jobs-scraper)
- [LinkedIn Profile & Email Scraper](https://apify.com/khadinakbar/linkedin-profile-email-scraper)
- [B2B Lead Finder + Enrichment](https://apify.com/khadinakbar/b2b-lead-finder-enrichment)
- [Google Maps Leads Scraper](https://apify.com/khadinakbar/google-maps-leads-scraper)
- [Universal Lead Finder](https://apify.com/khadinakbar/universal-lead-finder)
- [Contact Details Scraper](https://apify.com/khadinakbar/contact-details-scraper)
- [Email Address Validator](https://apify.com/khadinakbar/email-address-validator)

### ❓ FAQ

#### How many results can I scrape with StepStone Jobs Scraper?

As many as you want — set **Maximum jobs**. The scraper paginates through StepStone result pages until it hits your limit. For very large pulls, raise `maxItems` and keep an eye on the cost cap shown at the start of every run.

#### Can I integrate StepStone Jobs Scraper with other apps?

Yes. Results land in an Apify dataset you can export to JSON, CSV, or Excel, or pipe into Make, Zapier, n8n, Google Sheets, or your own backend via webhook and the Apify API.

#### Can I use StepStone Jobs Scraper with the Apify API?

Yes. Start runs and fetch the dataset through the Apify API or any Apify client (JavaScript, Python). Pass the same input fields shown above.

#### Can I use StepStone Jobs Scraper through an MCP Server?

Yes. The actor is MCP-ready and exposed through the Apify MCP server, so Claude, ChatGPT, and other agents can call it as a tool — a keyword goes in, structured job records come back.

#### Do I need proxies to scrape StepStone?

Yes. StepStone is protected by Akamai Bot Manager and blocks datacenter IPs. The actor defaults to Apify **Residential** proxies in Germany, which is required for reliable results — leave the proxy setting as-is.

#### Is it legal to scrape StepStone data?

This actor collects only publicly available job-posting data and is intended for legitimate uses such as recruiting, market research, and analytics. You are responsible for complying with StepStone's terms, the GDPR, and any applicable laws in your jurisdiction. Do not use scraped personal data for spam or unlawful processing.

#### Why don't all StepStone jobs include a salary or skills?

StepStone discloses an explicit salary on only a minority of German listings, so `salaryMin` / `salaryMax` / `salaryText` are filled whenever StepStone shows pay and left empty otherwise. The scraper reads both the search-result salary and the structured salary on each job's detail page, so it captures everything StepStone exposes — it cannot invent figures the site does not publish. The same applies to `skills`, which only some postings provide. Fields like title, company, location, work-from-home, employment type, posting date, apply URL, and the full job description are returned for virtually every job.

#### Your feedback

Found a bug or need another field or StepStone region? Open an issue on the actor's **Issues** tab — fixes and small feature requests are usually quick.

# Actor input Schema

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

Free-text job search run on StepStone.de (e.g. 'data engineer' or 'pflegefachkraft'). Builds the search URL /work/{keyword}/in-{location}. Defaults to 'data engineer' when empty and no Start URLs are given. This is NOT a StepStone job-detail URL — paste those into Start URLs instead.

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

City or region in German spelling (e.g. 'Berlin', 'München', 'Nordrhein-Westfalen'). Combined with Keyword to build /work/{keyword}/in-{location}. Defaults to all of Germany ('deutschland') when empty. Ignored when Start URLs is provided.

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

Optional list of StepStone.de search-result or job-detail URLs to scrape as-is. When set, Keyword, Location, and the filters below are ignored. Accepts /jobs/... and /work/... search pages and /stellenangebote--...-inline.html detail links. Example: https://www.stepstone.de/work/java/in-berlin.

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

Restrict results to jobs posted within the last N days, applied as StepStone's age facet. Allowed values: 'any', '1', '3', '7', '14', '30'. Defaults to 'any' (no date limit). Ignored when Start URLs is provided.

## `workFromHomeOnly` (type: `boolean`):

When enabled, returns only jobs that offer remote / work-from-home, using StepStone's wfh facet. Defaults to false (all jobs). Applies only to keyword/location searches, not to Start URLs.

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

Maximum number of job postings to return and bill for in this run (1 job = $0.003). Defaults to 100. The run stops once this many jobs are collected, even across multiple result pages. Increase for bulk exports.

## `enrichDetails` (type: `boolean`):

When enabled (default), each job's detail page is fetched to add the full description, employment type, and structured salary from StepStone's JobPosting data. Disable for a faster, leaner run returning only fields visible on the search page. Does not change the per-job price.

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

Proxy used to reach StepStone. Defaults to Apify Residential proxies in Germany, which are required — StepStone is protected by Akamai Bot Manager and blocks datacenter IPs. Leave as default unless you have a specific reason to change it.

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

Maximum number of pages fetched in parallel. Defaults to 10. Lower it if you hit blocks; raise it for faster large runs on a healthy proxy pool. Most users should leave this at the default.

## `debugDumpHtml` (type: `boolean`):

Internal debugging flag. When enabled, raw HTML and parsed JSON candidates are saved to the key-value store for extraction troubleshooting. Leave off for normal runs.

## Actor input object example

```json
{
  "keyword": "java developer",
  "location": "Berlin",
  "postedWithin": "any",
  "workFromHomeOnly": false,
  "maxItems": 100,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  },
  "maxConcurrency": 10,
  "debugDumpHtml": false
}
```

# Actor output Schema

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

All scraped job postings as structured JSON records.

# 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 = {
    "keyword": "data engineer",
    "maxItems": 100,
    "enrichDetails": true,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/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 = {
    "keyword": "data engineer",
    "maxItems": 100,
    "enrichDetails": True,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/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 '{
  "keyword": "data engineer",
  "maxItems": 100,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}' |
apify call khadinakbar/stepstone-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "StepStone Jobs Scraper",
        "description": "Scrape StepStone.de job postings — title, company, salary range, skills, location, apply URL. MCP-ready, HTTP-only.",
        "version": "1.0",
        "x-build-id": "ZayR2PghvhXSmjBO4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~stepstone-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-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/khadinakbar~stepstone-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-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/khadinakbar~stepstone-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-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": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Free-text job search run on StepStone.de (e.g. 'data engineer' or 'pflegefachkraft'). Builds the search URL /work/{keyword}/in-{location}. Defaults to 'data engineer' when empty and no Start URLs are given. This is NOT a StepStone job-detail URL — paste those into Start URLs instead."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City or region in German spelling (e.g. 'Berlin', 'München', 'Nordrhein-Westfalen'). Combined with Keyword to build /work/{keyword}/in-{location}. Defaults to all of Germany ('deutschland') when empty. Ignored when Start URLs is provided."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional list of StepStone.de search-result or job-detail URLs to scrape as-is. When set, Keyword, Location, and the filters below are ignored. Accepts /jobs/... and /work/... search pages and /stellenangebote--...-inline.html detail links. Example: https://www.stepstone.de/work/java/in-berlin.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "postedWithin": {
                        "title": "Date posted",
                        "enum": [
                            "any",
                            "1",
                            "3",
                            "7",
                            "14",
                            "30"
                        ],
                        "type": "string",
                        "description": "Restrict results to jobs posted within the last N days, applied as StepStone's age facet. Allowed values: 'any', '1', '3', '7', '14', '30'. Defaults to 'any' (no date limit). Ignored when Start URLs is provided.",
                        "default": "any"
                    },
                    "workFromHomeOnly": {
                        "title": "Remote / work-from-home only",
                        "type": "boolean",
                        "description": "When enabled, returns only jobs that offer remote / work-from-home, using StepStone's wfh facet. Defaults to false (all jobs). Applies only to keyword/location searches, not to Start URLs.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Maximum jobs",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of job postings to return and bill for in this run (1 job = $0.003). Defaults to 100. The run stops once this many jobs are collected, even across multiple result pages. Increase for bulk exports.",
                        "default": 100
                    },
                    "enrichDetails": {
                        "title": "Fetch full job details",
                        "type": "boolean",
                        "description": "When enabled (default), each job's detail page is fetched to add the full description, employment type, and structured salary from StepStone's JobPosting data. Disable for a faster, leaner run returning only fields visible on the search page. Does not change the per-job price.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used to reach StepStone. Defaults to Apify Residential proxies in Germany, which are required — StepStone is protected by Akamai Bot Manager and blocks datacenter IPs. Leave as default unless you have a specific reason to change it.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "DE"
                        }
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of pages fetched in parallel. Defaults to 10. Lower it if you hit blocks; raise it for faster large runs on a healthy proxy pool. Most users should leave this at the default.",
                        "default": 10
                    },
                    "debugDumpHtml": {
                        "title": "Debug: dump raw HTML",
                        "type": "boolean",
                        "description": "Internal debugging flag. When enabled, raw HTML and parsed JSON candidates are saved to the key-value store for extraction troubleshooting. Leave off for normal runs.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
