# AAStocks Scraper – Hong Kong Stock Quotes & Financial News (`claude_code_reviewer/aastocks-scraper-en`) Actor

Scrape AAStocks without an API: Hong Kong stock real-time quotes (price, change, volume, P/E, market cap, 52-week high/low) and financial news listings. Bulk-paste tickers; export JSON/CSV/Excel for financial analysis and dashboards.

- **URL**: https://apify.com/claude\_code\_reviewer/aastocks-scraper-en.md
- **Developed by:** [Chad](https://apify.com/claude_code_reviewer) (community)
- **Categories:** Automation, News, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 news items

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

## AAStocks Scraper | Hong Kong Stock Quotes & Financial News (No API, No Login)

One Actor covers two kinds of AAStocks (aastocks.com) Hong Kong finance data: **real-time stock quotes** (stock code, latest price, change, volume, market cap, P/E, etc.) and **financial news** (category listings such as latest news, top news, bullish/bearish news). No login required, no API token needed — it parses public web pages (HKEX's official scraper charges $250/1000 rows; this one reads public pages, so the price is a fraction of that). Everything runs through `CheerioCrawler` to parse HTML, no browser involved — low cost, fast.

Who it's for: engineers doing HK stock sentiment/quant analysis, anyone who needs real-time HK stock quotes to feed a dashboard, people tracking HK financial news flow, market research report writers, researchers who need an HK stock dataset, and anyone building a side project.

---

### What you get

Every record returns the fields below (missing values are always `null` — no field is dropped; the `quote`/`news` field sets share one table, so whichever fields the current mode doesn't fill in are always `null`):

| Field           | Description                                | Example                                                                        | Available in |
| --------------- | ------------------------------------------- | ------------------------------------------------------------------------------- | ------------- |
| `stock_code`    | HK stock code (zero-padded to 5 digits)    | `00700`                                                                          | quote only |
| `symbol`        | AAStocks internal code                     | `00700.HK`                                                                       | quote only |
| `name`          | Stock name                                 | `TENCENT`                                                                        | quote only |
| `last_price`    | Latest price                               | `431.2`                                                                          | quote only |
| `change`        | Change (in dollars)                        | `1`                                                                              | quote only |
| `change_pct`    | Change (%)                                 | `0.232`                                                                          | quote only |
| `day_high`      | Day high                                   | `445.8`                                                                          | quote only |
| `day_low`       | Day low                                    | `431.2`                                                                          | quote only |
| `day_open`      | Opening price                              | `433`                                                                            | quote only |
| `prev_close`    | Previous close                             | `430.2`                                                                          | quote only |
| `week52_high`   | 52-week high                               | `683`                                                                            | quote only |
| `week52_low`    | 52-week low                                | `411`                                                                            | quote only |
| `volume`        | Trading volume (shares, B/M/K converted)   | `24960000`                                                                       | quote only |
| `turnover`      | Turnover (HKD, B/M/K converted)            | `10900000000`                                                                    | quote only |
| `pe_ratio`      | Price/earnings ratio (P/E)                 | `15.653`                                                                         | quote only |
| `market_cap`    | Market cap (HKD, B/M/K converted)          | `3920570000000`                                                                  | quote only |
| `quote_time`    | Quote timestamp (always `null` in v1.0)    | —                                                                                 | —             |
| `quote_url`     | Individual stock quote page URL            | `http://www.aastocks.com/en/stocks/quote/detail-quote.aspx?symbol=00700`         | quote only |
| `news_id`       | Unique news ID                             | `NOW.1531802`                                                                    | news only  |
| `title`         | News title                                 | `HKD996.9M Southbound Trading Net Outflow from HUA HONG GRACE`                   | news only  |
| `summary`       | News summary (listing-page excerpt, often truncated) | —                                                                       | news only  |
| `content`       | Full news article text (always `null` in v1.0) | —                                                                             | news only  |
| `source`        | News source (always `AASTOCKS`)            | `AASTOCKS`                                                                       | news only  |
| `category`      | Category (always `null` in v1.0)           | —                                                                                 | news only  |
| `related_stocks`| Array of related HK stock codes mentioned in the article | `["00700", "01810"]`                                              | news only  |
| `keyword`       | Keyword tag (always `null` in v1.0)        | —                                                                                 | news only  |
| `published_at`  | Publish time (ISO 8601, converted to UTC)  | `2026-07-03T10:25:00.000Z`                                                       | news only  |
| `news_url`      | News article URL                           | `http://www.aastocks.com/en/stocks/news/aafn-con/NOW.1531802/latest-news/AAFN`    | news only  |
| `source_mode`   | Which mode this record came from            | `quote`, `news`                                                                  | both       |
| `source_query`  | Query used when scraping                    | `00700`, `aafn/latest-news`                                                      | both       |
| `scraped_at`    | Scrape timestamp (ISO 8601)                | `2026-07-04T00:00:00.000Z`                                                       | both       |

**Important (full disclosure):**
- `quote` mode only fills quote-related fields; `news`-related fields are always `null`, and vice versa.
- `quote_time` (the quote timestamp) is always `null` in v1.0 — AAStocks' static HTML response has no reliable "quote/updated time" node; the timestamp for a live price is likely updated client-side via JavaScript after page load, not present in the initial HTML response. Rather than guess and mislead you, v1.0 always returns `null`.
- `content` (the full article text) is always `null` in v1.0 — v1.0 only scrapes the news category listing page, not each article's detail page. The listing page itself shows an excerpt (often truncated with "..."), which maps to `summary`; stuffing a truncated excerpt into `content` would mislead you into thinking you got the full text, so the two fields are kept separate and `content` is set to `null`.
- `category` and `keyword` are always `null` in v1.0 — the listing page has no reliable per-item category/keyword tag to parse.
- `related_stocks` is parsed by matching `(stock code.HK)`-style in-text markers found in the news title/summary text — it is not an official tag field.

---

### Two modes, one scraper

| Mode        | What it does                                                          | Billing event            | Price  |
| ----------- | ---------------------------------------------------------------------- | ------------------------- | ------ |
| 📈 **quote** | Real-time quotes by HK stock code                                     | `product-detail` (per item) | $0.008 |
| 📰 **news**  | Financial news category listing (e.g. latest, top, bullish/bearish news) | `search-listing` (per item) | $0.002 |

Regardless of which mode you run, every Run start additionally charges a one-time `actor-start` fee of **$0.005**. All charges are billed only **after** data is successfully written to the dataset; the Run log prints `total_items / charged / skipped` at the end for reconciliation.

Run one mode per run — just pick it from the dropdown in the Apify Console.

---

### Input fields

| Field          | Type     |     Required      |        Default        | Description                                                                                                  |
| -------------- | -------- | :----------------: | :--------------------: | -------------------------------------------------------------------------------------------------------------- |
| `mode`         | enum     |    recommended    |         `news`         | Choose one of `quote` (stock quotes) / `news` (financial news).                                                |
| `stockCodes`   | string[] | required for `quote` |          —           | HK-listed stock codes, e.g. `700` (Tencent), `5` (HSBC Holdings), `1` (CK Hutchison). Auto zero-padded to 5 digits. Up to **100** per run. |
| `newsCategory` | string   |      optional      |  `aafn/latest-news`    | Financial news category path. Verified working: `aafn/latest-news`, `aafn/top-news`, `aafn/popular-news`, `aafn/recommend-news`, `aafn/positive-news`, `aafn/negative-news`, `aafn/research-report`, `aafn/result-announcement`. |
| `dateFrom`     | string   |      optional      |           —            | Only keep news published on or after this date, format `YYYY-MM-DD` (**Hong Kong time**). `news` mode only.    |
| `dateTo`       | string   |      optional      |           —            | Only keep news published on or before this date, format `YYYY-MM-DD` (**Hong Kong time**). `news` mode only.   |
| `bulkInput`    | string   |      optional      |           —            | **One per line**, press Enter, no quotes or commas. Used as stock codes in `quote` mode, automatically merged into `stockCodes` at runtime. |
| `maxItems`     | integer  |      optional      |          `50`           | In `news` mode, max items per category (v1.0 is single-page only, actual cap depends on how many items AAStocks shows per page, roughly 20). Not applicable in `quote` mode, which depends on the number of stock codes. |

---

### Examples

**📈 Real-time stock quotes (multiple codes)**

```json
{
    "mode": "quote",
    "stockCodes": ["00700", "00005"]
}
````

**📰 Financial news (latest news)**

```json
{
    "mode": "news",
    "newsCategory": "aafn/latest-news",
    "maxItems": 20
}
```

**📋 Bulk-paste stock codes**

```json
{
    "mode": "quote",
    "bulkInput": "700\n5\n1\n9988",
    "maxItems": 50
}
```

***

### Notes

- **Public data only.** Both the AAStocks individual stock quote pages and news listing pages are public webpages; no login and no AAStocks account required.
- **No login / no API token.** Fill in the input and run — no keys to configure.
- **Parses public HTML pages, no browser.** Uses `CheerioCrawler` exclusively against `aastocks.com`'s server-rendered pages, saving a large chunk of compute cost compared to Playwright.
- **Polite to the site.** Concurrency ≤5, failed requests retry with exponential backoff up to 3 times — it does not hammer AAStocks' servers.
- **v1.0 does not support keyword news search.** AAStocks' keyword search is an ASP.NET form postback (POST + ViewState), not a simple URL parameter; v1.0 doesn't support it yet, planned for v1.1. For now, use `newsCategory` to browse by category.
- **v1.0 news listings are single-page only.** Testing found no usable pagination mechanism on AAStocks' news listing pages — each category only returns the items shown on that single page (roughly 20 or so); `maxItems` is only an upper bound and cannot be used to fetch more via pagination.
- **How to provide stock codes:** just give the number, e.g. `700`, `5` — the scraper automatically zero-pads it to AAStocks' 5-digit format (`00700`); inputs already in 5-digit form can also be pasted directly.

***

### FAQ

**Q: Why is there no quote time (quote\_time)?**
Testing found no reliable "quote/updated time" node in the static HTML response of AAStocks' real-time quote pages; the timestamp for a live price may be updated client-side via JavaScript after page load, and isn't present in the initial HTML response. To avoid guessing a field incorrectly and misleading you, v1.0 always returns `null`.

**Q: Why is the news `content` (full text) null?**
v1.0 only scrapes the news category listing page and does not visit each article's detail page for the full text. The listing page itself displays a truncated excerpt (often cut off with "..."), which is already mapped to the `summary` field; stuffing the truncated excerpt into `content` would mislead you into thinking you got the full article, so the two are deliberately kept separate and `content` is set to `null`.

**Q: Can I search news by keyword?**
Not in v1.0. Testing found that AAStocks' news search function is a traditional ASP.NET form postback (server-side ViewState + POST), not a simple URL-parameter query; handling it directly with CheerioCrawler carries risk (ViewState may be time-sensitive). v1.0 uses `newsCategory` category browsing as a substitute for now; keyword search is planned for v1.1.

**Q: How is billing calculated?**
Each Run start charges `actor-start` once ($0.005); `quote` mode charges `product-detail` ($0.008) per quote; `news` mode charges `search-listing` ($0.002) per news item. All charges are billed only after data is successfully written to the dataset, and the Run log prints the actual charged item count.

**Q: What if I can't get any data?**
For `quote` mode, check whether the stock code is a valid HK-listed stock code (codes with no quote found are skipped and not charged); for `news` mode, check whether the category path is misspelled.

***

### Deploy

```bash
apify login              # first time: paste your Apify token (never written to the repo)
apify push               # build and upload to the Apify Store
```

After publishing, set the PPE event prices in Apify Console → Monetization:
`actor-start` $0.005, `product-detail` $0.008, `search-listing` $0.002.

***

### Disclaimer

This scraper only collects **publicly visible** AAStocks (aastocks.com) Hong Kong stock quote and financial news data, for research and personal use only, not for any unauthorized commercial resale. Please ensure your use complies with aastocks.com's Terms of Service and your local laws. All stock prices and financial information **do not constitute investment advice** — investment decisions are your own responsibility and at your own risk. This Actor makes no guarantee about the accuracy, timeliness, or completeness of the data — always refer to the live AAStocks website for current stock prices and news content.

***

*AAStocks scraper, Hong Kong stock quotes, HK stock price API, HKEX data, Hong Kong financial news, HK stock market data, real-time HK quotes*

# Actor input Schema

## `mode` (type: `string`):

What do you want to scrape? Pick a mode and fill in the matching fields below.

## `stockCodes` (type: `array`):

HK-listed stock codes, e.g. 700 (Tencent), 5 (HSBC Holdings), 1 (CK Hutchison). Automatically zero-padded to 5 digits (700 → 00700). Used by quote mode, up to 100 codes per run.

## `newsCategory` (type: `string`):

Financial news category path, defaults to aafn/latest-news (latest news). Other verified categories: aafn/top-news (top news), aafn/popular-news (popular), aafn/recommend-news (recommended), aafn/positive-news (bullish), aafn/negative-news (bearish), aafn/research-report (research report), aafn/result-announcement (results announcement).

## `dateFrom` (type: `string`):

Only keep news published on or after this date, format YYYY-MM-DD, e.g. 2026-07-01 (Hong Kong time). News mode only, leave blank for no limit.

## `dateTo` (type: `string`):

Only keep news published on or before this date, format YYYY-MM-DD (Hong Kong time). News mode only, leave blank for no limit.

## `bulkInput` (type: `string`):

**One per line**, press Enter for a new line, no quotes or commas. Used as stock codes in quote mode, automatically merged into the Stock codes field above at runtime. Fastest way is to copy a whole column from Google Sheets / Excel.

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

In news mode, max items per category (v1.0 is single-page only, the actual cap depends on how many items AAStocks shows per page, roughly 20). Not applicable in quote mode, which depends on the number of stock codes.

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

AAStocks is friendly to datacenter requests; it works without a proxy by default. Enable only if you hit blocks during heavy scraping.

## Actor input object example

```json
{
  "mode": "news",
  "newsCategory": "aafn/latest-news",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "mode": "news",
    "newsCategory": "aafn/latest-news"
};

// Run the Actor and wait for it to finish
const run = await client.actor("claude_code_reviewer/aastocks-scraper-en").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 = {
    "mode": "news",
    "newsCategory": "aafn/latest-news",
}

# Run the Actor and wait for it to finish
run = client.actor("claude_code_reviewer/aastocks-scraper-en").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 '{
  "mode": "news",
  "newsCategory": "aafn/latest-news"
}' |
apify call claude_code_reviewer/aastocks-scraper-en --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AAStocks Scraper – Hong Kong Stock Quotes & Financial News",
        "description": "Scrape AAStocks without an API: Hong Kong stock real-time quotes (price, change, volume, P/E, market cap, 52-week high/low) and financial news listings. Bulk-paste tickers; export JSON/CSV/Excel for financial analysis and dashboards.",
        "version": "1.0",
        "x-build-id": "fTqlhkuunwstjW8Sd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/claude_code_reviewer~aastocks-scraper-en/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-claude_code_reviewer-aastocks-scraper-en",
                "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/claude_code_reviewer~aastocks-scraper-en/runs": {
            "post": {
                "operationId": "runs-sync-claude_code_reviewer-aastocks-scraper-en",
                "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/claude_code_reviewer~aastocks-scraper-en/run-sync": {
            "post": {
                "operationId": "run-sync-claude_code_reviewer-aastocks-scraper-en",
                "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": {
                    "mode": {
                        "title": "🎯 Mode",
                        "enum": [
                            "quote",
                            "news"
                        ],
                        "type": "string",
                        "description": "What do you want to scrape? Pick a mode and fill in the matching fields below.",
                        "default": "news"
                    },
                    "stockCodes": {
                        "title": "📈 Stock codes",
                        "maxItems": 100,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "HK-listed stock codes, e.g. 700 (Tencent), 5 (HSBC Holdings), 1 (CK Hutchison). Automatically zero-padded to 5 digits (700 → 00700). Used by quote mode, up to 100 codes per run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "newsCategory": {
                        "title": "📰 News category",
                        "type": "string",
                        "description": "Financial news category path, defaults to aafn/latest-news (latest news). Other verified categories: aafn/top-news (top news), aafn/popular-news (popular), aafn/recommend-news (recommended), aafn/positive-news (bullish), aafn/negative-news (bearish), aafn/research-report (research report), aafn/result-announcement (results announcement).",
                        "default": "aafn/latest-news"
                    },
                    "dateFrom": {
                        "title": "📅 Start date",
                        "type": "string",
                        "description": "Only keep news published on or after this date, format YYYY-MM-DD, e.g. 2026-07-01 (Hong Kong time). News mode only, leave blank for no limit."
                    },
                    "dateTo": {
                        "title": "📅 End date",
                        "type": "string",
                        "description": "Only keep news published on or before this date, format YYYY-MM-DD (Hong Kong time). News mode only, leave blank for no limit."
                    },
                    "bulkInput": {
                        "title": "📋 Bulk paste",
                        "type": "string",
                        "description": "**One per line**, press Enter for a new line, no quotes or commas. Used as stock codes in quote mode, automatically merged into the Stock codes field above at runtime. Fastest way is to copy a whole column from Google Sheets / Excel."
                    },
                    "maxItems": {
                        "title": "📊 Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "In news mode, max items per category (v1.0 is single-page only, the actual cap depends on how many items AAStocks shows per page, roughly 20). Not applicable in quote mode, which depends on the number of stock codes.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "🌐 Proxy (advanced, usually off)",
                        "type": "object",
                        "description": "AAStocks is friendly to datacenter requests; it works without a proxy by default. Enable only if you hit blocks during heavy scraping.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
