# Turkish State Railways Ticket and Connection Scraper (`jindrich.bar/tcdd-ticket-scraper`) Actor

Scrape live TCDD train connections, schedules, ticket prices, transfers, delays, and fares across Turkey and Europe. Extract structured TCDD timetable data for travel apps, price monitoring, analytics, and AI agents.

- **URL**: https://apify.com/jindrich.bar/tcdd-ticket-scraper.md
- **Developed by:** [Jindřich Bär](https://apify.com/jindrich.bar) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.50 / 1,000 connections

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

## TCDD train tickets & connections scraper

Search TCDD (Turkish State Railways / *Türkiye Cumhuriyeti Devlet Demiryolları*) train connections
and ticket prices across Türkiye and its international routes, and get back a structured dataset of
routes, times, transfers, seat availability, and fares — ready to plug into spreadsheets, databases,
dashboards, or AI agents.

Pulls live data from the official TCDD ticket shop ([ebilet.tcddtasimacilik.gov.tr](https://ebilet.tcddtasimacilik.gov.tr/)),
so you always get the same trains, prices, and schedules a passenger would see when booking online.

### What you can do with it

- **Compare ticket prices** between stations in real time — Ankara to İstanbul, İzmir to Ankara,
  Konya to İstanbul, and any other route the TCDD timetable covers (including high-speed YHT services
  and the international sleeper to Bucharest / Sofia).
- **Check seat availability** per cabin class (Business, Economy, wheelchair) before you book.
- **Monitor fares over time** by scheduling the actor to run daily / hourly and writing the results to
  your own datastore.
- **Build a travel-planning assistant** — feed the JSON output directly into an LLM agent that answers
  "what's the cheapest YHT from Ankara to İstanbul tomorrow morning" or "is there a direct high-speed
  train from Konya to İstanbul today."

Typical use cases: travel comparison sites, price-monitoring tools, business-trip planners, train
spotters, journalists working on transport coverage, and AI agents that need a structured rail-data
source for Türkiye.

### Input

| Field | Required | Default | Description |
| --- | --- | --- | --- |
| `from` | yes | — | Departure station (e.g. `"ANKARA GAR"`, `"İSTANBUL(PENDİK)"`, `"İZMİR"`) |
| `to` | yes | — | Destination station |
| `date` | no | today | Departure date (date picker, ISO `YYYY-MM-DD`) |
| `time` | no | now | Departure time (`HH:MM`, 24-hour, Istanbul local time) |
| `adults` | no | `1` | Number of adult passengers (1–6) |
| `maxResults` | no | `20` | Maximum number of connections to push to the dataset (1–200) |

Station names are matched against the official TCDD list with **diacritics ignored** and a fuzzy
fallback, so `Istanbul` finds `İSTANBUL(…)` and `Tabriz` finds `TEBRİZ`. Matching tries, in order:
exact, exact word, prefix, substring, then closest edit-distance. When a name matches several stations
(there are five İstanbul stations), the actor prefers the pair that the timetable marks as directly
connected — e.g. it picks `İSTANBUL(HALKALI)` for an international route. It also auto-detects whether
the route is `DOMESTIC` or `INTERNATIONAL` from the stations' countries.

#### How the search works

The TCDD timetable API **only returns direct trains for a single day** and cannot build itineraries
with transfers. To collect up to `maxResults` connections the actor pages forward day by day from your
departure date, de-duplicating trains that straddle a day boundary, and stops as soon as it hits any of:
`maxResults` connections, ten days searched, two consecutive empty days, or a ~75-second time budget.
Run progress is logged per day (`19-06: +1 (3/20)`), so you can watch it fill up.

Two consequences worth knowing:

- **Sparse / international routes return fewer results and take longer.** International searches are slow
  server-side (~20 seconds each), and routes like the daily İstanbul–Sofia sleeper only run one train a
  day — so a request for `maxResults: 20` typically returns ~4 connections and stops at the time budget
  rather than paging for minutes. Dense domestic routes (e.g. Ankara–İstanbul YHT) fill up in one or two
  fast requests.
- **No direct train ⇒ 0 results.** If no direct service runs the route on the searched days, the run
  finishes cleanly with an empty dataset (and a warning if the stations aren't listed as a valid pair),
  rather than erroring.

#### Example input

```json
{
    "from": "ANKARA GAR",
    "to": "İSTANBUL(PENDİK)",
    "date": "2026-07-14",
    "time": "08:00",
    "adults": 1,
    "maxResults": 25
}
````

### Output

Each item in the dataset describes one train connection.

#### Example item

```json
{
    "id": "81001-15072026",
    "from": "ANKARA GAR",
    "to": "İSTANBUL(PENDİK)",
    "fromId": "98",
    "toId": "48",
    "departure": "2026-07-15T05:55:00+03:00",
    "arrival": "2026-07-15T09:40:00+03:00",
    "durationMinutes": 225,
    "transfers": 0,
    "priceAmount": 930,
    "priceCurrency": "TRY",
    "trainTypes": ["YHT"],
    "requiresTransfer": false,
    "legs": [
        {
            "trainId": 172246,
            "trainNumber": "81001-15072026",
            "trainName": "81001 ANKARA - İSTANBUL",
            "commercialName": "YHT ANKARA - İSTANBUL",
            "type": "YHT",
            "from": "ANKARA GAR",
            "to": "İSTANBUL(PENDİK)",
            "fromId": "98",
            "toId": "48",
            "departure": "2026-07-15T05:55:00+03:00",
            "arrival": "2026-07-15T09:40:00+03:00",
            "durationMinutes": 225,
            "distanceKm": 512.666,
            "priceAmount": 930,
            "priceCurrency": "TRY",
            "cabinClasses": [
                { "code": "C", "name": "BUSİNESS", "availabilityCount": 48, "minPrice": 1395, "minPriceCurrency": "TRY" },
                { "code": "Y1", "name": "EKONOMİ", "availabilityCount": 346, "minPrice": 930, "minPriceCurrency": "TRY" }
            ]
        }
    ]
}
```

#### Field reference

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | Connection identifier built from the train number(s) (`"81001-15072026"`) |
| `from` / `to` | string | Station names |
| `fromId` / `toId` | string | TCDD station IDs |
| `departure` / `arrival` | ISO 8601 datetime | Scheduled time in Istanbul local time (`+03:00`) |
| `durationMinutes` | integer | Total travel time |
| `transfers` | integer | Number of transfers (0 = direct) |
| `priceAmount` | number or `null` | Cheapest fare for the whole connection. Null when no bookable offer is available |
| `priceCurrency` | string or `null` | ISO 4217 (`"TRY"`) |
| `trainTypes` | array | Distinct train categories across the legs, e.g. `["YHT"]` (high-speed), `["AH"]` (mainline) |
| `requiresTransfer` | boolean | `true` when the connection requires changing trains |
| `legs[]` | array | Per-leg breakdown: train number/name, type, departure/arrival, distance, fare, and per-cabin-class seat availability |

`cabinClasses[]` on each leg lists every bookable cabin class with its remaining seat count
(`availabilityCount`) and cheapest fare (`minPrice` / `minPriceCurrency`).

### Pricing

Pay-per-event — one `search-result` event is charged for each connection pushed to the dataset. A query
with `maxResults: 10` charges for at most ten events, regardless of how many requests the actor makes
under the hood.

### Using the API

Trigger runs from your own code via the Apify API. With your Apify API token, a `POST` request runs the
actor synchronously and returns the dataset items:

```bash
curl -X POST "https://api.apify.com/v2/acts/jindrich.bar~tcdd-ticket-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
    -H "Content-Type: application/json" \
    -d '{"from": "ANKARA GAR", "to": "İSTANBUL(PENDİK)", "maxResults": 10}'
```

Or run asynchronously and poll for status / dataset items:

```bash
## Start a run
curl -X POST "https://api.apify.com/v2/acts/jindrich.bar~tcdd-ticket-scraper/runs?token=<APIFY_TOKEN>" \
    -H "Content-Type: application/json" \
    -d '{"from": "ANKARA GAR", "to": "İSTANBUL(PENDİK)"}'

## When it's done, read the dataset
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<APIFY_TOKEN>"
```

Official client libraries are available for [JavaScript / TypeScript](http://docs.apify.com/sdk/js),
[Python](http://docs.apify.com/sdk/python), and via the [Apify REST API](http://docs.apify.com/api/v2)
directly.

### Scheduling

Run the actor on a cron schedule from the **Schedules** tab in the Apify console — daily, hourly, or any
custom cron expression. Common patterns:

- **Daily price snapshot at 09:00** — track YHT fare changes for a fixed Ankara → İstanbul route.
- **Hourly refresh for a holiday week** — keep a real-time price board for a popular route.
- **Weekly market scan** — compare a basket of intercity routes for week-over-week price changes.

### Use with AI Agents (Apify MCP)

This actor is exposed through the
[Apify Model Context Protocol (MCP) server](https://docs.apify.com/platform/integrations/mcp), so any AI
agent that speaks MCP — Claude, ChatGPT custom agents, OpenAI Agents SDK, Cursor, etc. — can call it
directly to fetch live TCDD ticket prices and connection options.

Once the Apify MCP server is connected, the agent picks up the actor's input schema automatically.
Typical prompts that work out of the box:

- *"What's the cheapest YHT from Ankara to İstanbul tomorrow morning?"*
- *"Find me a direct high-speed train from Konya to İstanbul on 2026-07-14."*
- *"How long does the train from İzmir to Ankara take, and when does the next one leave?"*
- *"Is there an international sleeper from İstanbul to Bucharest in the next two weeks?"*

### Troubleshooting & support

Most issues come from station naming, date/time formatting, or sparsely-served routes.

#### Common problems

**No results returned**

- The departure date is in the past, or beyond the TCDD timetable horizon. Pick a date within the next
  months.
- There's no **direct** train on the searched days — the API can't build transfer itineraries, so such
  routes return an empty dataset by design. The actor logs a warning when the destination isn't listed
  as reachable from the origin.

**Fewer results than `maxResults` (or the run takes a while)**

- This is expected on sparse and international routes: the actor pages one day per request, international
  requests are ~20 seconds each, and some routes run only one train a day. It stops at a ~75-second time
  budget, so you may get only a handful of connections. Dense domestic routes fill up quickly. See
  *How the search works* above.

**`No station found for "…"` error**

- Station names are matched against the official TCDD list with diacritics ignored and a fuzzy fallback,
  so `"istanbul"`, `"Ankara"`, or a small typo usually resolves. If it still fails, try the name closer
  to how TCDD spells it (e.g. `"ANKARA GAR"`, `"İSTANBUL(PENDİK)"`, `"İZMİR (BASMANE)"`).

**Times look off by a few hours**

- All times are returned in **Istanbul local time** (`+03:00`). Turkey observes a fixed UTC+3 with no
  daylight saving.

**Different prices than the TCDD shop shows in a browser**

- The actor returns the cheapest available fare per cabin class. Member discounts, promo codes, and
  reduced passenger types (student, senior, child) aren't applied — those require a logged-in account or
  a specific passenger type.

#### Support

Open an issue on the actor's **Issues** tab in the Apify console. Include the full input JSON, the run
ID (visible in the run URL), and the expected vs. actual output.

### Need a different data source?

If you're scraping connections across multiple operators, check our companion actors:

- [**ÖBB ticket scraper**](https://apify.com/jindrich.bar/oebb-ticket-scraper) — Austrian and Central-European rail timetable and ticket prices.
- [**Deutsche Bahn ticket scraper**](https://apify.com/jindrich.bar/deutsche-bahn-ticket-scraper) — German and European rail timetable and ticket prices.
- [**Flixbus connection scraper**](https://apify.com/jindrich.bar/flixbus-connections) — long-distance bus routes across Europe and the US.

All these actors emit a comparable schema (`from`, `to`, `departure`, `arrival`, `price`, leg-level
breakdown), so an aggregator agent can merge their outputs into a single multi-modal travel search.

# Actor input Schema

## `from` (type: `string`):

Departure station name (e.g. "ANKARA GAR", "İSTANBUL(PENDİK)", "İZMİR"). Matched case-insensitively against the official TCDD station list.

## `to` (type: `string`):

Destination station name.

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

Departure date (YYYY-MM-DD). Leave empty to use today.

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

Time in HH:MM (24h) format, Istanbul local time. Leave empty to use the current time.

## `adults` (type: `integer`):

Number of adult passengers.

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

Maximum number of journeys to push to the dataset.

## Actor input object example

```json
{
  "from": "ANKARA GAR",
  "to": "İSTANBUL(PENDİK)",
  "adults": 1,
  "maxResults": 20
}
```

# Actor output Schema

## `journeys` (type: `string`):

Default dataset items — one entry per connection, with legs, transfer count and fares.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("jindrich.bar/tcdd-ticket-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("jindrich.bar/tcdd-ticket-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 '{}' |
apify call jindrich.bar/tcdd-ticket-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Turkish State Railways Ticket and Connection Scraper",
        "description": "Scrape live TCDD train connections, schedules, ticket prices, transfers, delays, and fares across Turkey and Europe. Extract structured TCDD timetable data for travel apps, price monitoring, analytics, and AI agents.",
        "version": "0.0",
        "x-build-id": "1Bih5GxoHbeuHkJLT"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jindrich.bar~tcdd-ticket-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jindrich.bar-tcdd-ticket-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/jindrich.bar~tcdd-ticket-scraper/runs": {
            "post": {
                "operationId": "runs-sync-jindrich.bar-tcdd-ticket-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/jindrich.bar~tcdd-ticket-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-jindrich.bar-tcdd-ticket-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",
                "required": [
                    "from",
                    "to"
                ],
                "properties": {
                    "from": {
                        "title": "From station",
                        "type": "string",
                        "description": "Departure station name (e.g. \"ANKARA GAR\", \"İSTANBUL(PENDİK)\", \"İZMİR\"). Matched case-insensitively against the official TCDD station list.",
                        "default": "ANKARA GAR"
                    },
                    "to": {
                        "title": "To station",
                        "type": "string",
                        "description": "Destination station name.",
                        "default": "İSTANBUL(PENDİK)"
                    },
                    "date": {
                        "title": "Departure date",
                        "type": "string",
                        "description": "Departure date (YYYY-MM-DD). Leave empty to use today."
                    },
                    "time": {
                        "title": "Departure time",
                        "pattern": "^\\d{1,2}:\\d{2}$",
                        "type": "string",
                        "description": "Time in HH:MM (24h) format, Istanbul local time. Leave empty to use the current time."
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "maximum": 6,
                        "type": "integer",
                        "description": "Number of adult passengers.",
                        "default": 1
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of journeys to push to the dataset.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
