# Otto.de Product Scraper - Prices, Ratings & Listings (`scrapeworks/otto-de-product-scraper`) Actor

Scrape otto.de product listings in bulk: brand, title, price, UVP/list price, discount, star rating, reviews, availability, key specs, colours and image. Paste any Otto search or category URL or a keyword - it paginates deep for thousands of products per run. No login or API key.

- **URL**: https://apify.com/scrapeworks/otto-de-product-scraper.md
- **Developed by:** [Nicolas van Arkens](https://apify.com/scrapeworks) (community)
- **Categories:** E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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

## Otto.de Product Scraper — bulk product data from Otto (otto.de)

Scrape product listings from **[Otto](https://www.otto.de)**, one of Germany's largest
online retailers, in bulk. Paste any Otto **search** or **category** URL (or just a
keyword) and get one clean, structured row per product: brand, title, current price,
UVP / list price, discount, star rating, review count, availability, key specs, colours,
image and the product link. No login, no API key, no browser extension.

The actor reads Otto's own product tile-list data feed, so results are **complete and
accurate** — and it paginates **deep** automatically: a broad term like `laptop` exposes
~10,000 products, so a single run returns thousands of rows.

---

### What you can do with it

- **Price & competitor monitoring** — track Otto prices, UVP (RRP) and discounts across a
  category over time.
- **Catalog / market research** — pull an entire category (brands, specs, ratings, price
  bands) for analysis.
- **Lead lists for brands & sellers** — see which products, brands and price points win on
  ratings and reviews.
- **Feed building & dropshipping research** — export product data (title, price, image,
  URL) for thousands of items at once.
- **Deal / discount tracking** — filter for `onSale` items and the biggest `discountPercent`.

### Input

Give the actor **either** full Otto listing URLs, **or** keywords, **or** both. Everything
takes an ARRAY, so you can scrape many searches/categories in one run.

| Field | What it does |
|---|---|
| **Otto.de listing URLs** (`startUrls`) | One or more otto.de listing pages — a search URL (`https://www.otto.de/suche/laptop/`) or a category browse page. Copy the URL from your browser after searching/browsing. |
| **Search keywords** (`searchKeywords`) | Convenience: each keyword becomes an Otto search and is paginated deep. Use German product terms (e.g. `kaffeemaschine`, `sneaker herren`, `gaming stuhl`). |
| **Max results per start URL** (`maxResultsPerUrl`) | Cap on products per URL/keyword. Default 5000. Set high to pull a whole category; lower to sample. |
| **Max pages per start URL** (`maxPagesPerUrl`) | Safety cap on how many result windows (18 products each) to fetch per URL. The actor also stops at the listing's real end. |
| **Max results overall** (`maxResults`) | Optional total cap across all URLs/keywords combined. |
| **Proxy configuration** (`proxyConfiguration`) | Apify Proxy (Germany) is used only as a fallback if a request is blocked. Leave the default in place. |

#### Example input

```json
{
  "startUrls": [
    "https://www.otto.de/suche/laptop/",
    "https://www.otto.de/suche/kaffeemaschine/"
  ],
  "searchKeywords": ["gaming stuhl", "sneaker herren"],
  "maxResultsPerUrl": 1000,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyCountry": "DE" }
}
````

### Output

One row per product. Example (trimmed):

```json
{
  "productId": "C751291358",
  "variationId": "1405001626",
  "articleNumber": "C751291358PVX",
  "brand": "Melitta",
  "title": "Melitta Kaffeevollautomat Solo® 950-766, Pure Silver …",
  "category": "Kaffeevollautomaten",
  "price": 279.0,
  "priceFrom": true,
  "listPrice": 509.0,
  "comparativePrice": null,
  "currency": "EUR",
  "onSale": true,
  "discountPercent": 45,
  "rating": 4.5,
  "reviewCount": 510,
  "availability": "lieferbar - in 1-2 Werktagen bei dir",
  "availabilityState": "AVAILABLE",
  "colorCount": 5,
  "colorNames": ["Pure Silver", "Pure Black", "…"],
  "topInfo": { "Pumpendruck": "15 bar", "Mahlwerk": "Stahl Kegelmahlwerk" },
  "isSponsored": false,
  "listPosition": 4,
  "imageUrl": "https://i.otto.de/i/otto/73a0a275-…?$responsive_ft2$",
  "productUrl": "https://www.otto.de/p/melitta-kaffeevollautomat-solo-…/?variationId=1405001626",
  "sourceUrl": "https://www.otto.de/suche/kaffeemaschine/",
  "resultOffset": 0,
  "scrapedAt": "2026-07-26T12:00:00+00:00"
}
```

#### Fields

| Field | Description |
|---|---|
| `productId` / `variationId` / `articleNumber` | Otto product, variation and article identifiers. |
| `brand` | Brand name. |
| `title` | Full product name. |
| `category` | Otto product category (e.g. `Notebooks`). |
| `price` | Current price, in EUR (a number, e.g. `279.0`). |
| `priceFrom` | `true` when `price` is a "from" starting price (product has variants at different prices). |
| `listPrice` | UVP / RRP (manufacturer's suggested price) when shown — otherwise `null`. |
| `comparativePrice` | An additional reference/compare-at price when shown. |
| `currency` | Always `EUR` (Otto is a German store). |
| `onSale` | `true` when Otto flags the item as reduced. |
| `discountPercent` | Discount vs UVP as a whole number (e.g. `45`) when the item is reduced. |
| `rating` | Average customer star rating (0–5) — `null` if the product has no reviews yet. |
| `reviewCount` | Number of customer reviews — `null` if none yet. |
| `availability` / `availabilityState` | Delivery text and state (e.g. `AVAILABLE`). |
| `colorCount` / `colorNames` | Number of colour variants and their names. |
| `topInfo` | Key spec highlights shown on the tile, as a label→value object. |
| `isSponsored` | `true` for sponsored (ad) placements. |
| `listPosition` | The product's rank position in the listing. |
| `imageUrl` | Main product image URL. |
| `productUrl` | Direct link to the product page (with the shown variation). |
| `sourceUrl` | The listing URL this product came from. |
| `resultOffset` | The paging offset the product was found at. |
| `scrapedAt` | UTC timestamp of the scrape. |

### Pricing

This actor is **pay per result** — you are charged once for each product row it returns.
Blocked or empty responses are never charged.

### How pagination works

Otto renders only the first ~18 products of a listing above the fold and lazy-loads the
rest. This actor reads Otto's tile-list data feed directly and steps through it in windows
of 18 fully-detailed products, so it reaches **every** product in the search/category —
not just the first page. Sponsored placements that repeat across windows are
de-duplicated by variation id, so every row is unique.

### FAQ

**Do I need an Otto account or API key?** No. The actor reads public listing data.

**Which language / currency?** otto.de is the German store, so titles are in German and
prices are always in EUR, regardless of proxy country.

**Can I scrape a whole category?** Yes — paste the category URL (or a broad keyword) and
raise `maxResultsPerUrl`. The actor paginates deep and stops at the listing's real end.

**Why is `rating` / `reviewCount` sometimes empty?** Those products simply have no customer
reviews yet on Otto. `listPrice` is empty when a product has no UVP/RRP to compare against.

**Is scraping Otto allowed?** The actor only collects publicly visible listing data. You
are responsible for using the data in line with Otto's terms and applicable law.

# Actor input Schema

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

One or more otto.de listing pages to scrape. Each can be a search-results URL (e.g. https://www.otto.de/suche/laptop/) or a category browse page (e.g. https://www.otto.de/moebel/). To get a URL: open otto.de, search or browse to the products you want, and copy the page URL from your browser. Every URL is paginated DEEP automatically (a broad term exposes thousands of products), so a few URLs return thousands of rows. Results are billed per product, so more URLs = more rows.

## `searchKeywords` (type: `array`):

Optional convenience: keywords to search otto.de for (each becomes a https://www.otto.de/suche/<keyword>/ search and is paginated deep). Use whole product terms in German for the best coverage (e.g. 'sneaker', 'kaffeemaschine', 'gaming stuhl'). Every keyword is paginated deep just like a start URL.

## `maxResultsPerUrl` (type: `integer`):

Maximum products to return for EACH start URL or keyword. The actor paginates automatically through Otto's whole listing. Set high to pull a whole search/category; lower it to sample.

## `maxPagesPerUrl` (type: `integer`):

Safety cap on how many result windows to fetch per start URL (each window is 18 products). This is an upper bound on top of Max results per start URL; the actor also stops automatically at the listing's real last page. Raise it only if you set a very high Max results per start URL.

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

Optional overall cap across ALL start URLs and keywords combined. Leave empty for no overall cap (each URL is still bounded by Max results / Max windows per URL). Useful to cap total billed rows for a run.

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

Fallback proxy for reaching otto.de. The actor fetches DIRECTLY first with a real Chrome TLS fingerprint (Otto's pages and tile-list feed return fine this way) and only routes through this proxy - rotating exits - if a request is blocked. The default (Apify Proxy, Germany) is a safe fallback; leave it in place. otto.de is a German store, so prices are always in EUR regardless of proxy country.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.otto.de/suche/laptop/",
    "https://www.otto.de/suche/kaffeemaschine/",
    "https://www.otto.de/suche/gaming%20stuhl/"
  ],
  "searchKeywords": [
    "kaffeemaschine",
    "sneaker herren",
    "gaming stuhl"
  ],
  "maxResultsPerUrl": 5000,
  "maxPagesPerUrl": 400,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "DE"
  }
}
```

# 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 = {
    "startUrls": [
        "https://www.otto.de/suche/laptop/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeworks/otto-de-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 = {
    "startUrls": ["https://www.otto.de/suche/laptop/"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyCountry": "DE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapeworks/otto-de-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 '{
  "startUrls": [
    "https://www.otto.de/suche/laptop/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyCountry": "DE"
  }
}' |
apify call scrapeworks/otto-de-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Otto.de Product Scraper - Prices, Ratings & Listings",
        "description": "Scrape otto.de product listings in bulk: brand, title, price, UVP/list price, discount, star rating, reviews, availability, key specs, colours and image. Paste any Otto search or category URL or a keyword - it paginates deep for thousands of products per run. No login or API key.",
        "version": "0.1",
        "x-build-id": "xGyXoPPVCzULEz8dw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapeworks~otto-de-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapeworks-otto-de-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/scrapeworks~otto-de-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapeworks-otto-de-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/scrapeworks~otto-de-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapeworks-otto-de-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": {
                    "startUrls": {
                        "title": "Otto.de listing URLs",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "One or more otto.de listing pages to scrape. Each can be a search-results URL (e.g. https://www.otto.de/suche/laptop/) or a category browse page (e.g. https://www.otto.de/moebel/). To get a URL: open otto.de, search or browse to the products you want, and copy the page URL from your browser. Every URL is paginated DEEP automatically (a broad term exposes thousands of products), so a few URLs return thousands of rows. Results are billed per product, so more URLs = more rows.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchKeywords": {
                        "title": "Search keywords (optional)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional convenience: keywords to search otto.de for (each becomes a https://www.otto.de/suche/<keyword>/ search and is paginated deep). Use whole product terms in German for the best coverage (e.g. 'sneaker', 'kaffeemaschine', 'gaming stuhl'). Every keyword is paginated deep just like a start URL.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResultsPerUrl": {
                        "title": "Max results per start URL",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum products to return for EACH start URL or keyword. The actor paginates automatically through Otto's whole listing. Set high to pull a whole search/category; lower it to sample.",
                        "default": 5000
                    },
                    "maxPagesPerUrl": {
                        "title": "Max result windows per start URL",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Safety cap on how many result windows to fetch per start URL (each window is 18 products). This is an upper bound on top of Max results per start URL; the actor also stops automatically at the listing's real last page. Raise it only if you set a very high Max results per start URL.",
                        "default": 400
                    },
                    "maxResults": {
                        "title": "Max results overall (optional)",
                        "minimum": 1,
                        "maximum": 500000,
                        "type": "integer",
                        "description": "Optional overall cap across ALL start URLs and keywords combined. Leave empty for no overall cap (each URL is still bounded by Max results / Max windows per URL). Useful to cap total billed rows for a run."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Fallback proxy for reaching otto.de. The actor fetches DIRECTLY first with a real Chrome TLS fingerprint (Otto's pages and tile-list feed return fine this way) and only routes through this proxy - rotating exits - if a request is blocked. The default (Apify Proxy, Germany) is a safe fallback; leave it in place. otto.de is a German store, so prices are always in EUR regardless of proxy country.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyCountry": "DE"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
