# Amazon Product Scraper (Pay-Per-Event) (`prodiger/amazon-product-scraper`) Actor

Pay-per-event Amazon search scraper. Returns title, ASIN, price, list price, discount %, rating, review count, Prime badge, sponsored flag, brand, image, URL. 11 marketplaces (US/UK/DE/FR/ES/IT/CA/JP/IN/AU/MX). Keyword or URL input.

- **URL**: https://apify.com/prodiger/amazon-product-scraper.md
- **Developed by:** [Arnas](https://apify.com/prodiger) (community)
- **Categories:** E-commerce, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

Scrape Amazon product data including prices, list prices, discounts, ratings, reviews, Prime badge, sponsored flags, brand, image, and direct product URLs across 11 marketplaces.

### What does Amazon Product Scraper do?

**Amazon Product Scraper** extracts product data from [Amazon](https://www.amazon.com) search results. For every keyword (or search URL) you provide, it returns one structured record per unique product including current price, list/original price, discount percent, rating, review count, Prime badge, sponsored flag, brand, image, and the direct product URL.

Use it for **price monitoring**, **competitive intelligence**, **dropshipping research**, **market analysis**, and **deal tracking** — without managing proxies, captcha gates, or HTML drift yourself.

Run it once on demand or [schedule it](https://docs.apify.com/platform/schedules) to track price changes over time. Results download as **JSON, CSV, or Excel**, or stream live via the [Apify API](https://docs.apify.com/api/v2).

### Who is it for?

- **E-commerce analysts** building competitive pricing dashboards across Amazon US / UK / DE / FR / ES / IT / CA / JP / IN / AU / MX
- **Dropshippers** finding products with strong ratings and pricing gaps
- **Price comparison services** cross-referencing Amazon against Walmart, Target, eBay, and others
- **Brand monitoring teams** tracking listings, Prime availability, and sponsored placements
- **Market researchers** analyzing review velocity and discount cycles

### Why use Amazon Product Scraper?

- **Cheaper than the leading alternative.** Pay-per-event at **$0.001/run + $0.005/product** (≈ **19% cheaper** than `junglee/free-amazon-product-scraper` at $6.20 per 1,000 results).
- **Keyword OR URL input.** Most Amazon scrapers force you to copy a search URL out of the browser. This actor accepts plain keywords; URLs still work if you prefer them.
- **11 marketplaces.** US, UK, DE, FR, ES, IT, CA, JP, IN, AU, MX — pick from a dropdown rather than memorizing TLDs.
- **Run-level deduplication.** Duplicate ASINs that appear across overlapping keyword searches or sponsored-then-organic placements are written once and **billed once**, not twice.
- **Numeric prices.** `price` and `listPriceValue` are returned as numbers, ready for math without string parsing — including European decimal-comma formats like `1.299,00 €`.
- **Computed `discountPercent`.** Amazon shows the strike-through price; we calculate the percentage so you can sort by deepest discount directly.
- **Marketplace-aware currency.** `USD`, `GBP`, `EUR`, `CAD`, `JPY`, `INR`, `AUD`, `MXN` populated automatically per row.
- **Honest page-cap surfacing.** Amazon's keyword search returns at most ~7 pages of distinct results before duplicates start appearing — the input schema's `maxSearchPages` hard-caps at 7 so you don't burn charges on pages that return only duplicates.
- **Residential proxy** — Amazon's WAF blocks datacenter IPs within minutes. RESIDENTIAL is the default.
- **Pay-per-event pricing.** No monthly subscription. Only pay for products written to the dataset.

### What data can you extract?

Each product in the output includes:

| Field | Description |
|---|---|
| `asin` | Amazon Standard Identification Number (stable across pages — used for deduplication) |
| `title` | Product title |
| `url` | Canonical `/dp/<ASIN>` product URL on the marketplace |
| `price` | Current price as a number (in the marketplace's local currency) |
| `priceString` | Raw price string as shown on the page (e.g., `"$19.99"`, `"1.299,00 €"`) |
| `listPrice` | List/strike-through price as a string |
| `listPriceValue` | List price as a number — easier to math against |
| `discountPercent` | Computed discount percentage (1 decimal place) |
| `onSale` | Whether the product has a list price > current price |
| `currency` | ISO 4217 currency code (`USD`, `GBP`, `EUR`, `CAD`, `JPY`, `INR`, `AUD`, `MXN`) |
| `rating` | Average rating (0–5) |
| `reviewCount` | Number of customer reviews |
| `thumbnail` | Product image URL |
| `isPrime` | Whether the listing carries a Prime badge |
| `isSponsored` | Whether the listing is a sponsored placement |
| `brand` | Product brand. Best-effort: inferred from the first token of the title against a generic-word denylist. Null when uncertain. Follow `url` to the PDP for canonical brand data. |
| `marketplace` | Marketplace enum (`US`, `UK`, `DE`, …) |
| `pageNumber` | Which search result page this product appeared on |
| `searchQuery` | Which keyword surfaced this product. `null` when the seed was a startUrl. |
| `scrapedAt` | ISO 8601 timestamp when the record was extracted |

### Output example

```json
{
  "asin": "B09JQMJHXY",
  "title": "Sony WH-1000XM5 Wireless Industry Leading Noise Canceling Headphones",
  "url": "https://www.amazon.com/dp/B09JQMJHXY",
  "price": 298.00,
  "priceString": "$298.00",
  "listPrice": "$399.99",
  "listPriceValue": 399.99,
  "discountPercent": 25.5,
  "onSale": true,
  "currency": "USD",
  "rating": 4.6,
  "reviewCount": 18421,
  "thumbnail": "https://m.media-amazon.com/images/I/.....jpg",
  "isPrime": true,
  "isSponsored": false,
  "brand": "Sony",
  "marketplace": "US",
  "pageNumber": 1,
  "searchQuery": "wireless headphones",
  "scrapedAt": "2026-05-28T13:40:32.821Z"
}
````

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### How to use Amazon Product Scraper

1. Click **Try for free** on this page.
2. Enter one or more keywords in **Search keywords** (e.g., `wireless earbuds`, `laptop stand`). Or paste Amazon search URLs into **Start URLs**.
3. Pick the **Marketplace** (defaults to US).
4. Optionally adjust **Max products per search** and **Max search pages**.
5. Click **Start**. Results stream to the Output tab as they are scraped.

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchQueries` | string\[] | — | Keywords to search on Amazon. One search per keyword. |
| `startUrls` | object\[] | — | Amazon search/category URLs. Marketplace inferred from URL host. |
| `marketplace` | enum | `US` | One of US, UK, DE, FR, ES, IT, CA, JP, IN, AU, MX. Applies to keyword seeds. |
| `maxProductsPerSearch` | integer | `100` | Max unique products per seed (1–1000). |
| `maxSearchPages` | integer | `5` | Max result pages per seed (1–7; Amazon caps keyword search at ~7). |
| `maxRequestRetries` | integer | `5` | Retries on 429 / 503 / captcha (1–10). |
| `proxyConfiguration` | object | RESIDENTIAL | Apify proxy. Datacenter IPs are blocked within minutes — keep RESIDENTIAL. |

Provide **at least one** of `searchQueries` or `startUrls`.

### How much does it cost to scrape Amazon?

Pay-per-event:

- **Actor start:** $0.001 per run.
- **Product scraped:** $0.005 per unique product written to the dataset (deduplicated by ASIN across the run).

Example: 1,000 products = $0.001 + (1,000 × $0.005) = **$5.001**. Compare against `junglee/free-amazon-product-scraper`'s $6.20 per 1,000 results — this actor is ~19% cheaper at the 1k-row mark and the gap widens at scale.

### Tips and advanced options

- **Stick to RESIDENTIAL.** Amazon blocks datacenter IPs almost immediately. The default configuration is correct.
- **Use broader keywords than narrow ones to maximize page coverage.** Amazon caps keyword search at ~7 pages — a narrow query may saturate at page 3.
- **For deeper category coverage**, paste paginated category URLs into `startUrls` (each URL is fetched as page 1 and not paginated further; you control depth by supplying multiple URLs).
- **Mix marketplaces in one run** by combining `startUrls` from different Amazon domains. Each URL infers its own marketplace.
- **Cost ceiling.** Set a maxItems cap in the Apify Console run settings to bound charges. The actor honors `eventChargeLimitReached` and stops cleanly when the cap is reached.
- **Schedule it** with [Apify Schedules](https://docs.apify.com/platform/schedules) to build a daily price-history dataset by keyword.

### Legality and ToS disclaimer

This actor scrapes publicly accessible search-results data from Amazon. Web scraping is legal in most jurisdictions when applied to public data, but you are responsible for ensuring your use complies with Amazon's Terms of Service, applicable laws, and any contractual obligations you have. Do not scrape personal or sensitive data. For commercial use cases, consult legal counsel.

### FAQ

**Does this scraper require an Amazon API key or login?** No — it operates on publicly accessible search-results HTML.

**Does it scrape full product detail pages (PDPs)?** Not in v0.1. This actor extracts the fields visible on the search results page. PDP scraping (feature bullets, variant matrix, A+ content, seller breakdown) is on the roadmap as a separate actor.

**Why is `brand` sometimes null?** Amazon's main-frame search HTML rarely exposes a structured `brand` field. We infer it from the title's first token against a generic-word denylist; when neither the title nor a card attribute is confident, we return `null` rather than guess. Follow `url` to the PDP for canonical brand data.

**Can I run this against `amazon.cn` or `amazon.com.br`?** Not in v0.1. The supported marketplaces are US, UK, DE, FR, ES, IT, CA, JP, IN, AU, MX. Open an Issue with your use case and we can prioritize.

**Why does my run produce fewer products than `maxProductsPerSearch`?** Two reasons: (1) Amazon caps keyword search at ~7 pages, so very specific keywords may saturate before reaching the cap. (2) Some sponsored placements duplicate organic ASINs; run-level dedup writes each ASIN once.

### Support

Have a feature request or hitting an issue? Open a ticket on the actor's Issues tab. We respond quickly and treat early-adopter feedback as design input.

# Actor input Schema

## `searchQueries` (type: `array`):

List of keywords to search on Amazon. Each keyword runs a separate search against the marketplace selected below. Examples: 'wireless earbuds', 'laptop stand', 'kindle paperwhite'.

## `startUrls` (type: `array`):

Amazon search or category URLs to scrape directly. The marketplace is inferred from the URL host (amazon.com → US, amazon.co.uk → UK, etc.). Use this when you want to copy a URL straight out of the browser. Non-Amazon URLs are skipped with a warning.

## `marketplace` (type: `string`):

Amazon storefront to query for keyword-based searches. URL-based seeds infer their own marketplace from the URL.

## `maxProductsPerSearch` (type: `integer`):

Maximum unique products to return per search seed (one seed = one keyword OR one startUrl). Amazon returns ~16 organic results per page.

## `maxSearchPages` (type: `integer`):

Maximum number of result pages per seed. Amazon's keyword search caps at ~7 pages of distinct results before duplicates start appearing — this hard cap mirrors that ceiling.

## `maxRequestRetries` (type: `integer`):

Retry budget per request for 429, 5xx, and bot-challenge responses. Sessions are rotated on each failure, so higher values significantly improve completion on residential proxies.

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

Apify proxy. RESIDENTIAL is strongly recommended — Amazon blocks datacenter IPs within minutes. Leaving the default keeps you on RESIDENTIAL.

## Actor input object example

```json
{
  "searchQueries": [
    "wireless earbuds"
  ],
  "marketplace": "US",
  "maxProductsPerSearch": 100,
  "maxSearchPages": 5,
  "maxRequestRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Scraped Amazon products. One record per unique ASIN across the run.

# 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 = {
    "searchQueries": [
        "wireless earbuds"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("prodiger/amazon-product-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 = {
    "searchQueries": ["wireless earbuds"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("prodiger/amazon-product-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 '{
  "searchQueries": [
    "wireless earbuds"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call prodiger/amazon-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Amazon Product Scraper (Pay-Per-Event)",
        "description": "Pay-per-event Amazon search scraper. Returns title, ASIN, price, list price, discount %, rating, review count, Prime badge, sponsored flag, brand, image, URL. 11 marketplaces (US/UK/DE/FR/ES/IT/CA/JP/IN/AU/MX). Keyword or URL input.",
        "version": "0.1",
        "x-build-id": "cwTGb9r53kbq8Vv0b"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/prodiger~amazon-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-prodiger-amazon-product-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/prodiger~amazon-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-prodiger-amazon-product-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/prodiger~amazon-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-prodiger-amazon-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Search keywords",
                        "type": "array",
                        "description": "List of keywords to search on Amazon. Each keyword runs a separate search against the marketplace selected below. Examples: 'wireless earbuds', 'laptop stand', 'kindle paperwhite'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Amazon search or category URLs to scrape directly. The marketplace is inferred from the URL host (amazon.com → US, amazon.co.uk → UK, etc.). Use this when you want to copy a URL straight out of the browser. Non-Amazon URLs are skipped with a warning.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "marketplace": {
                        "title": "Marketplace",
                        "enum": [
                            "US",
                            "UK",
                            "DE",
                            "FR",
                            "ES",
                            "IT",
                            "CA",
                            "JP",
                            "IN",
                            "AU",
                            "MX"
                        ],
                        "type": "string",
                        "description": "Amazon storefront to query for keyword-based searches. URL-based seeds infer their own marketplace from the URL.",
                        "default": "US"
                    },
                    "maxProductsPerSearch": {
                        "title": "Max products per search",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum unique products to return per search seed (one seed = one keyword OR one startUrl). Amazon returns ~16 organic results per page.",
                        "default": 100
                    },
                    "maxSearchPages": {
                        "title": "Max search pages",
                        "minimum": 1,
                        "maximum": 7,
                        "type": "integer",
                        "description": "Maximum number of result pages per seed. Amazon's keyword search caps at ~7 pages of distinct results before duplicates start appearing — this hard cap mirrors that ceiling.",
                        "default": 5
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Retry budget per request for 429, 5xx, and bot-challenge responses. Sessions are rotated on each failure, so higher values significantly improve completion on residential proxies.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy. RESIDENTIAL is strongly recommended — Amazon blocks datacenter IPs within minutes. Leaving the default keeps you on RESIDENTIAL.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
