# Amazon Product Search Scraper (`khadinakbar/amazon-product-search-scraper`) Actor

Search Amazon by keyword (or paste a search/category URL) across 18 marketplaces and get product listings enriched with full detail-page data: feature bullets, description, all images, brand, best-sellers rank, buybox seller, breadcrumbs, variations, rating and reviews. Pay-per-event. MCP-ready.

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

## Pricing

from $2.00 / 1,000 product founds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Amazon Product Search Scraper

Search Amazon by **keyword** (or paste a **search/category URL**) across **18 marketplaces** and get back product listings **enriched with full detail-page data** — feature bullets, description, every image, brand, best-sellers rank, buybox seller, breadcrumbs, and variations — not just the thin SERP card. Built **MCP-first** for AI agents and dashboards. **Pay-per-event**, no subscription.

### What you get

This actor runs two phases in one pass:

1. **Search** — paginates Amazon search/category results and captures the rank-aware SERP card (price, rating, sponsored flag, SERP position).
2. **Enrich** (on by default) — opens each product's `/dp/` detail page and merges in the rich fields a plain SERP scraper can't see.

If a detail page is blocked or empty, the product still ships with its search-listing fields — you never silently lose a row.

### When to use it

- **Product research / catalog building** — pull a category's products with full descriptions and images in one run.
- **Brand & competitor monitoring** — track who ranks for a keyword, their price, BSR, and buybox seller.
- **SEO / rank tracking** — `organicRank` and `globalPosition` show exactly where a product sits.
- **AI shopping agents** — a clean keyword-in, structured-JSON-out tool with a predictable per-product price.

**Not for:** single-ASIN detail lookups from a list of `/dp/` URLs (this actor takes *search* input), Amazon reviews (use an Amazon reviews scraper), or seller storefront profiles.

### Output (one record per product)

| Field | Description |
|---|---|
| `asin` | Amazon Standard Identification Number |
| `title` | Product title (detail title when enriched) |
| `brand` | Brand / manufacturer (enriched) |
| `url` | Canonical `/dp/<ASIN>` product URL |
| `marketplace` | Marketplace code (US, UK, DE, …) |
| `searchQuery` | The keyword that produced this row |
| `price`, `listPrice`, `currency` | Current price, strike-through list price, ISO currency |
| `discountPercent` | Computed discount vs list price |
| `rating`, `reviewCount` | Star rating (0–5) and number of ratings |
| `organicRank`, `positionOnPage`, `globalPosition` | Rank signals (organic excludes ads) |
| `isSponsored` | True for ad placements |
| `isPrime` | Prime-eligible flag |
| `thumbnail` / `images` | SERP thumbnail / all hi-res detail images (enriched) |
| `featureBullets` | Bullet-point feature list (enriched) |
| `description` | Product description text (enriched) |
| `breadcrumbs`, `category` | Category path (enriched) |
| `bestSellersRank` | `[{ rank, category }]` BSR entries (enriched) |
| `availability`, `soldBy`, `shipsFrom` | Stock + buybox fulfillment (enriched) |
| `variations` | Color/size variation dimensions (enriched) |
| `productDetails` | Key→value technical details table (enriched) |
| `detailScraped` | Whether detail enrichment succeeded for this row |
| `scrapedAt` | ISO-8601 UTC timestamp |

### Pricing (pay-per-event)

| Event | Price |
|---|---|
| Actor start | $0.00005 |
| Product found (per product) | $0.002 |
| Product detail enriched (per product) | $0.003 |

- **With enrichment (default):** ~**$0.005 / product**.
- **Search-only** (`enrichDetails: false`): **$0.002 / product**.
- You are charged at most `maxResults` of each event — the cost cap is printed in the run log and status before any charge fires.

### Input example

```json
{
  "searchQuery": "wireless earbuds",
  "country": "US",
  "maxResults": 50,
  "enrichDetails": true,
  "sortBy": "relevance",
  "includeSponsored": true
}
````

Bulk keywords + a direct URL:

```json
{
  "searchQueries": ["gaming mouse", "mechanical keyboard"],
  "startUrls": [{ "url": "https://www.amazon.co.uk/s?k=running+shoes" }],
  "maxResults": 200,
  "enrichDetails": true
}
```

### Run it

#### API (JavaScript)

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('khadinakbar/amazon-product-search-scraper').call({
    searchQuery: 'wireless earbuds',
    country: 'US',
    maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("khadinakbar/amazon-product-search-scraper").call(run_input={
    "searchQuery": "wireless earbuds",
    "country": "US",
    "maxResults": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### MCP (AI agents)

Exposed as `apify--amazon-product-search-scraper` via Apify MCP. Hand an agent a keyword and a marketplace; it gets back structured products with a known per-product price.

### Marketplaces

US, UK, DE, FR, CA, ES, IT, JP, AU, IN, MX, BR, NL, SE, PL, TR, AE, SG — domain, currency, and proxy country are set automatically.

### Reliability

- **Resilient proxy** — prefers residential (best for Amazon), falls back to Apify datacenter US. Residential is strongly recommended; Amazon blocks most datacenter IPs.
- **Session pool** with retire-on-block (403/429/captcha) and exponential retry.
- **Honest reporting** — if every request is blocked, the run says so instead of silently returning empty.
- **Timeout guard** — saves partial results before the run times out.

### FAQ

**Can I scrape individual product URLs?** No — pass keywords or search/category URLs. Single `/dp/` URLs are rejected.

**Why is a product missing detail fields?** Its detail page was blocked or had no parseable data; the search-listing fields are still returned and `detailScraped` is `false`.

**How do I lower cost?** Set `enrichDetails: false` for $0.002/product search-only, and/or lower `maxResults`.

**Does it handle non-US marketplaces?** Yes — set `country`, or paste a non-US Amazon URL and the marketplace is auto-detected.

### Legal & compliance

This actor collects only **publicly available** data from Amazon search and product pages. It does not log in, bypass paywalls, or access private data. You are responsible for using the output in compliance with Amazon's Terms of Service, applicable laws (including data-protection and copyright law), and any contractual obligations. Scraped content may be subject to intellectual-property rights — do not republish it in violation of those rights. Use for research, monitoring, and analytics. Not affiliated with or endorsed by Amazon.

# Actor input Schema

## `searchQuery` (type: `string`):

A single free-text Amazon search term, e.g. 'wireless earbuds' or 'stainless steel water bottle'. The actor runs this as an Amazon search and returns matching products. Defaults to 'wireless earbuds'. NOT an Amazon product (/dp/) URL — for keyword + URL batches use searchQueries or startUrls instead.

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

A list of search terms to run in one job, e.g. \['gaming mouse','mechanical keyboard']. Each term is searched independently and results share one dataset. Use this instead of searchQuery when you need several keywords. Leave empty if you only need one keyword or are using startUrls.

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

Amazon search-result or category page URLs to scrape directly, e.g. 'https://www.amazon.com/s?k=running+shoes'. Use this when you already have a filtered Amazon URL or a category/browse-node page. The marketplace is auto-detected from each URL's domain. Single product (/dp/ or /gp/product/) URLs are rejected — this actor takes search/category pages, not individual ASINs.

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

Which Amazon marketplace to search when you pass a keyword (e.g. 'US' → amazon.com, 'UK' → amazon.co.uk, 'DE' → amazon.de). Controls the domain, currency, and proxy country. Defaults to 'US'. Ignored for startUrls, where the marketplace is read from each URL.

## `maxResults` (type: `integer`):

Maximum number of products to return across the whole run (the hard cost cap — you are charged per product, never more than this). Accepts 1 to 1000. Defaults to 50. Pagination stops once this many products are collected.

## `enrichDetails` (type: `boolean`):

When true (default), each product's /dp/ detail page is also fetched to add brand, feature bullets, description, all images, best-sellers rank, buybox seller, breadcrumbs, and variations. Set to false for a faster, cheaper search-only run that returns just the SERP fields (price, rating, rank). Detail enrichment is what distinguishes this actor from a plain SERP scraper.

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

Amazon result sort order applied to keyword searches: 'relevance' (default), 'priceAsc', 'priceDesc', 'avgCustomerReview', or 'newest'. Maps to Amazon's own sort parameters. Ignored for startUrls that already include a sort.

## `includeSponsored` (type: `boolean`):

When true (default), sponsored/ad placements are included and flagged with isSponsored=true so you can tell ads from organic results. Set to false to return organic results only. Organic rank is always tracked separately in the organicRank field.

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

Maximum number of Amazon search-result pages to paginate through per keyword/URL before stopping (each page is ~16–60 products). Accepts 1 to 20. Defaults to 5. Lower this to cap how deep into the rankings the run goes; maxResults still caps the total.

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

Proxy settings. Amazon blocks most datacenter IPs, so residential proxies are strongly recommended. Leave at the default (Apify Proxy on) and the actor automatically prefers residential and falls back to datacenter. Override only if you have specific proxy groups or custom proxy URLs.

## Actor input object example

```json
{
  "searchQuery": "wireless earbuds",
  "searchQueries": [
    "gaming mouse",
    "mechanical keyboard"
  ],
  "startUrls": [
    {
      "url": "https://www.amazon.com/s?k=running+shoes"
    }
  ],
  "country": "US",
  "maxResults": 50,
  "enrichDetails": true,
  "sortBy": "relevance",
  "includeSponsored": true,
  "maxSearchPages": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All product records found across the search/category pages, enriched with detail-page data when enrichDetails is on. Download as JSON, CSV, Excel, HTML, or RSS.

# 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 = {
    "searchQuery": "wireless earbuds",
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/amazon-product-search-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 = {
    "searchQuery": "wireless earbuds",
    "maxResults": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Amazon Product Search Scraper",
        "description": "Search Amazon by keyword (or paste a search/category URL) across 18 marketplaces and get product listings enriched with full detail-page data: feature bullets, description, all images, brand, best-sellers rank, buybox seller, breadcrumbs, variations, rating and reviews. Pay-per-event. MCP-ready.",
        "version": "1.0",
        "x-build-id": "Ds7fjHQYhcwfQMsrP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~amazon-product-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-amazon-product-search-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-product-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-amazon-product-search-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-product-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-amazon-product-search-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": {
                    "searchQuery": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "A single free-text Amazon search term, e.g. 'wireless earbuds' or 'stainless steel water bottle'. The actor runs this as an Amazon search and returns matching products. Defaults to 'wireless earbuds'. NOT an Amazon product (/dp/) URL — for keyword + URL batches use searchQueries or startUrls instead."
                    },
                    "searchQueries": {
                        "title": "Search keywords (bulk)",
                        "type": "array",
                        "description": "A list of search terms to run in one job, e.g. ['gaming mouse','mechanical keyboard']. Each term is searched independently and results share one dataset. Use this instead of searchQuery when you need several keywords. Leave empty if you only need one keyword or are using startUrls.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Amazon search / category URLs",
                        "type": "array",
                        "description": "Amazon search-result or category page URLs to scrape directly, e.g. 'https://www.amazon.com/s?k=running+shoes'. Use this when you already have a filtered Amazon URL or a category/browse-node page. The marketplace is auto-detected from each URL's domain. Single product (/dp/ or /gp/product/) URLs are rejected — this actor takes search/category pages, not individual ASINs.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "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": "Which Amazon marketplace to search when you pass a keyword (e.g. 'US' → amazon.com, 'UK' → amazon.co.uk, 'DE' → amazon.de). Controls the domain, currency, and proxy country. Defaults to 'US'. Ignored for startUrls, where the marketplace is read from each URL.",
                        "default": "US"
                    },
                    "maxResults": {
                        "title": "Max products",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of products to return across the whole run (the hard cost cap — you are charged per product, never more than this). Accepts 1 to 1000. Defaults to 50. Pagination stops once this many products are collected.",
                        "default": 50
                    },
                    "enrichDetails": {
                        "title": "Enrich with product detail pages",
                        "type": "boolean",
                        "description": "When true (default), each product's /dp/ detail page is also fetched to add brand, feature bullets, description, all images, best-sellers rank, buybox seller, breadcrumbs, and variations. Set to false for a faster, cheaper search-only run that returns just the SERP fields (price, rating, rank). Detail enrichment is what distinguishes this actor from a plain SERP scraper.",
                        "default": true
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "relevance",
                            "priceAsc",
                            "priceDesc",
                            "avgCustomerReview",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Amazon result sort order applied to keyword searches: 'relevance' (default), 'priceAsc', 'priceDesc', 'avgCustomerReview', or 'newest'. Maps to Amazon's own sort parameters. Ignored for startUrls that already include a sort.",
                        "default": "relevance"
                    },
                    "includeSponsored": {
                        "title": "Include sponsored products",
                        "type": "boolean",
                        "description": "When true (default), sponsored/ad placements are included and flagged with isSponsored=true so you can tell ads from organic results. Set to false to return organic results only. Organic rank is always tracked separately in the organicRank field.",
                        "default": true
                    },
                    "maxSearchPages": {
                        "title": "Max search pages per seed",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of Amazon search-result pages to paginate through per keyword/URL before stopping (each page is ~16–60 products). Accepts 1 to 20. Defaults to 5. Lower this to cap how deep into the rankings the run goes; maxResults still caps the total.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Amazon blocks most datacenter IPs, so residential proxies are strongly recommended. Leave at the default (Apify Proxy on) and the actor automatically prefers residential and falls back to datacenter. Override only if you have specific proxy groups or custom proxy URLs.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
