# Global Stock Exchange Meta Scraper — 25 Exchanges, One Call (`nexgendata/stock-exchange-meta-scraper`) Actor

One API call for global equities snapshots across 25 stock exchanges. Replaces stitching 25 individual exchange feeds.

- **URL**: https://apify.com/nexgendata/stock-exchange-meta-scraper.md
- **Developed by:** [Stephan Corbeil](https://apify.com/nexgendata) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $200.00 / 1,000 stock or exchange snapshots

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

## Global Stock Exchange Meta Scraper — 25 Exchanges, One Call

**One API call for global equities snapshots — replaces stitching 25 individual exchange feeds.**

Pulls aggregated snapshots across 25 of the world's stock exchanges in a single run. Wraps NexGenData's full suite of single-exchange screeners into one unified meta-actor with a normalized output schema — so you stop maintaining 25 separate Apify integrations and start consuming one.

---

### Why this actor exists

If you cover global equities, you've felt the pain: every exchange has a different feed, a different ticker convention, a different update cadence, a different rate-limit policy. Most teams end up stitching together 10–25 different scrapers and writing brittle adapter code to glue the outputs into one dashboard.

This actor does that stitching once, server-side, behind a single Apify run. You pick the exchanges you care about, the depth you want, and the output shape (one row per exchange, or one row per stock). You get back a clean, normalized dataset every time.

### Coverage — all 25 exchanges in one place

| Region            | Exchanges                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------ |
| **Asia-Pacific**  | KOSPI (KR), TWSE (TW), NSE (IN), BSE (IN), TSE (JP), HKEX (HK), SGX (SG), HOSE (VN), ASX (AU)          |
| **Greater China** | STAR Market, ChiNext, Beijing SE, Eastmoney A-Shares, Chinese ADRs                                     |
| **Europe**        | LSE (UK), Xetra / DAX (DE)                                                                             |
| **Americas**      | TSX (CA), B3 (BR), BMV (MX)                                                                            |
| **MENA / Africa** | Tadawul (SA), BIST (TR), JSE (ZA)                                                                      |
| **SE Asia**       | IDX (ID), SET (TH), Bursa Malaysia, PSE (PH)                                                           |

Every exchange is backed by a dedicated NexGenData single-exchange screener (linked below) — you keep getting the freshest possible data per market.

### Use cases

- **Hedge fund position-sizing** — pull a global snapshot every morning, feed it into your sizing model, know your cross-region exposure before US open.
- **Cross-border ETF research** — top-N by market cap across 25 exchanges in one run becomes your candidate set for thematic ETF construction.
- **Sector rotation across regions** — `per_stock` mode gives you a unified `sector` field across exchanges so you can rank semiconductors / energy / banks globally.
- **Daily institutional briefings** — `per_exchange_summary` returns the top 5 gainers, top 5 losers, top 10 by market cap, advancers/decliners, and median move per exchange — drop it straight into a Slack digest or a morning newsletter.
- **Cross-border M&A and venture monitoring** — see which markets are seeing breakouts in real time, not a week after the fact.

### Two output modes

#### `per_exchange_summary` (default — best for dashboards & briefings)

One dataset row per selected exchange:

```json
{
  "exchange": "TSE_JAPAN",
  "country": "Japan",
  "region": "Asia-Pacific",
  "currency": "JPY",
  "snapshot_ts": "2026-05-23T13:42:11Z",
  "stock_count": 50,
  "top_gainers": [{"symbol": "...", "name": "...", "price": 0, "change_pct": 0, "market_cap": 0}],
  "top_losers":  [{"symbol": "...", "name": "...", "price": 0, "change_pct": 0, "market_cap": 0}],
  "top_by_market_cap": [...],
  "median_change_pct": 0.42,
  "advancers": 28,
  "decliners": 19,
  "unchanged": 3,
  "error": null
}
````

#### `per_stock` (best for screeners & sector rotation)

One row per stock across all selected exchanges, normalized into the same schema:

```json
{
  "exchange": "HKEX",
  "country": "Hong Kong",
  "region": "Asia-Pacific",
  "currency": "HKD",
  "symbol": "0700.HK",
  "name": "Tencent Holdings",
  "price": 412.6,
  "change_pct": 1.8,
  "market_cap": 3960000000000,
  "volume": 8230000,
  "sector": "Communication Services",
  "raw": { /* original sub-actor row, untouched */ }
}
```

The `raw` field always carries the exact row from the underlying single-exchange screener — useful if you need a field we haven't normalized yet.

### Input schema

| Field                  | Type       | Default                    | Notes                                                              |
| ---------------------- | ---------- | -------------------------- | ------------------------------------------------------------------ |
| `exchanges`            | `string[]` | all 25                     | Pick any subset.                                                   |
| `outputMode`           | `string`   | `per_exchange_summary`     | Or `per_stock`.                                                    |
| `topN`                 | `integer`  | 50                         | Per exchange. Max 500.                                             |
| `maxParallel`          | `integer`  | 5                          | Concurrent sub-actor runs.                                         |
| `subActorTimeoutSecs`  | `integer`  | 300                        | Per-exchange timeout; failures don't poison the rest of the run.   |

### How it works

Approach A (call sub-actors): this meta-actor invokes each selected single-exchange screener via `Actor.call()`, fetches the resulting datasets, normalizes fields across heterogeneous sub-actor schemas into a unified shape, and pushes one item per exchange (summary mode) or one item per stock (per-stock mode) to its own dataset. Failures on individual exchanges are isolated — the row carries an `error` field and the rest of the run continues.

### Underlying single-exchange screeners (all by NexGenData)

If you only care about one market, use the dedicated screener directly — same data, lower cost:

- [KOSPI / KOSDAQ — Korea](https://apify.com/nexgendata/kospi-stock-screener)
- [TWSE — Taiwan](https://apify.com/nexgendata/twse-stock-screener)
- [NSE — India](https://apify.com/nexgendata/nse-india-stock-screener)
- [BSE — India](https://apify.com/nexgendata/bse-india-stock-screener)
- [B3 — Brazil](https://apify.com/nexgendata/b3-brasil-stock-screener)
- [HKEX / Hang Seng — Hong Kong](https://apify.com/nexgendata/hkex-hang-seng-stock-screener)
- [SGX — Singapore](https://apify.com/nexgendata/sgx-singapore-stock-screener)
- [HOSE — Vietnam](https://apify.com/nexgendata/hose-vietnam-stock-screener)
- [TSE — Japan](https://apify.com/nexgendata/tse-japan-stock-screener)
- [LSE — UK](https://apify.com/nexgendata/lse-uk-stock-screener)
- [Xetra / DAX — Germany](https://apify.com/nexgendata/xetra-germany-stock-screener)
- [TSX — Canada](https://apify.com/nexgendata/tsx-canada-stock-screener)
- [ASX — Australia](https://apify.com/nexgendata/asx-australia-stock-screener)
- [Tadawul — Saudi Arabia](https://apify.com/nexgendata/tadawul-saudi-stock-screener)
- [BMV — Mexico](https://apify.com/nexgendata/bmv-mexico-stock-screener)
- [JSE — South Africa](https://apify.com/nexgendata/jse-southafrica-stock-screener)
- [IDX — Indonesia](https://apify.com/nexgendata/idx-indonesia-stock-screener)
- [SET — Thailand](https://apify.com/nexgendata/set-thailand-stock-screener)
- [Bursa — Malaysia](https://apify.com/nexgendata/bursa-malaysia-stock-screener)
- [BIST — Turkey](https://apify.com/nexgendata/bist-turkey-stock-screener)
- [PSE — Philippines](https://apify.com/nexgendata/pse-philippines-stock-screener)
- [STAR Market — China](https://apify.com/nexgendata/star-market-china-stock-screener)
- [ChiNext — China](https://apify.com/nexgendata/chinext-china-stock-screener)
- [Chinese ADRs](https://apify.com/nexgendata/chinese-adrs-stock-screener)
- [Beijing Stock Exchange](https://apify.com/nexgendata/bse-beijing-stock-screener)
- [Eastmoney A-Shares](https://apify.com/nexgendata/eastmoney-china-stock-screener)

### Also see

- [Global Equities Screener MCP](https://apify.com/nexgendata/global-equities-screener-mcp) — Model Context Protocol server that exposes this data to AI agents (Claude, ChatGPT, Cursor) as tools.

### Pricing

Pay-per-event billing. See the actor's pricing tab on Apify Store for the current rates.

### Support

Bug reports, schema requests, or new-exchange suggestions: open an issue on the actor's Apify Store page.

# Actor input Schema

## `exchanges` (type: `array`):

List of exchange codes to include in this snapshot. Pick any subset of the 25 supported exchanges (KOSPI, TWSE, NSE\_INDIA, BSE\_INDIA, B3\_BRAZIL, HKEX, SGX, HOSE\_VIETNAM, TSE\_JAPAN, LSE\_UK, XETRA\_GERMANY, TSX\_CANADA, ASX\_AUSTRALIA, TADAWUL\_SAUDI, BMV\_MEXICO, JSE\_SOUTH\_AFRICA, IDX\_INDONESIA, SET\_THAILAND, BURSA\_MALAYSIA, BIST\_TURKEY, PSE\_PHILIPPINES, STAR\_CHINA, CHINEXT\_CHINA, CHINESE\_ADRS, BSE\_BEIJING, EASTMONEY\_A\_SHARES). Leave the default (all 25) to get a true global snapshot in one run.

## `outputMode` (type: `string`):

Shape of the dataset rows. `per_exchange_summary` returns ONE aggregated row per exchange (top 5 gainers, top 5 losers, top 10 by market cap, advancers/decliners, median change) — ideal for daily institutional briefings and hedge-fund snapshots. `per_stock` returns a flat list of normalized stock rows across all selected exchanges (much larger output) — ideal for sector rotation, cross-border ETF construction, and screener workflows.

## `topN` (type: `integer`):

How many stocks to fetch per exchange. In `per_exchange_summary` mode this controls the underlying universe used to compute aggregates (default 50 is sufficient for top-movers / index leaders). In `per_stock` mode it directly controls dataset size — 100 stocks × 25 exchanges = 2,500 rows. Maximum 500.

## `maxParallel` (type: `integer`):

How many sub-actors to run concurrently. Higher = faster wall-clock but more peak memory + risk of provider rate-limits. 5 is the sweet spot for a global snapshot across 25 exchanges (~5 batches of 5).

## `subActorTimeoutSecs` (type: `integer`):

Maximum seconds to wait for any one sub-actor run to complete. If a single exchange screener stalls (regional outage, captcha), it will be cut off and the error recorded in that exchange's row — other exchanges continue. Default 300s (5 min) is plenty for any single screener at topN=500.

## Actor input object example

```json
{
  "exchanges": [
    "TSE_JAPAN",
    "HKEX",
    "LSE_UK"
  ],
  "outputMode": "per_exchange_summary",
  "topN": 50,
  "maxParallel": 5,
  "subActorTimeoutSecs": 300
}
```

# 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 = {
    "exchanges": [
        "TSE_JAPAN",
        "HKEX",
        "LSE_UK"
    ],
    "outputMode": "per_exchange_summary",
    "topN": 50,
    "maxParallel": 5,
    "subActorTimeoutSecs": 300
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/stock-exchange-meta-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 = {
    "exchanges": [
        "TSE_JAPAN",
        "HKEX",
        "LSE_UK",
    ],
    "outputMode": "per_exchange_summary",
    "topN": 50,
    "maxParallel": 5,
    "subActorTimeoutSecs": 300,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/stock-exchange-meta-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 '{
  "exchanges": [
    "TSE_JAPAN",
    "HKEX",
    "LSE_UK"
  ],
  "outputMode": "per_exchange_summary",
  "topN": 50,
  "maxParallel": 5,
  "subActorTimeoutSecs": 300
}' |
apify call nexgendata/stock-exchange-meta-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Global Stock Exchange Meta Scraper — 25 Exchanges, One Call",
        "description": "One API call for global equities snapshots across 25 stock exchanges. Replaces stitching 25 individual exchange feeds.",
        "version": "0.0",
        "x-build-id": "EbS9MPOkpnjpU4Brf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~stock-exchange-meta-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-stock-exchange-meta-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/nexgendata~stock-exchange-meta-scraper/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-stock-exchange-meta-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/nexgendata~stock-exchange-meta-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-stock-exchange-meta-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "exchanges": {
                        "title": "Exchanges to query",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "List of exchange codes to include in this snapshot. Pick any subset of the 25 supported exchanges (KOSPI, TWSE, NSE_INDIA, BSE_INDIA, B3_BRAZIL, HKEX, SGX, HOSE_VIETNAM, TSE_JAPAN, LSE_UK, XETRA_GERMANY, TSX_CANADA, ASX_AUSTRALIA, TADAWUL_SAUDI, BMV_MEXICO, JSE_SOUTH_AFRICA, IDX_INDONESIA, SET_THAILAND, BURSA_MALAYSIA, BIST_TURKEY, PSE_PHILIPPINES, STAR_CHINA, CHINEXT_CHINA, CHINESE_ADRS, BSE_BEIJING, EASTMONEY_A_SHARES). Leave the default (all 25) to get a true global snapshot in one run.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "KOSPI",
                                "TWSE",
                                "NSE_INDIA",
                                "BSE_INDIA",
                                "B3_BRAZIL",
                                "HKEX",
                                "SGX",
                                "HOSE_VIETNAM",
                                "TSE_JAPAN",
                                "LSE_UK",
                                "XETRA_GERMANY",
                                "TSX_CANADA",
                                "ASX_AUSTRALIA",
                                "TADAWUL_SAUDI",
                                "BMV_MEXICO",
                                "JSE_SOUTH_AFRICA",
                                "IDX_INDONESIA",
                                "SET_THAILAND",
                                "BURSA_MALAYSIA",
                                "BIST_TURKEY",
                                "PSE_PHILIPPINES",
                                "STAR_CHINA",
                                "CHINEXT_CHINA",
                                "CHINESE_ADRS",
                                "BSE_BEIJING",
                                "EASTMONEY_A_SHARES"
                            ],
                            "enumTitles": [
                                "South Korea — KOSPI / KOSDAQ",
                                "Taiwan — TWSE",
                                "India — NSE",
                                "India — BSE",
                                "Brazil — B3 (Bovespa)",
                                "Hong Kong — HKEX (Hang Seng)",
                                "Singapore — SGX",
                                "Vietnam — HOSE",
                                "Japan — TSE",
                                "United Kingdom — LSE",
                                "Germany — Xetra / DAX",
                                "Canada — TSX",
                                "Australia — ASX",
                                "Saudi Arabia — Tadawul",
                                "Mexico — BMV",
                                "South Africa — JSE",
                                "Indonesia — IDX",
                                "Thailand — SET",
                                "Malaysia — Bursa",
                                "Turkey — BIST",
                                "Philippines — PSE",
                                "China — STAR Market",
                                "China — ChiNext",
                                "China — US-listed ADRs",
                                "China — Beijing Stock Exchange",
                                "China — Eastmoney A-Shares"
                            ]
                        },
                        "default": [
                            "KOSPI",
                            "TWSE",
                            "NSE_INDIA",
                            "BSE_INDIA",
                            "B3_BRAZIL",
                            "HKEX",
                            "SGX",
                            "HOSE_VIETNAM",
                            "TSE_JAPAN",
                            "LSE_UK",
                            "XETRA_GERMANY",
                            "TSX_CANADA",
                            "ASX_AUSTRALIA",
                            "TADAWUL_SAUDI",
                            "BMV_MEXICO",
                            "JSE_SOUTH_AFRICA",
                            "IDX_INDONESIA",
                            "SET_THAILAND",
                            "BURSA_MALAYSIA",
                            "BIST_TURKEY",
                            "PSE_PHILIPPINES",
                            "STAR_CHINA",
                            "CHINEXT_CHINA",
                            "CHINESE_ADRS",
                            "BSE_BEIJING",
                            "EASTMONEY_A_SHARES"
                        ]
                    },
                    "outputMode": {
                        "title": "Output mode",
                        "enum": [
                            "per_exchange_summary",
                            "per_stock"
                        ],
                        "type": "string",
                        "description": "Shape of the dataset rows. `per_exchange_summary` returns ONE aggregated row per exchange (top 5 gainers, top 5 losers, top 10 by market cap, advancers/decliners, median change) — ideal for daily institutional briefings and hedge-fund snapshots. `per_stock` returns a flat list of normalized stock rows across all selected exchanges (much larger output) — ideal for sector rotation, cross-border ETF construction, and screener workflows.",
                        "default": "per_exchange_summary"
                    },
                    "topN": {
                        "title": "Top N stocks per exchange",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "How many stocks to fetch per exchange. In `per_exchange_summary` mode this controls the underlying universe used to compute aggregates (default 50 is sufficient for top-movers / index leaders). In `per_stock` mode it directly controls dataset size — 100 stocks × 25 exchanges = 2,500 rows. Maximum 500.",
                        "default": 50
                    },
                    "maxParallel": {
                        "title": "Max parallel sub-actor runs",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many sub-actors to run concurrently. Higher = faster wall-clock but more peak memory + risk of provider rate-limits. 5 is the sweet spot for a global snapshot across 25 exchanges (~5 batches of 5).",
                        "default": 5
                    },
                    "subActorTimeoutSecs": {
                        "title": "Per sub-actor timeout (seconds)",
                        "minimum": 60,
                        "maximum": 1200,
                        "type": "integer",
                        "description": "Maximum seconds to wait for any one sub-actor run to complete. If a single exchange screener stalls (regional outage, captcha), it will be cut off and the error recorded in that exchange's row — other exchanges continue. Default 300s (5 min) is plenty for any single screener at topN=500.",
                        "default": 300
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
