# Deutsche Bahn Timetable Scraper - Schedules & Real-Time Delays (`jungle_synthesizer/deutsche-bahn-timetable-scraper`) Actor

Scrape Deutsche Bahn (bahn.de) journey plans, train schedules, platforms, transfers, real-time delays, and occupancy forecasts. Supports ICE, IC/EC, RE, RB, S-Bahn across Germany plus international DB routes (AT, CH, FR, NL, BE, PL, DK).

- **URL**: https://apify.com/jungle\_synthesizer/deutsche-bahn-timetable-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Travel, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Deutsche Bahn Timetable Scraper

Scrape journey plans from [Deutsche Bahn (bahn.de)](https://www.bahn.de/), the largest rail operator in Europe. Returns ICE, IC/EC, IR, RE, RB, and S-Bahn schedules with platforms, transfers, real-time delays, occupancy forecasts, and segment-level routing across Germany plus international DB routes (AT, CH, FR, NL, BE, PL, DK).

---

### Deutsche Bahn Timetable Scraper Features

- Pulls journey plans from the bahn.de Reiseauskunft (HAFAS) JSON API.
- Returns ~5 connections per request and paginates by advancing the search time forward, so you get a continuous list of departures rather than five and a polite shrug.
- Resolves station names automatically — pass "Berlin Hbf" or an EVA/IBNR code, the scraper handles the lookup.
- Surfaces real-time delay (`departure_time_realtime`) when bahn.de has it, alongside the scheduled time.
- Captures train type (ICE, IC, EC, IR, RE, RB, S, U, Bus), train number, operating carrier (DB Fernverkehr, Flixtrain, ODEG, etc.), and per-segment platforms.
- Exposes occupancy forecasts for both 1st and 2nd class (0-4 scale) and a flat list of `risNotizen` advisories like construction work or board-only stops.
- Supports both 1st and 2nd class fare classes, plus a long-distance-only filter that strips S-Bahn and regional trains.
- Pure JSON API — no browser, no captcha solving, no fragile selectors.

---

### Who Uses Deutsche Bahn Timetable Data?

- **Travel aggregators** — Feed schedules into trip planners or fare comparison front-ends without paying for a commercial HAFAS licence.
- **Mobility researchers** — Build datasets of train frequencies, transfer patterns, and on-time performance across the German rail network.
- **Logistics planners** — Track route options for time-sensitive freight or business travel, including platform-level detail.
- **Fare comparison tools** — Cross-reference DB schedules against Flixtrain, ÖBB, SNCF, and other operators.
- **Travel-tech startups** — Prototype itinerary products against a stable API surface before committing to a paid integration.

---

### How Deutsche Bahn Timetable Scraper Works

1. Provide an origin and destination — station names like "Berlin Hbf" or numeric EVA/IBNR codes both work.
2. The scraper resolves each station against bahn.de's autocomplete endpoint, then queries the journey API for the requested date and time.
3. Each batch returns about five connections; the scraper advances the search time and queries again until it hits `maxItems` or runs out of departures within a 24-hour window.
4. Records save as flat JSON with all the fields you'd expect, plus a deeplink back to bahn.de for each journey.

---

### Input

```json
{
  "origin": "Berlin Hbf",
  "destination": "München Hbf",
  "date": "",
  "time": "",
  "fareClass": "2",
  "includeLocalTrains": true,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `origin` | string | "Berlin Hbf" | Departure station name (e.g. "Berlin Hbf", "München Hbf") or EVA/IBNR code. |
| `destination` | string | "München Hbf" | Arrival station name or EVA/IBNR code. |
| `date` | string | tomorrow | Travel date in YYYY-MM-DD format. Empty defaults to tomorrow. |
| `time` | string | "08:00" | Departure time in HH:MM (24h). Empty defaults to 08:00. |
| `fareClass` | string | "2" | "1" for 1st class, "2" for 2nd class. |
| `includeLocalTrains` | boolean | true | Include S-Bahn, RE, RB, U-Bahn, Tram, Bus. Set to false to restrict to ICE/IC/EC/IR. |
| `maxItems` | integer | 50 | Maximum journey records to return. |
| `proxyConfiguration` | object | Apify Residential | Standard Apify proxy config. Residential is recommended for production runs. |

#### Long-distance only example

```json
{
  "origin": "Hamburg Hbf",
  "destination": "Frankfurt(Main)Hbf",
  "includeLocalTrains": false,
  "fareClass": "1",
  "maxItems": 30
}
```

#### EVA code example

```json
{
  "origin": "8011160",
  "destination": "8000261",
  "date": "2026-05-15",
  "time": "07:00",
  "maxItems": 100
}
```

***

### Deutsche Bahn Timetable Scraper Output Fields

```json
{
  "journey_id": "21d88e04_3",
  "origin_station": "Berlin Hbf",
  "origin_id": "8011160",
  "destination_station": "München Hbf",
  "destination_id": "8000261",
  "departure_time": "2026-04-26T08:36:00",
  "departure_time_realtime": "",
  "arrival_time": "2026-04-26T12:46:00",
  "arrival_time_realtime": "",
  "duration_minutes": 250,
  "transfers": 0,
  "train_segments": [
    "ICE 1005 | Berlin Hbf -> München Hbf | 08:36 -> 12:46 | platforms 4/22 | DB Fernverkehr AG"
  ],
  "platform_departure": "4",
  "platform_arrival": "22",
  "train_type": "ICE",
  "train_number": "1005",
  "train_name": "ICE 1005",
  "carrier": "DB Fernverkehr AG",
  "delay_minutes": null,
  "cancelled": false,
  "occupancy_class_1": 1,
  "occupancy_class_2": 2,
  "ris_notizen": ["Hält nur zum Einsteigen"],
  "bahn_de_url": "https://www.bahn.de/buchung/fahrplan/suche#sts=true&so=Berlin%20Hbf&zo=M%C3%BCnchen%20Hbf&..."
}
```

| Field | Type | Description |
|-------|------|-------------|
| `journey_id` | string | Stable trip identifier from bahn.de (`tripId`). |
| `origin_station` | string | Departure station name. |
| `origin_id` | string | EVA/IBNR code for the origin. |
| `destination_station` | string | Arrival station name. |
| `destination_id` | string | EVA/IBNR code for the destination. |
| `departure_time` | string | Scheduled departure (ISO 8601 local time). |
| `departure_time_realtime` | string | Real-time-adjusted departure when bahn.de has it. Empty otherwise. |
| `arrival_time` | string | Scheduled arrival. |
| `arrival_time_realtime` | string | Real-time-adjusted arrival when available. |
| `duration_minutes` | number | Total scheduled duration in minutes. |
| `transfers` | number | Number of train changes. |
| `train_segments` | array of string | Per-leg formatted lines: train, route, times, platforms, carrier. |
| `platform_departure` | string | Departure platform at the origin. |
| `platform_arrival` | string | Arrival platform at the destination. |
| `train_type` | string | Primary train type — ICE, IC, EC, IR, RE, RB, S, U, Bus. |
| `train_number` | string | Primary train number (e.g. "1005"). |
| `train_name` | string | Friendly name (e.g. "ICE 1005"). |
| `carrier` | string | Operating carrier — DB Fernverkehr AG, Flixtrain, ODEG, and so on. |
| `delay_minutes` | number|null | Real-time delay in minutes at origin. `null` when no real-time data is available. |
| `cancelled` | boolean | True if any segment is cancelled. |
| `occupancy_class_1` | number | 1st-class occupancy forecast (0=unknown, 1=low, 2=medium, 3=high, 4=very high). |
| `occupancy_class_2` | number | 2nd-class occupancy forecast on the same 0-4 scale. |
| `ris_notizen` | array of string | Real-time advisories (cancellations, platform changes, board-only stops). |
| `bahn_de_url` | string | Direct deeplink into bahn.de for this trip. |

***

### FAQ

#### How do I scrape Deutsche Bahn schedules?

Deutsche Bahn Timetable Scraper hits the bahn.de Reiseauskunft JSON backend directly. You pass an origin, destination, and date — the scraper resolves stations, queries the journey API, and returns clean records. No browser, no captcha solving.

#### How much does Deutsche Bahn Timetable Scraper cost to run?

The scraper runs on pay-per-event pricing: $0.10 per actor start plus $0.001 per record. A 50-record run lands at about $0.15. Bulk operators can negotiate a custom rate.

#### What data can I get from bahn.de?

Deutsche Bahn Timetable Scraper returns 24 fields per journey, including station names and EVA codes, scheduled and real-time departure/arrival times, transfers, per-segment train info (type, number, platforms, carrier), occupancy forecasts for both classes, and any active real-time advisories.

#### Does Deutsche Bahn Timetable Scraper need proxies?

Deutsche Bahn Timetable Scraper works without proxies for small runs but ships with Apify Residential enabled by default. bahn.de sits behind Akamai, which gets uncomfortable around ~5 req/s per IP — proxies prevent that conversation.

#### Can I get fare data?

Deutsche Bahn Timetable Scraper does not return ticket prices. The bahn.de fare endpoint moved behind authentication in 2026 and is no longer reachable from the public web SPA. The scraper covers schedules, routing, platforms, and real-time data — everything except the price tag.

#### Does it support international DB routes?

Deutsche Bahn Timetable Scraper supports any journey routable through DB's Reiseauskunft, including international routes to Austria, Switzerland, France, Netherlands, Belgium, Poland, and Denmark. Pass any DB-recognised station name and it works.

***

### Need More Features?

Need station-board mode, fare data, or a different rail operator? [File an issue](https://console.apify.com/actors/issues) or get in touch.

### Why Use Deutsche Bahn Timetable Scraper?

- **Affordable** — $0.10/start + $0.001/record. A 1000-journey run is roughly $1.10, which is less than the train fare.
- **First on Apify** — There is no other Deutsche Bahn scraper on the store. The commercial HAFAS licence runs into thousands of euros per year, which is a different conversation.
- **Real-time aware** — Surfaces delays, cancellations, platform changes, and occupancy directly from the same feed bahn.de's app uses, so the data matches what passengers actually see.

# Actor input Schema

## `sp_intended_usage` (type: `string`):

Please describe how you plan to use the data extracted by this crawler.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

Provide your email address so we can get in touch with you.

## `origin` (type: `string`):

Departure station name (e.g. 'Berlin Hbf', 'München Hbf', 'Hamburg Hbf') or EVA/IBNR code.

## `destination` (type: `string`):

Arrival station name (e.g. 'München Hbf') or EVA/IBNR code.

## `date` (type: `string`):

Travel date in YYYY-MM-DD format. Empty = tomorrow.

## `time` (type: `string`):

Departure time in HH:MM (24h). Empty = 08:00.

## `fareClass` (type: `string`):

No description

## `includeLocalTrains` (type: `boolean`):

If enabled (default), include S-Bahn, RE, RB, U-Bahn, Tram, Bus. Disable to restrict to long-distance ICE/IC/EC/IR.

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

Maximum journey records to return.

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

Proxies. Residential recommended; works without proxies at low volume.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "origin": "Berlin Hbf",
  "destination": "München Hbf",
  "fareClass": "2",
  "includeLocalTrains": true,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "origin": "Berlin Hbf",
    "destination": "München Hbf",
    "date": "",
    "time": "",
    "fareClass": "2",
    "includeLocalTrains": true,
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/deutsche-bahn-timetable-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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "origin": "Berlin Hbf",
    "destination": "München Hbf",
    "date": "",
    "time": "",
    "fareClass": "2",
    "includeLocalTrains": True,
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/deutsche-bahn-timetable-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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "origin": "Berlin Hbf",
  "destination": "München Hbf",
  "date": "",
  "time": "",
  "fareClass": "2",
  "includeLocalTrains": true,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call jungle_synthesizer/deutsche-bahn-timetable-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Deutsche Bahn Timetable Scraper - Schedules & Real-Time Delays",
        "description": "Scrape Deutsche Bahn (bahn.de) journey plans, train schedules, platforms, transfers, real-time delays, and occupancy forecasts. Supports ICE, IC/EC, RE, RB, S-Bahn across Germany plus international DB routes (AT, CH, FR, NL, BE, PL, DK).",
        "version": "1.0",
        "x-build-id": "GgibQckCbJl8iZWw5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jungle_synthesizer~deutsche-bahn-timetable-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jungle_synthesizer-deutsche-bahn-timetable-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/jungle_synthesizer~deutsche-bahn-timetable-scraper/runs": {
            "post": {
                "operationId": "runs-sync-jungle_synthesizer-deutsche-bahn-timetable-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/jungle_synthesizer~deutsche-bahn-timetable-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-jungle_synthesizer-deutsche-bahn-timetable-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": {
                    "sp_intended_usage": {
                        "title": "What is the intended usage of this data?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Please describe how you plan to use the data extracted by this crawler."
                    },
                    "sp_improvement_suggestions": {
                        "title": "How can we improve this crawler for you?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide any feedback or suggestions for improvements."
                    },
                    "sp_contact": {
                        "title": "Contact Email",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide your email address so we can get in touch with you."
                    },
                    "origin": {
                        "title": "Origin Station",
                        "type": "string",
                        "description": "Departure station name (e.g. 'Berlin Hbf', 'München Hbf', 'Hamburg Hbf') or EVA/IBNR code."
                    },
                    "destination": {
                        "title": "Destination Station",
                        "type": "string",
                        "description": "Arrival station name (e.g. 'München Hbf') or EVA/IBNR code."
                    },
                    "date": {
                        "title": "Date (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Travel date in YYYY-MM-DD format. Empty = tomorrow."
                    },
                    "time": {
                        "title": "Time (HH:MM)",
                        "type": "string",
                        "description": "Departure time in HH:MM (24h). Empty = 08:00."
                    },
                    "fareClass": {
                        "title": "Fare Class",
                        "enum": [
                            "2",
                            "1"
                        ],
                        "type": "string",
                        "description": ""
                    },
                    "includeLocalTrains": {
                        "title": "Include Local & Regional Trains",
                        "type": "boolean",
                        "description": "If enabled (default), include S-Bahn, RE, RB, U-Bahn, Tram, Bus. Disable to restrict to long-distance ICE/IC/EC/IR.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max Journeys",
                        "type": "integer",
                        "description": "Maximum journey records to return.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxies. Residential recommended; works without proxies at low volume."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
