# Thế Giới Di Động Scraper - Products & Reviews (`abotapi/thegioididong-scraper`) Actor

Scrape thegioididong.com products with full specifications, current & original price, discount, brand, category, variants, image gallery, description, customer rating and reviews. Search by keyword with brand, price, rating and sort filters, or paste product / category / search URLs.

- **URL**: https://apify.com/abotapi/thegioididong-scraper.md
- **Developed by:** [Abot API](https://apify.com/abotapi) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 product results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Thế Giới Di Động Scraper - Products, Deals & Reviews

Scrape products from **thegioididong.com** (Thế Giới Di Động / Mobile World) - Vietnam's
largest phone, laptop and consumer-electronics retailer. Get a clean, flat record per
product with full detail, variants, image gallery, the aggregate customer rating, the
customer reviews shown on each product page, and - for discounted products - the genuine
original ("was") price, discount amount and percentage.

### What it does

- **Search by keyword** - e.g. `iphone 15`, `laptop gaming`, `tai nghe bluetooth`. Filter by
  brand, price range and minimum rating, and sort the results.
- **Browse Flash Sale deals** (toggle) - browse the site's permanent Flash Sale hub instead of a
  keyword search; every returned product carries a genuine was-price and discount.
- **Scrape pasted URLs** - paste a product URL for a single product, a category / search URL to
  pull the whole matching listing, or a promo-page URL (the Flash Sale hub or a brand promo page)
  to pull its deals.
- **Was-price + discount** - for a discounted product, the original/"was" price, the discount
  amount and percentage, and any promo label (gift-with-purchase, 0%-installment offer) are
  captured alongside the current price.
- **Full product detail** (toggle) - specifications, variants (storage / colour with per-variant
  price and availability), image gallery, brand, full category path, description and aggregate
  rating.
- **Customer reviews** (toggle) - the star-rated reviews shown on the product page: author,
  date, rating and review text.

### Input

| Field | Description |
|-------|-------------|
| **Mode** | `search` (keyword + filters) or `url` (paste links). |
| **Search keywords** | One or more terms; each is searched separately. |
| **Flash sale deals only** | Browse the permanent Flash Sale hub instead of a keyword search. |
| **Brand** | Keep only products whose brand contains this text (e.g. `Samsung`). |
| **Sort by** | Relevance, price low-to-high or high-to-low, highest rated, most reviewed, name A-Z. |
| **Min / Max price** | Price range in VND. |
| **Min rating** | Keep products at or above this average rating (needs details on). |
| **URLs** | Product, category, search or promo-page URLs (URL mode) - for example the Flash Sale hub or a brand promo page. |
| **Fetch product details** | Adds specs, variants, gallery, category path and rating for each product. |
| **Fetch customer reviews** | Also collect the reviews shown on each product page. |
| **Max products** | Cap on total products returned (0 = unlimited). |
| **Connection** | Apify Proxy with **residential access in Vietnam** is required for reliable results and correct local pricing. |

### Output

One record per product. Example (illustrative values):

```json
{
  "code": "281570",
  "productCode": "0131491005325",
  "sku": "281570",
  "name": "Điện thoại Sample Phone X 128GB",
  "url": "https://www.thegioididong.com/dtdd/sample-phone-x-128gb",
  "brand": "SampleBrand",
  "category": "Điện thoại",
  "categoryPath": ["Điện thoại", "Điện thoại SampleBrand"],
  "color": "Đen",
  "price": 8990000,
  "originalPrice": 9990000,
  "savings": 1000000,
  "discountPercent": 10.0,
  "discount": "-10%",
  "isOnSpecial": true,
  "promoGift": "Quà 200.000₫",
  "installmentOffer": "Trả chậm 0% trả trước 0đ",
  "currency": "VND",
  "rating": 4.9,
  "reviewCount": 135055,
  "ratingBreakdown": { "bestRating": 5, "worstRating": 1 },
  "specifications": {
    "Hệ điều hành": "Android 16",
    "Chip xử lý": "Sample Chip 8 Gen",
    "Dung lượng RAM": "8 GB"
  },
  "variants": [
    { "name": "128GB", "sku": "281570", "price": 8990000, "availability": "InStock" },
    { "name": "256GB", "sku": "281571", "price": 10990000, "availability": "InStock" }
  ],
  "images": [
    "https://cdn.tgdd.vn/Products/Images/42/281570/sample-phone-x-128gb-1.jpg"
  ],
  "description": "Sample Phone X 128GB - màn hình 6.7 inch...",
  "reviews": [
    { "author": "Trinh", "date": "10/8/2024", "rating": 5, "title": null, "body": "Máy đẹp, pin ổn." }
  ],
  "searchMode": "search",
  "source": "thegioididong.com"
}
````

Fields present depend on the toggles: without **Fetch product details** you get the listing
fields (name, price, brand, category, image, code, and - when the card shows one - the
was-price/discount/promo fields); with it you also get specifications, variants, gallery,
description, category path (breadcrumb) and the aggregate rating; with **Fetch customer
reviews** each record gains a `reviews[]` array. `originalPrice`, `discountPercent`,
`discount`, `savings` and `promoGift`/`installmentOffer` are only populated for a product
that is genuinely on special; `isOnSpecial` is `false` and those fields are `null` otherwise

- never fabricated.

### Deals & specials

- **Flash Sale hub** - a permanent, always-on page of curated deals. Turn on **Flash sale
  deals only** in Search mode, or paste `https://www.thegioididong.com/flashsale` in URL mode.
- **Brand / campaign promo pages** - seasonal pages for a specific brand or campaign (for
  example `https://www.thegioididong.com/khuyen-mai-<brand>`). These rotate over time, so
  they are not offered as a fixed dropdown - paste the page's own link in URL mode to pull it.
- Every product on a deals page carries its own genuine strike-through original price; nothing
  is estimated or synthesized. A product with no real discount reports `isOnSpecial: false` and
  leaves the was-price/discount fields empty.

### Reviews

Reviews are the star-rated customer reviews the product page itself publishes (author, date,
star rating and text) plus the product's aggregate rating (`rating`, `reviewCount`). Non-rated
Q\&A entries are excluded. Reviews carry no photos, so no third-party media is emitted.

### Connection

This source serves the correct catalogue, pricing and stock only to a residential connection in
Vietnam, so the run uses **Apify Proxy with residential access, country Vietnam** by default and
rotates a fresh exit per request. On the free plan, coverage may be limited and some runs may
return no results.

### Export to your apps (optional)

Results can optionally be piped into Notion, Linear, Airtable or other apps via MCP connectors -
authorize one under **Apify → Settings → API & Integrations** and select it in the input. This is
a side-channel that never changes the dataset output.

# Actor input Schema

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

Choose 'search' to use keywords and filters, or 'url' to scrape specific product, category or search URLs you paste below.

## `queries` (type: `array`):

One or more keywords to search, for example 'iphone 15', 'laptop gaming' or 'tai nghe bluetooth'. Each keyword is searched separately. To browse a whole category instead, switch to URL mode and paste its link (for example https://www.thegioididong.com/dtdd).

## `specialsOnly` (type: `boolean`):

Browse the site's permanent Flash Sale hub instead of a keyword search. Every returned product carries a genuine original/'was' price, discount amount and percentage. Ignores 'Search keywords' when on. To browse a seasonal brand promo page instead (for example a specific brand's clearance page), switch to URL mode and paste its link.

## `brand` (type: `string`):

Optional. Keep only products whose brand contains this text, for example 'Apple', 'Samsung' or 'Xiaomi'.

## `sortBy` (type: `string`):

Ordering applied to the collected results.

## `minPrice` (type: `integer`):

Optional. Only keep products priced at or above this amount (VND).

## `maxPrice` (type: `integer`):

Optional. Only keep products priced at or below this amount (VND).

## `minRating` (type: `integer`):

Optional. Only keep products with an average customer rating at or above this value (1 to 5). Needs product details enabled.

## `urls` (type: `array`):

Product, category, search or promo-page URLs to scrape, for example https://www.thegioididong.com/dtdd/iphone-15, https://www.thegioididong.com/dtdd, https://www.thegioididong.com/flashsale (the Flash Sale deals hub) or a brand promo page like https://www.thegioididong.com/khuyen-mai-aukey. Multiple URLs supported.

## `fetchDetails` (type: `boolean`):

Add full specifications, variants, image gallery, brand, category, description and aggregate rating for each product. Adds one request per product.

## `fetchReviews` (type: `boolean`):

Also collect the customer reviews shown on each product page (review text, author, date, star rating). Read from the product page, so it needs product details enabled; no extra request.

## `maxReviewsPerProduct` (type: `integer`):

Cap on reviews collected per product when 'Fetch customer reviews' is on. Use 0 for all reviews available on the product page.

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

Maximum number of products to return across the whole run. Use 0 for unlimited.

## `maxPages` (type: `integer`):

Safety cap on category / search listing pages fetched per query (each page holds about 20 products). Leave empty for the default cap; the run also stops at Max products or when a listing is exhausted.

## `proxy` (type: `object`):

Apify Proxy with residential access in Vietnam is required for reliable results and correct local pricing and stock. The run rotates fresh exits automatically. On the free plan, coverage may be limited and some runs may return no results.

## `mcpConnectors` (type: `array`):

Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "queries": [
    "iphone 15"
  ],
  "specialsOnly": false,
  "sortBy": "relevance",
  "urls": [
    "https://www.thegioididong.com/dtdd"
  ],
  "fetchDetails": true,
  "fetchReviews": false,
  "maxReviewsPerProduct": 20,
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "VN"
  },
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `overview` (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 = {
    "queries": [
        "iphone 15"
    ],
    "urls": [
        "https://www.thegioididong.com/dtdd"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "VN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/thegioididong-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 = {
    "queries": ["iphone 15"],
    "urls": ["https://www.thegioididong.com/dtdd"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "VN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/thegioididong-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 '{
  "queries": [
    "iphone 15"
  ],
  "urls": [
    "https://www.thegioididong.com/dtdd"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "VN"
  }
}' |
apify call abotapi/thegioididong-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Thế Giới Di Động Scraper - Products & Reviews",
        "description": "Scrape thegioididong.com products with full specifications, current & original price, discount, brand, category, variants, image gallery, description, customer rating and reviews. Search by keyword with brand, price, rating and sort filters, or paste product / category / search URLs.",
        "version": "1.0",
        "x-build-id": "la6qUMjBLpqmvCasq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~thegioididong-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-thegioididong-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/abotapi~thegioididong-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-thegioididong-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/abotapi~thegioididong-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-thegioididong-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "Choose 'search' to use keywords and filters, or 'url' to scrape specific product, category or search URLs you paste below.",
                        "default": "search"
                    },
                    "queries": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "One or more keywords to search, for example 'iphone 15', 'laptop gaming' or 'tai nghe bluetooth'. Each keyword is searched separately. To browse a whole category instead, switch to URL mode and paste its link (for example https://www.thegioididong.com/dtdd).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "specialsOnly": {
                        "title": "Flash sale deals only",
                        "type": "boolean",
                        "description": "Browse the site's permanent Flash Sale hub instead of a keyword search. Every returned product carries a genuine original/'was' price, discount amount and percentage. Ignores 'Search keywords' when on. To browse a seasonal brand promo page instead (for example a specific brand's clearance page), switch to URL mode and paste its link.",
                        "default": false
                    },
                    "brand": {
                        "title": "Brand",
                        "type": "string",
                        "description": "Optional. Keep only products whose brand contains this text, for example 'Apple', 'Samsung' or 'Xiaomi'."
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "relevance",
                            "priceAsc",
                            "priceDesc",
                            "ratingDesc",
                            "reviewsDesc",
                            "nameAsc"
                        ],
                        "type": "string",
                        "description": "Ordering applied to the collected results.",
                        "default": "relevance"
                    },
                    "minPrice": {
                        "title": "Minimum price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional. Only keep products priced at or above this amount (VND)."
                    },
                    "maxPrice": {
                        "title": "Maximum price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional. Only keep products priced at or below this amount (VND)."
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Optional. Only keep products with an average customer rating at or above this value (1 to 5). Needs product details enabled."
                    },
                    "urls": {
                        "title": "Thế Giới Di Động URLs",
                        "type": "array",
                        "description": "Product, category, search or promo-page URLs to scrape, for example https://www.thegioididong.com/dtdd/iphone-15, https://www.thegioididong.com/dtdd, https://www.thegioididong.com/flashsale (the Flash Sale deals hub) or a brand promo page like https://www.thegioididong.com/khuyen-mai-aukey. Multiple URLs supported.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch product details",
                        "type": "boolean",
                        "description": "Add full specifications, variants, image gallery, brand, category, description and aggregate rating for each product. Adds one request per product.",
                        "default": true
                    },
                    "fetchReviews": {
                        "title": "Fetch customer reviews",
                        "type": "boolean",
                        "description": "Also collect the customer reviews shown on each product page (review text, author, date, star rating). Read from the product page, so it needs product details enabled; no extra request.",
                        "default": false
                    },
                    "maxReviewsPerProduct": {
                        "title": "Max reviews per product",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on reviews collected per product when 'Fetch customer reviews' is on. Use 0 for all reviews available on the product page.",
                        "default": 20
                    },
                    "maxItems": {
                        "title": "Max products",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of products to return across the whole run. Use 0 for unlimited.",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Max listing pages",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Safety cap on category / search listing pages fetched per query (each page holds about 20 products). Leave empty for the default cap; the run also stops at Max products or when a listing is exhausted."
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy with residential access in Vietnam is required for reliable results and correct local pricing and stock. The run rotates fresh exits automatically. On the free plan, coverage may be limited and some runs may return no results.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "VN"
                        }
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
