# Japan Highway Bus Scraper — Timetables & Fares (Kosokubus) (`jungle_synthesizer/kosokubus-japan-intercity-bus-scraper`) Actor

Scrape Japanese intercity bus data from Kosokubus.com. Covers Willer Express, JR Bus (all 6 regional subsidiaries), Sakura Kotsu, Keio Bus, Odakyu City Bus, Meitetsu Bus, and 30+ operators. Returns seat class, amenities, overnight flag, fares in JPY, and availability.

- **URL**: https://apify.com/jungle\_synthesizer/kosokubus-japan-intercity-bus-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Travel, Business
- **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

## Japan Highway Bus Scraper (Kosokubus)

Extracts Japanese intercity highway-bus timetables and fares from [Kosokubus.com](https://www.kosokubus.com) — Japan's largest bus booking aggregator. Covers Willer Express, all six JR Bus regional subsidiaries (Kanto, Tohoku, Chubu, West, Shikoku, Kyushu), Sakura Kotsu, Keio Bus, Odakyu City Bus, Meitetsu Bus, Kintetsu Bus, Hankyu Bus, and 30+ other operators. Returns structured records per route with seat class, amenities, overnight flag, fares in JPY, and live availability.

### Japan Highway Bus Scraper Features

- Search any origin-to-destination prefecture pair using 5-digit prefecture codes (e.g. `00013` for Tokyo, `00027` for Osaka)
- Leave origin/destination blank to crawl all major corridors automatically
- Filter by overnight-only service, seat class (4-row standard, 3-row relax, 2-row executive, Cocoon pod), or female-only seating requirement
- Extracts 26 fields per route including operator name (Japanese + English romaji), all boarding/alighting stops, departure/arrival times, journey duration, fares, amenities, and direct booking URLs
- Cap total results with `maxItems` to retrieve a quick sample without crawling full corridors
- Runs on residential Japanese proxy for reliable geo-consistent results

### Who Uses Japanese Bus Timetable Data?

- **Travel aggregators** — build or update Japan bus search engines with structured route, fare, and availability data
- **Inbound tourism apps** — show visitors affordable highway-bus alternatives to Shinkansen, with seat-class breakdowns and overnight options
- **JR Pass calculators** — surface competing bus fares on covered corridors to help travelers decide whether a pass makes sense
- **Transport researchers** — map intercity bus networks, track fare changes, or analyse operator coverage by prefecture pair
- **Price monitoring tools** — alert on fare changes or availability drops for specific corridors

### How Japan Highway Bus Scraper Works

1. You supply origin and destination prefecture codes (or leave them blank for major corridors).
2. The scraper fetches the Kosokubus bus-list page for each corridor — a fully server-rendered HTML page listing all routes, no JavaScript needed.
3. Each route card is parsed: operator, stops, seat class, amenities, fares, and availability are extracted and saved as a structured record. Filters (overnight, seat class, female-only) are applied before saving. The scraper stops when `maxItems` is reached.

### Input

```json
{
  "origin": "00013",
  "destination": "00027",
  "overnightOnly": false,
  "seatClass": "any",
  "femaleOnly": false,
  "maxItems": 10
}
````

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `origin` | String | (blank) | Origin prefecture code. `00013` = Tokyo, `00027` = Osaka, `00026` = Kyoto. Leave blank for major corridors. |
| `destination` | String | (blank) | Destination prefecture code. Leave blank to crawl all destinations from the given origin. |
| `overnightOnly` | Boolean | `false` | When `true`, returns only overnight services (depart evening, arrive morning). |
| `seatClass` | String | `"any"` | Minimum seat class: `any`, `4row`, `3row`, `2row`, or `pod` (Cocoon). |
| `femaleOnly` | Boolean | `false` | When `true`, returns only routes with a female-only seating area. |
| `maxItems` | Integer | `10` | Maximum route records to return. |
| `proxyConfiguration` | Object | Residential JP | Apify proxy config. Residential Japan proxy is strongly recommended for geo-consistent results. |

#### Tokyo to Osaka — First 5 Routes

```json
{
  "origin": "00013",
  "destination": "00027",
  "maxItems": 5
}
```

#### Overnight Buses Only — Tokyo to Nagoya

```json
{
  "origin": "00013",
  "destination": "00023",
  "overnightOnly": true,
  "maxItems": 20
}
```

#### All Routes from Osaka — No Destination Filter

```json
{
  "origin": "00027",
  "maxItems": 50
}
```

### Japan Highway Bus Scraper Output Fields

```json
{
  "trip_id": "express-dream-goto",
  "operator": "ジェイアールバス関東",
  "operator_en": "JR Bus Kanto",
  "route_name": "ドリームなごや号",
  "origin_terminal": "東京駅八重洲南口",
  "origin_terminal_en": "",
  "origin_city": "東京",
  "destination_terminal": "名古屋駅新幹線口",
  "destination_terminal_en": "",
  "destination_city": "愛知",
  "departure_time": "23:00",
  "arrival_time": "06:30",
  "duration_minutes": 450,
  "is_overnight": true,
  "seat_class": "4-row standard",
  "seats_per_row": 4,
  "amenities": ["outlet", "toilet"],
  "female_only_seats": false,
  "fare_yen": 3800,
  "fare_yen_max": 5200,
  "seats_available": 12,
  "has_toilet": true,
  "stops": ["東京駅八重洲南口 (23:00)", "浜松 (02:45)", "名古屋駅新幹線口 (06:30)"],
  "booking_url": "https://www.kosokubus.com/bus_detail_rosen/express-dream-goto/",
  "scrape_url": "https://www.kosokubus.com/bus_list/00013/00023/"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `trip_id` | String | Internal route code from Kosokubus |
| `operator` | String | Operator name in Japanese |
| `operator_en` | String | Operator name in English / romaji |
| `route_name` | String | Marketed route name (Japanese) |
| `origin_terminal` | String | First boarding stop name (Japanese) |
| `origin_terminal_en` | String | First boarding stop name (romaji) — populated when available |
| `origin_city` | String | Origin prefecture name |
| `destination_terminal` | String | Final alighting stop name (Japanese) |
| `destination_terminal_en` | String | Final alighting stop name (romaji) — populated when available |
| `destination_city` | String | Destination prefecture name |
| `departure_time` | String | Scheduled departure time in JST (HH:MM) |
| `arrival_time` | String | Scheduled arrival time in JST (HH:MM) |
| `duration_minutes` | Integer | Total journey duration in minutes |
| `is_overnight` | Boolean | `true` if this is an overnight service |
| `seat_class` | String | One of: `4-row standard`, `3-row relax`, `2-row executive`, `Cocoon pod` |
| `seats_per_row` | Integer | Number of seats per row (2, 3, or 4) |
| `amenities` | Array | Amenities: `wifi`, `outlet`, `toilet`, `blanket`, `slippers`, `reading_light`, `curtain_divider`, `female_only_area` |
| `female_only_seats` | Boolean | `true` if a female-only seating area is available |
| `fare_yen` | Integer | Minimum fare in JPY |
| `fare_yen_max` | Integer | Maximum fare in JPY when a range is shown |
| `seats_available` | Integer | Available seats at scrape time |
| `has_toilet` | Boolean | `true` if toilet is on board |
| `stops` | Array | All intermediate stops with departure times: `"Stop Name (HH:MM)"` |
| `booking_url` | String | Direct booking detail URL on kosokubus.com |
| `scrape_url` | String | Source bus-list page URL |

### Prefecture Code Reference

The most common origin/destination codes:

| Code | Prefecture |
|------|-----------|
| `00013` | Tokyo (東京) |
| `00027` | Osaka (大阪) |
| `00026` | Kyoto (京都) |
| `00023` | Aichi / Nagoya (愛知) |
| `00040` | Fukuoka (福岡) |
| `00014` | Kanagawa / Yokohama (神奈川) |
| `00011` | Saitama (埼玉) |
| `00012` | Chiba (千葉) |
| `00028` | Hyogo / Kobe (兵庫) |
| `00034` | Hiroshima (広島) |

Codes follow the pattern `00001` (Hokkaido) through `00047` (Okinawa).

### FAQ

**How many routes can this scraper collect?**
Kosokubus lists all routes on a single corridor page with no pagination — typically 1 to 20 routes per prefecture pair. Active corridor count across all pairs is estimated at 1,000 to 3,000 routes nationwide. A full multi-corridor run returns proportionally more.

**Does it handle all operators?**
The scraper extracts whichever operators Kosokubus lists for a given corridor. Willer Express, all six JR Bus subsidiaries, Sakura Kotsu, Keio Bus, Odakyu City Bus, Meitetsu Bus, Kintetsu Bus, and Hankyu Bus all appear in typical runs.

**How fresh is the data?**
Timetable data (routes, stops, durations) is static and updated seasonally. Availability (seats remaining) and fares change daily — run the scraper on your schedule to keep those fields current.

**What does it cost to run?**
Each run has a $0.10 start fee plus $0.001 per route record. A 100-route run costs roughly $0.20. A full 1,000-route corpus costs around $1.10.

**Why do I need a Japanese residential proxy?**
Kosokubus returns geo-consistent content to Japanese IPs. Without a JP proxy, some corridors may return empty results or slightly different data. The scraper defaults to Apify residential proxy with country set to Japan.

### Need More Features?

Need custom filters, additional fields, or a different target site? [File a request](https://console.apify.com/actors/issues) or get in touch.

### Why Use Japan Highway Bus Scraper?

- **26 structured fields per route** — operator, stops, seat class, amenities, fares, and availability in one clean record, ready for import without manual cleanup
- **All major operators** — Willer, JR Bus (all 6 regionals), Sakura Kotsu, Keio, Odakyu, Meitetsu, and 30+ more on a single platform
- **Flexible scoping** — single corridor, all destinations from one origin, or full major-corridor sweep, all controlled from the same input
- **No JavaScript rendering needed** — Kosokubus serves full HTML, so the scraper is fast and lightweight on 256 MB memory

# 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`):

Origin prefecture code (e.g. 00013 for Tokyo, 00027 for Osaka, 00026 for Kyoto). Leave blank to scrape all route pairs.

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

Destination prefecture code. Leave blank to use all destinations from the selected origin.

## `overnightOnly` (type: `boolean`):

No description

## `seatClass` (type: `string`):

No description

## `femaleOnly` (type: `boolean`):

No description

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

No description

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

No description

## 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": "00013",
  "destination": "00027",
  "overnightOnly": false,
  "seatClass": "any",
  "femaleOnly": false,
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "JP"
  }
}
```

# 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": "00013",
    "destination": "00027",
    "overnightOnly": false,
    "seatClass": "any",
    "femaleOnly": false,
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "JP"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/kosokubus-japan-intercity-bus-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": "00013",
    "destination": "00027",
    "overnightOnly": False,
    "seatClass": "any",
    "femaleOnly": False,
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "JP",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/kosokubus-japan-intercity-bus-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": "00013",
  "destination": "00027",
  "overnightOnly": false,
  "seatClass": "any",
  "femaleOnly": false,
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "JP"
  }
}' |
apify call jungle_synthesizer/kosokubus-japan-intercity-bus-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Japan Highway Bus Scraper — Timetables & Fares (Kosokubus)",
        "description": "Scrape Japanese intercity bus data from Kosokubus.com. Covers Willer Express, JR Bus (all 6 regional subsidiaries), Sakura Kotsu, Keio Bus, Odakyu City Bus, Meitetsu Bus, and 30+ operators. Returns seat class, amenities, overnight flag, fares in JPY, and availability.",
        "version": "1.0",
        "x-build-id": "bfKb0KxghoTj0ccPW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jungle_synthesizer~kosokubus-japan-intercity-bus-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jungle_synthesizer-kosokubus-japan-intercity-bus-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~kosokubus-japan-intercity-bus-scraper/runs": {
            "post": {
                "operationId": "runs-sync-jungle_synthesizer-kosokubus-japan-intercity-bus-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~kosokubus-japan-intercity-bus-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-jungle_synthesizer-kosokubus-japan-intercity-bus-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": [
                    "sp_intended_usage",
                    "sp_improvement_suggestions"
                ],
                "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 Prefecture",
                        "type": "string",
                        "description": "Origin prefecture code (e.g. 00013 for Tokyo, 00027 for Osaka, 00026 for Kyoto). Leave blank to scrape all route pairs."
                    },
                    "destination": {
                        "title": "Destination Prefecture",
                        "type": "string",
                        "description": "Destination prefecture code. Leave blank to use all destinations from the selected origin."
                    },
                    "overnightOnly": {
                        "title": "Overnight Buses Only",
                        "type": "boolean",
                        "description": "",
                        "default": false
                    },
                    "seatClass": {
                        "title": "Minimum Seat Class Filter",
                        "enum": [
                            "any",
                            "4row",
                            "3row",
                            "2row",
                            "pod"
                        ],
                        "type": "string",
                        "description": ""
                    },
                    "femaleOnly": {
                        "title": "Female-Only Seating Required",
                        "type": "boolean",
                        "description": "",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max Trips",
                        "type": "integer",
                        "description": "",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
