# Amazon Price History Scraper - ASIN Price Alerts (`khadinakbar/amazon-price-history-scraper`) Actor

Track Amazon product prices over time from ASINs or product URLs. Stores observed history in a named KV store and returns deltas, lows, highs, stock, seller, and optional drop alerts. MCP/API-ready.

- **URL**: https://apify.com/khadinakbar/amazon-price-history-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** E-commerce, Automation, MCP servers
- **Stats:** 1 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 product trackeds

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Amazon Price History Scraper

Track Amazon product prices over time from ASINs or product URLs. The actor scrapes current Amazon product-page signals, appends each observation to a persistent named key-value store, and returns one dataset row per product with current price, previous price, price change, low, high, average, stock, seller, rating, review count, and recent history points.

This actor is built for Amazon sellers, deal-monitoring teams, repricing tools, affiliate publishers, catalog analysts, and AI agents that need a clean product price timeline they can schedule and query. It is not a one-time historical backfill from Amazon. Amazon product pages expose current page data, so the history is the observed history created by running this actor repeatedly with the same `historyStoreName`.

### What It Extracts

| Field                                         | Description                                                                    |
| --------------------------------------------- | ------------------------------------------------------------------------------ |
| `asin`                                        | Amazon Standard Identification Number.                                         |
| `currentPrice`                                | Current buy-box or primary visible product price.                              |
| `previousPrice`                               | Most recent earlier stored price for the same ASIN and marketplace.            |
| `priceChange`                                 | Current price minus previous price. Negative means the product became cheaper. |
| `priceChangePercent`                          | Percentage change versus the previous stored price.                            |
| `lowestPrice`, `highestPrice`, `averagePrice` | Retained history statistics for the ASIN.                                      |
| `recentHistory`                               | Recent observations embedded in the row, capped by `outputHistoryPoints`.      |
| `availability`, `inStock`                     | Stock and availability signals from the page.                                  |
| `seller`, `buyBoxWinner`, `isFBA`, `isPrime`  | Seller and fulfillment signals when visible.                                   |
| `rating`, `reviewCount`                       | Product review summary fields.                                                 |
| `historyStoreName`, `historyKey`              | Where the full retained timeline is stored.                                    |

### When To Use

Use this actor when you want to monitor exact Amazon products on a schedule, detect price drops, export time-series price data to your own system, or give an AI agent a stable tool for checking whether an ASIN became cheaper since the last run.

Good fits:

- Track your own Amazon listings and keep a daily price timeline.
- Monitor a wishlist or deal list and trigger a webhook when price drops.
- Feed repricing, catalog QA, or affiliate workflows with clean current and previous prices.
- Run the same ASIN list hourly or daily and let the actor maintain the history store.
- Export recent price history into spreadsheets, BI tools, or an agent workflow.

Not a fit:

- Keyword discovery or search-result scraping. Use an Amazon search/product actor for that.
- Full Keepa-style all-time price backfill. This actor records observations from runs you perform.
- Reviews-only scraping. Use an Amazon reviews actor.
- Seller research or seller email lead collection.

### Input

```json
{
  "products": ["B0CHWRXH8B", "https://www.amazon.com/dp/B0CHWRXH8B"],
  "country": "US",
  "historyStoreName": "amazon-price-history",
  "outputHistoryPoints": 30,
  "historyRetentionPoints": 365,
  "alertWebhookUrl": "https://hooks.slack.com/services/...",
  "alertDropPercent": 5
}
````

#### Key Inputs

- `products` - required list of ASINs or Amazon product URLs. The actor extracts the ASIN and checks it on the selected marketplace.
- `country` - Amazon marketplace. Supported values include US, UK, DE, FR, CA, ES, IT, JP, AU, IN, MX, BR, NL, SE, PL, TR, AE, and SG.
- `historyStoreName` - named Apify key-value store that persists the timeline across runs. Use the same value for scheduled runs.
- `outputHistoryPoints` - how many recent observations are embedded in each dataset row.
- `historyRetentionPoints` - how many observations are retained in the named KV store per ASIN.
- `resetHistory` - clears stored history only for the submitted ASINs before writing the current observation.
- `alertWebhookUrl` and `alertDropPercent` - optional price-drop alerting.
- `proxyConfiguration` - defaults to the managed mobile proxy, country-pinned to the marketplace.

### Output Example

```json
{
  "asin": "B0CHWRXH8B",
  "url": "https://www.amazon.com/dp/B0CHWRXH8B?ref=tsm_1_ss_s_a",
  "marketplace": "US",
  "title": "Example Amazon Product",
  "currentPrice": 129.99,
  "previousPrice": 149.99,
  "priceChange": -20,
  "priceChangePercent": -13.33,
  "priceDropped": true,
  "lowestPrice": 129.99,
  "highestPrice": 159.99,
  "averagePrice": 146.66,
  "historyPoints": 3,
  "recentHistory": [
    {
      "observedAt": "2026-07-07T10:00:00.000Z",
      "asin": "B0CHWRXH8B",
      "marketplace": "US",
      "price": 149.99,
      "currency": "USD",
      "inStock": true
    }
  ],
  "currency": "USD",
  "inStock": true,
  "seller": "Amazon.com",
  "scrapedAt": "2026-07-08T10:00:00.000Z",
  "historyStoreName": "amazon-price-history",
  "historyKey": "HISTORY_US_B0CHWRXH8B"
}
```

### Pricing

This actor uses pay-per-event pricing.

| Event            |                               Price |
| ---------------- | ----------------------------------: |
| Actor start      |                              $0.001 |
| Product tracked  |      $0.012 per product row written |
| Alert dispatched | $0.005 per successful webhook alert |

Typical run: 10 ASINs with no alert equals about $0.121 plus platform usage and proxy costs. A one-product agent call costs about $0.013 plus platform usage.

### Reliability Notes

Amazon commonly blocks direct and datacenter traffic. The actor defaults to its managed mobile proxy and pins the proxy country to the selected marketplace when you do not override it. It uses session pooling, cookie persistence, multiple price selectors, JSON-LD parsing, and explicit block detection for robot checks, captcha pages, soft 404 pages, 403, 429, and 503 responses.

If Amazon blocks every request before any product data is returned, the actor honestly fails the run instead of pretending an empty dataset is valid. If a product page loads but Amazon hides the current price, the actor still emits the row with `_warnings` and keeps the history honest.

### API Usage

```bash
apify call khadinakbar/amazon-price-history-scraper --input='{
  "products": ["B0CHWRXH8B"],
  "country": "US",
  "historyStoreName": "amazon-price-history"
}'
```

### MCP And AI Agent Fit

Tool description draft:

Scrape Amazon product price history from ASINs or product URLs. Use for scheduled price monitoring, deal alerts, repricing, and catalog intelligence. Not for keyword search or all-time Keepa backfill. Returns currentPrice, previousPrice, priceChange, lows, highs, stock, seller, and recentHistory. Charged $0.012/product.

The output is intentionally compact enough for agents to inspect several products at once without drowning the context window.

### Legal And Compliance

This actor extracts publicly visible product-page information. You are responsible for using the data in compliance with Amazon's terms, marketplace rules, privacy laws, and your own customer agreements. Do not use it to collect or store sensitive personal data.

# Actor input Schema

## `products` (type: `array`):

Use this when you know the exact Amazon products to monitor. Accepts 10-character ASINs like B0CHWRXH8B or product URLs like https://www.amazon.com/dp/B0CHWRXH8B. Defaults to one working ASIN for a quick smoke test. Not a keyword search field.

## `country` (type: `string`):

Use this when the product should be checked on a specific Amazon marketplace. Accepted values include US, UK, DE, FR, CA, JP, IN, AU, and more. Defaults to US. This does not auto-detect the country from a URL.

## `maxProducts` (type: `integer`):

Use this to cap how many unique products are processed from the products list. The actor stops at this count before crawling or charging product events. Defaults to 20 and maxes at 100. This is not a page-count setting.

## `historyStoreName` (type: `string`):

Use this to keep price history across scheduled runs. The same named key-value store is opened every run, for example amazon-price-history. Defaults to amazon-price-history. This is not the output dataset name.

## `outputHistoryPoints` (type: `integer`):

Use this to control how many recent observations are embedded in each dataset row. The full retained history stays in the named KV store. Defaults to 30 and maxes at 365. This does not delete older stored history.

## `historyRetentionPoints` (type: `integer`):

Use this to cap stored observations per ASIN in the history KV store. Defaults to 365 and maxes at 2000. Older observations roll off only after this limit is reached. This is not measured in days.

## `resetHistory` (type: `boolean`):

Use this when you want to discard prior stored observations for the submitted ASINs before writing this run. Defaults to false for normal scheduled tracking. Set true only for a clean restart. This does not delete unrelated ASIN keys.

## `alertWebhookUrl` (type: `string`):

Use this to POST a JSON alert when the current price drops below the previous observed price by the threshold. Must be an HTTPS URL, for example a Slack, Make, Zapier, n8n, or custom endpoint. Empty by default. This is not required for scraping.

## `alertDropPercent` (type: `integer`):

Use this with alertWebhookUrl to avoid noisy small-price-change alerts. A value of 5 means alert when price falls at least five percent versus the previous stored price. Defaults to 5 and maxes at 90. Ignored when no webhook URL is set.

## `maxConcurrency` (type: `integer`):

Use this to tune request parallelism for Amazon product pages. Lower values are slower but gentler on proxies and reduce intermittent blocks. Defaults to 5 and maxes at 10. This is not a product limit.

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

Optional custom or Apify proxy settings. When left blank, the actor uses its managed mobile proxy targeted to the selected Amazon marketplace. Supply your own proxy only when you need to control egress or billing.

## Actor input object example

```json
{
  "products": [
    "B0CHWRXH8B"
  ],
  "country": "US",
  "maxProducts": 20,
  "historyStoreName": "amazon-price-history",
  "outputHistoryPoints": 30,
  "historyRetentionPoints": 365,
  "resetHistory": false,
  "alertWebhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXX",
  "alertDropPercent": 5,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset items for every tracked product in this run.

## `runSummary` (type: `string`):

Counts, request stats, charge counts, and the named history store used by the run.

## `output` (type: `string`):

Compact machine-readable outcome and persisted row count.

# 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 = {
    "products": [
        "B0CHWRXH8B"
    ],
    "country": "US",
    "maxProducts": 20,
    "historyStoreName": "amazon-price-history",
    "outputHistoryPoints": 30,
    "historyRetentionPoints": 365,
    "resetHistory": false,
    "alertDropPercent": 5,
    "maxConcurrency": 5,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/amazon-price-history-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 = {
    "products": ["B0CHWRXH8B"],
    "country": "US",
    "maxProducts": 20,
    "historyStoreName": "amazon-price-history",
    "outputHistoryPoints": 30,
    "historyRetentionPoints": 365,
    "resetHistory": False,
    "alertDropPercent": 5,
    "maxConcurrency": 5,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/amazon-price-history-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 '{
  "products": [
    "B0CHWRXH8B"
  ],
  "country": "US",
  "maxProducts": 20,
  "historyStoreName": "amazon-price-history",
  "outputHistoryPoints": 30,
  "historyRetentionPoints": 365,
  "resetHistory": false,
  "alertDropPercent": 5,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call khadinakbar/amazon-price-history-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Amazon Price History Scraper - ASIN Price Alerts",
        "description": "Track Amazon product prices over time from ASINs or product URLs. Stores observed history in a named KV store and returns deltas, lows, highs, stock, seller, and optional drop alerts. MCP/API-ready.",
        "version": "0.1",
        "x-build-id": "ps0J4Ch86xh9KODYL"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~amazon-price-history-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-amazon-price-history-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/khadinakbar~amazon-price-history-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-amazon-price-history-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/khadinakbar~amazon-price-history-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-amazon-price-history-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": [
                    "products"
                ],
                "properties": {
                    "products": {
                        "title": "Amazon ASINs or product URLs",
                        "type": "array",
                        "description": "Use this when you know the exact Amazon products to monitor. Accepts 10-character ASINs like B0CHWRXH8B or product URLs like https://www.amazon.com/dp/B0CHWRXH8B. Defaults to one working ASIN for a quick smoke test. Not a keyword search field.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Amazon marketplace",
                        "enum": [
                            "US",
                            "UK",
                            "DE",
                            "FR",
                            "CA",
                            "ES",
                            "IT",
                            "JP",
                            "AU",
                            "IN",
                            "MX",
                            "BR",
                            "NL",
                            "SE",
                            "PL",
                            "TR",
                            "AE",
                            "SG"
                        ],
                        "type": "string",
                        "description": "Use this when the product should be checked on a specific Amazon marketplace. Accepted values include US, UK, DE, FR, CA, JP, IN, AU, and more. Defaults to US. This does not auto-detect the country from a URL.",
                        "default": "US"
                    },
                    "maxProducts": {
                        "title": "Max products",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Use this to cap how many unique products are processed from the products list. The actor stops at this count before crawling or charging product events. Defaults to 20 and maxes at 100. This is not a page-count setting.",
                        "default": 20
                    },
                    "historyStoreName": {
                        "title": "History store name",
                        "pattern": "^[a-zA-Z0-9_-]{3,80}$",
                        "type": "string",
                        "description": "Use this to keep price history across scheduled runs. The same named key-value store is opened every run, for example amazon-price-history. Defaults to amazon-price-history. This is not the output dataset name.",
                        "default": "amazon-price-history"
                    },
                    "outputHistoryPoints": {
                        "title": "Recent history points in output",
                        "minimum": 1,
                        "maximum": 365,
                        "type": "integer",
                        "description": "Use this to control how many recent observations are embedded in each dataset row. The full retained history stays in the named KV store. Defaults to 30 and maxes at 365. This does not delete older stored history.",
                        "default": 30
                    },
                    "historyRetentionPoints": {
                        "title": "Stored history points per ASIN",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Use this to cap stored observations per ASIN in the history KV store. Defaults to 365 and maxes at 2000. Older observations roll off only after this limit is reached. This is not measured in days.",
                        "default": 365
                    },
                    "resetHistory": {
                        "title": "Reset history for these ASINs",
                        "type": "boolean",
                        "description": "Use this when you want to discard prior stored observations for the submitted ASINs before writing this run. Defaults to false for normal scheduled tracking. Set true only for a clean restart. This does not delete unrelated ASIN keys.",
                        "default": false
                    },
                    "alertWebhookUrl": {
                        "title": "Price-drop webhook URL",
                        "type": "string",
                        "description": "Use this to POST a JSON alert when the current price drops below the previous observed price by the threshold. Must be an HTTPS URL, for example a Slack, Make, Zapier, n8n, or custom endpoint. Empty by default. This is not required for scraping."
                    },
                    "alertDropPercent": {
                        "title": "Alert drop threshold (%)",
                        "minimum": 1,
                        "maximum": 90,
                        "type": "integer",
                        "description": "Use this with alertWebhookUrl to avoid noisy small-price-change alerts. A value of 5 means alert when price falls at least five percent versus the previous stored price. Defaults to 5 and maxes at 90. Ignored when no webhook URL is set.",
                        "default": 5
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Use this to tune request parallelism for Amazon product pages. Lower values are slower but gentler on proxies and reduce intermittent blocks. Defaults to 5 and maxes at 10. This is not a product limit.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional custom or Apify proxy settings. When left blank, the actor uses its managed mobile proxy targeted to the selected Amazon marketplace. Supply your own proxy only when you need to control egress or billing.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
