# 🇰🇷 Korea BoK · 한국은행 ECOS 기준금리 통화정책 (`nexgendata/korea-bok-monetary-policy-ecos`) Actor

Bank of Korea (BoK) ECOS Open API wrapper — Korea base rate (기준금리), monetary aggregates (M1/M2), GDP, CPI, FX reserves, and trade balance as structured macro records for KRW/USD FX desks, EM-rates PMs, Korean equity strategists, and AI-agent integrations.

- **URL**: https://apify.com/nexgendata/korea-bok-monetary-policy-ecos.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 macro records

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

## 🏦 Korea BoK Monetary Policy + ECOS Macro Data

**Live Bank of Korea base rate (기준금리), monetary aggregates (M1/M2), GDP, CPI, FX reserves, and trade balance — KRW-denominated source-of-truth feed from the official BoK ECOS Open API.**

Built for KRW/USD FX traders, EM-rates PMs, Korean equity strategists, macro hedge-fund analysts, and AI-agent integrations that need clean, structured Korea monetary data without paying $24K/yr for a Bloomberg terminal.

---

### ⚡ What you get

Per record (stable 9-field schema):

| Field | Description |
|---|---|
| `data_type` | One of `base_rate`, `krw_reserves`, `monetary_aggregates`, `gdp`, `cpi`, `trade_balance` |
| `stat_code` | ECOS statistic code (e.g. `722Y001` for base rate, `901Y009` for CPI) |
| `stat_name_kr` | Series name in Korean (e.g. "한국은행 기준금리"), with sub-item label appended |
| `stat_name_en` | Series name in English (e.g. "BoK base rate") |
| `period` | ECOS period string — `YYYYMMDD` (daily) / `YYYYMM` (monthly) / `YYYYQn` (quarterly) / `YYYY` (annual) |
| `value` | Numeric value (rate %, KRW billion, USD million, index level) |
| `unit` | Unit string (e.g. `% per annum`, `KRW billion`, `USD million`, `index`) |
| `source_url` | The exact `ecos.bok.or.kr/api/StatisticSearch/...` URL the row came from |
| `fetched_at` | UTC timestamp of the actor fetch |

---

### 🎯 Use cases

1. **KRW/USD FX desks** — daily BoK base rate + monthly FX reserves + trade balance in one async pull instead of three terminal screens.
2. **EM-rates PMs** — quarterly real/nominal GDP + monthly CPI feed for Korea sleeve of EM-local rates portfolio.
3. **Korean equity strategists** — pair with `kospi-stock-screener` and `tse-japan-stock-screener` for the full Korea-Japan equity-vs-macro overlay.
4. **AI macro agents** — clean structured rows to answer "what's the current BoK base rate" or "what was Korean CPI YoY in March".
5. **Research / academia** — long-window stable BoK time series (base rate back to 1999, CPI back to 1965 monthly) for monetary-economics papers.
6. **Bond-duration management** — Korea sovereign rate path for KTB curve positioning + KRW reserve-recycling flow into US Treasuries.

---

### 📊 Sample Output

![Korea BoK Monetary Policy + ECOS Macro Data sample](https://api.apify.com/v2/key-value-stores/8gLgXMBveEI1tTz1z/records/korea-bok-monetary-policy-ecos-output.png)

The dashboard renders the current BoK base rate (기준금리), the latest M1/M2 monetary aggregates, KRW FX reserves, CPI level + YoY trend, and the latest trade balance print — all in one image with full Korean terminology rendered in Noto Sans CJK KR.

---

### 🇰🇷 한국어 설명

한국은행 경제통계시스템(ECOS) Open API를 통해 한국 기준금리, 통화량(M1/M2), GDP, CPI, 외환보유고 등 주요 거시 경제 지표를 구조화된 데이터로 제공합니다.

주요 용도:
- 한국 매크로 분석
- KRW/USD 환율 트레이딩
- 채권 듀레이션 관리
- 한국 통화정책 모니터링

본 액터는 한국은행 ECOS Open API 이용약관에 따라 **사용자별 개인 인증키**(약 1,000 calls/day 제한)를 요구합니다. 공유 키는 제공하지 않습니다. 무료 키 발급: https://ecos.bok.or.kr/api/

---

### 🔑 API key (required)

**You must supply your own free BoK ECOS Open API key.** Register at https://ecos.bok.or.kr/api/ — registration is free, takes about 2 minutes, and asks for an email + intended use. Once registered, BoK emails you a raw alphanumeric key.

**Why a personal key?** ECOS terms-of-service rate-limit each key to roughly **1,000 calls per day**. We could ship a shared key, but if a single high-volume buyer ran a backfill it would block every other buyer for the rest of the day. Personal keys give you a clean 1,000-call/day quota that nobody else can exhaust.

If you forget to set the key (or paste a placeholder like `"TEST"`), the actor exits cleanly with a single error record explaining the issue — it will not crash or fail Apify QA.

---

### 📥 Sample input

```json
{
  "bok_ecos_api_key": "YOUR_ECOS_KEY_HERE",
  "data_type": "all",
  "cycle": "M",
  "date_from": "2025-01-01",
  "date_to": "2026-05-31",
  "max_records": 100
}
````

Variants:

- **Just the base rate (daily, last 30 days):** `{"bok_ecos_api_key": "...", "data_type": "base_rate", "cycle": "D", "date_from": "2026-05-01", "date_to": "2026-05-31"}`
- **Just CPI (monthly, last 5 years):** `{"bok_ecos_api_key": "...", "data_type": "cpi", "cycle": "M", "date_from": "2021-01-01", "date_to": "2026-05-31"}`
- **Specific ECOS stat code (advanced):** `{"bok_ecos_api_key": "...", "stat_code_filter": "731Y004", "cycle": "M"}`

***

### 📤 Sample output

```json
[
  {
    "data_type": "base_rate",
    "stat_code": "722Y001",
    "stat_name_kr": "한국은행 기준금리 — 한국은행 기준금리",
    "stat_name_en": "BoK base rate — 한국은행 기준금리",
    "period": "20260514",
    "value": 2.75,
    "unit": "% per annum",
    "source_url": "https://ecos.bok.or.kr/api/StatisticSearch/.../json/kr/1/100/722Y001/D/20260501/20260531",
    "fetched_at": "2026-05-31T12:00:00+00:00"
  },
  {
    "data_type": "cpi",
    "stat_code": "901Y009",
    "stat_name_kr": "소비자물가지수 (2020=100) — 총지수",
    "stat_name_en": "Consumer price index (2020=100) — 총지수",
    "period": "202604",
    "value": 116.05,
    "unit": "index",
    "source_url": "https://ecos.bok.or.kr/api/StatisticSearch/.../json/kr/1/100/901Y009/M/202401/202605",
    "fetched_at": "2026-05-31T12:00:00+00:00"
  }
]
```

***

### 🔄 How the data flows

| Stage | What happens |
|---|---|
| 1. Plan | Expand `data_type` (or `stat_code_filter`) into a list of `(stat_code, cycle)` pairs from the built-in registry — base rate `722Y001/D`, KRW reserves `731Y001/M`, M1/M2 `101Y002`/`101Y003/M`, GDP `200Y102`/`111Y018/Q`, CPI `901Y009/M`, trade balance `301Y013/M`. |
| 2. Encode period | Convert ISO `date_from`/`date_to` into ECOS period strings — `YYYYMMDD`, `YYYYMM`, `YYYYQn`, or `YYYY` based on the cycle. |
| 3. Fetch | Per stat code: `GET /api/StatisticSearch/{key}/json/kr/1/{endIdx}/{statCode}/{cycle}/{start}/{end}` with a polite identified User-Agent. |
| 4. Detect errors | If ECOS returns `{"RESULT": {"CODE": "ERROR-...", "MESSAGE": "..."}}` (invalid key, rate-limited, no data), emit a single error record with the ECOS code instead of crashing. |
| 5. Normalize | For each ECOS row, extract `STAT_CODE`, `STAT_NAME`, `ITEM_NAME1..4` (sub-item labels like M1 vs M2 or exports vs imports), `TIME`, `DATA_VALUE`, `UNIT_NAME`. Cast value to float. |
| 6. Emit | `Actor.push_data(record)` + `Actor.charge("macro-record")` per row, up to `max_records`. |

***

### ⏱️ Rate limit reality

BoK ECOS terms-of-service cap each key at **~1,000 calls/day**. This actor makes one HTTP call per stat code per run, so a `data_type="all"` run uses 8 calls (one for each of the 8 codes in the registry). At default `max_records=100`, you can run this actor 100+ times/day without coming close to the cap. If you do hit it, ECOS returns `{"RESULT": {"CODE": "ERROR-602", "MESSAGE": "과도한 OpenAPI호출..."}}` and this actor emits a clean error record (no crash).

***

### 🔗 Related Actors

Pair with these production-grade NexGenData siblings for full APAC-macro / equity coverage:

- **[🇰🇷 KOSPI Stock Screener](https://apify.com/nexgendata/kospi-stock-screener)** — Korean equity universe (KOSPI / KOSDAQ tickers, GICS sectors, fundamentals) — natural pair for KOSPI-vs-base-rate analysis.
- **[🇯🇵 TSE Japan Stock Screener](https://apify.com/nexgendata/tse-japan-stock-screener)** — Japanese equity universe — pair for the Korea-Japan equity-vs-macro overlay desks run.
- **[🇯🇵 Japan EDINET Insider Filings](https://apify.com/nexgendata/japan-edinet-insider-filings)** — Japanese FSA EDINET corporate filings — adjacent regulatory feed for Japan-Korea cross-market desks.
- **[📅 APAC IPO Calendar Sweep](https://apify.com/nexgendata/apac-ipo-calendar-sweep)** — Asia-Pacific IPO calendar (TSE / KOSPI / HKEX / SGX) — primary-market companion to this secondary-market macro feed.
- **[📢 SGX Company Announcements](https://apify.com/nexgendata/sgx-company-announcements)** — Singapore Exchange disclosures — second key APAC-financial-hub feed.
- **[💱 Currency Exchange Rates](https://apify.com/nexgendata/currency-exchange-rates)** — Live FX rates — pair with BoK base rate + KRW reserves for the full KRW-flow picture.
- **[📈 Stock Exchange Meta Scraper](https://apify.com/nexgendata/stock-exchange-meta-scraper)** — Global exchange registry — useful for cross-listing checks against Korean ADRs.

***

### 📜 Legal posture

- **Source:** BoK ECOS Open API at `ecos.bok.or.kr/api/StatisticSearch/...`. Statistical publication mandated by **Bank of Korea Act §86** and the Korean **Public Data Act §17** (open commercial reuse).
- **License:** ECOS terms of service §3 permit research, commercial use, and redistribution with attribution. No PII.
- **Rate limit:** ~1,000 calls/day per registered key (ECOS ToS). This actor surfaces ECOS rate-limit envelopes (`ERROR-602`) as graceful error rows.
- **Polite identified User-Agent** declared on every request (`NexGenData BoK ECOS Macro Actor (hello@thenextgennexus.com)`).

# Actor input Schema

## `bok_ecos_api_key` (type: `string`):

REQUIRED. Your personal Bank of Korea ECOS Open API key — register free at https://ecos.bok.or.kr/api/. Per BoK ECOS terms of service the key is per-user and rate-limited to ~1,000 calls/day; for that reason this actor does NOT ship a shared key. Paste your raw alphanumeric key.

## `data_type` (type: `string`):

Which Korea-macro slice to pull. 'base\_rate' = BoK base rate (기준금리, 722Y001). 'krw\_reserves' = Korea FX reserves (731Y001). 'monetary\_aggregates' = M1/M2 money stock (101Y002 / 101Y003). 'gdp' = real/nominal GDP (200Y102 / 111Y018). 'cpi' = consumer price index (901Y009). 'trade\_balance' = exports/imports/balance (301Y013 / 403Y001). 'all' = every category (capped by max\_records).

## `stat_code_filter` (type: `string`):

Optional ECOS statistic code override. If set, this single code is queried INSTEAD OF the data\_type defaults — useful for advanced users who already know the ECOS stat code they want (e.g. '722Y001' for base rate, '731Y004' for KRW reserves, '901Y009' for CPI). Browse codes at https://ecos.bok.or.kr/api/#/AdvancedSearch.

## `cycle` (type: `string`):

ECOS frequency — D=daily, M=monthly, Q=quarterly, A=annual. Must match the stat code's available frequency (e.g. base rate is D, GDP is Q). When data\_type='all' the actor selects an appropriate cycle per code; this field then acts as a hint for ambiguous codes.

## `date_from` (type: `string`):

Lower bound for the period (inclusive), ISO format YYYY-MM-DD. Default = 1 year before today. ECOS internally converts to YYYYMMDD / YYYYMM / YYYYQn / YYYY based on the cycle.

## `date_to` (type: `string`):

Upper bound for the period (inclusive), ISO format YYYY-MM-DD. Default = today.

## `max_records` (type: `integer`):

Hard cap on number of records pushed to the dataset. Range 1-1000. Default 100. NOTE: BoK ECOS itself rate-limits to ~1,000 calls/day per key per ToS; this cap is independent and applies to dataset rows.

## Actor input object example

```json
{
  "data_type": "all",
  "cycle": "M",
  "max_records": 100
}
```

# 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 = {
    "bok_ecos_api_key": "",
    "data_type": "all",
    "stat_code_filter": "",
    "cycle": "M",
    "date_from": "",
    "date_to": "",
    "max_records": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/korea-bok-monetary-policy-ecos").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 = {
    "bok_ecos_api_key": "",
    "data_type": "all",
    "stat_code_filter": "",
    "cycle": "M",
    "date_from": "",
    "date_to": "",
    "max_records": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/korea-bok-monetary-policy-ecos").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 '{
  "bok_ecos_api_key": "",
  "data_type": "all",
  "stat_code_filter": "",
  "cycle": "M",
  "date_from": "",
  "date_to": "",
  "max_records": 100
}' |
apify call nexgendata/korea-bok-monetary-policy-ecos --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/korea-bok-monetary-policy-ecos",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🇰🇷 Korea BoK · 한국은행 ECOS 기준금리 통화정책",
        "description": "Bank of Korea (BoK) ECOS Open API wrapper — Korea base rate (기준금리), monetary aggregates (M1/M2), GDP, CPI, FX reserves, and trade balance as structured macro records for KRW/USD FX desks, EM-rates PMs, Korean equity strategists, and AI-agent integrations.",
        "version": "0.0",
        "x-build-id": "RdbiMLbr0AkgvpCm2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~korea-bok-monetary-policy-ecos/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-korea-bok-monetary-policy-ecos",
                "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/nexgendata~korea-bok-monetary-policy-ecos/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-korea-bok-monetary-policy-ecos",
                "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/nexgendata~korea-bok-monetary-policy-ecos/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-korea-bok-monetary-policy-ecos",
                "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": [
                    "bok_ecos_api_key"
                ],
                "properties": {
                    "bok_ecos_api_key": {
                        "title": "BoK ECOS Open API key",
                        "type": "string",
                        "description": "REQUIRED. Your personal Bank of Korea ECOS Open API key — register free at https://ecos.bok.or.kr/api/. Per BoK ECOS terms of service the key is per-user and rate-limited to ~1,000 calls/day; for that reason this actor does NOT ship a shared key. Paste your raw alphanumeric key."
                    },
                    "data_type": {
                        "title": "Data type",
                        "enum": [
                            "base_rate",
                            "krw_reserves",
                            "monetary_aggregates",
                            "gdp",
                            "cpi",
                            "trade_balance",
                            "all"
                        ],
                        "type": "string",
                        "description": "Which Korea-macro slice to pull. 'base_rate' = BoK base rate (기준금리, 722Y001). 'krw_reserves' = Korea FX reserves (731Y001). 'monetary_aggregates' = M1/M2 money stock (101Y002 / 101Y003). 'gdp' = real/nominal GDP (200Y102 / 111Y018). 'cpi' = consumer price index (901Y009). 'trade_balance' = exports/imports/balance (301Y013 / 403Y001). 'all' = every category (capped by max_records).",
                        "default": "all"
                    },
                    "stat_code_filter": {
                        "title": "ECOS stat code filter",
                        "type": "string",
                        "description": "Optional ECOS statistic code override. If set, this single code is queried INSTEAD OF the data_type defaults — useful for advanced users who already know the ECOS stat code they want (e.g. '722Y001' for base rate, '731Y004' for KRW reserves, '901Y009' for CPI). Browse codes at https://ecos.bok.or.kr/api/#/AdvancedSearch."
                    },
                    "cycle": {
                        "title": "Frequency cycle",
                        "enum": [
                            "D",
                            "M",
                            "Q",
                            "A"
                        ],
                        "type": "string",
                        "description": "ECOS frequency — D=daily, M=monthly, Q=quarterly, A=annual. Must match the stat code's available frequency (e.g. base rate is D, GDP is Q). When data_type='all' the actor selects an appropriate cycle per code; this field then acts as a hint for ambiguous codes.",
                        "default": "M"
                    },
                    "date_from": {
                        "title": "Date from (ISO)",
                        "type": "string",
                        "description": "Lower bound for the period (inclusive), ISO format YYYY-MM-DD. Default = 1 year before today. ECOS internally converts to YYYYMMDD / YYYYMM / YYYYQn / YYYY based on the cycle."
                    },
                    "date_to": {
                        "title": "Date to (ISO)",
                        "type": "string",
                        "description": "Upper bound for the period (inclusive), ISO format YYYY-MM-DD. Default = today."
                    },
                    "max_records": {
                        "title": "Max records",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on number of records pushed to the dataset. Range 1-1000. Default 100. NOTE: BoK ECOS itself rate-limits to ~1,000 calls/day per key per ToS; this cap is independent and applies to dataset rows.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
