# Shein Product Scraper — Prices, Variants & Reviews (`khadinakbar/shein-product-scraper`) Actor

Scrape Shein products by keyword search, category URL, product URL, or goods ID. Returns price, variants, sizes, colors, images, rating, description, and optional reviews. Browser-based via Apify Residential proxy. MCP-ready.

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

## Pricing

from $40.00 / 1,000 product scrapeds

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

## Shein Product Scraper — Prices, Variants & Reviews

Scrape **Shein** products at scale by **keyword search**, **category URL**, **product URL**, or **goods ID**. Returns clean, structured JSON: title, sale & retail price, discount, color and size variants, SKUs, the full image gallery, rating, description, attributes, and (optionally) customer reviews. Built **MCP-ready** for AI agents and **browser-based via Apify Residential proxies** so it gets through Shein's anti-bot.

### What you can do with it

- **Dropshipping & product research** — pull a category or search term and get every product with prices, discounts, and images.
- **Repricing & price monitoring** — track sale vs. retail price and discount % per goods ID over time.
- **Catalog & trend analysis** — capture sizes, colors, SKUs, and ratings across a niche.
- **Review mining** — embed the latest customer reviews (rating, text, size/color bought, fit) into each product record.
- **AI agents** — call it from Claude/GPT via Apify MCP with a single keyword or URL and get back agent-friendly JSON.

### When to use which input

| Input | Use it for | Billed as |
|-------|-----------|-----------|
| `searchQueries` | Keyword discovery (e.g. `summer dress`) | product (or search-result if `scrapeProductDetails=false`) |
| `startUrls` (search/category) | A specific Shein listing/category page | product (or search-result) |
| `startUrls` (product) | One or more exact product pages | product |
| `goodsIds` | You already have Shein goods IDs | product |

Set **`scrapeProductDetails=false`** to return only lightweight listing cards (cheaper, faster) instead of opening every product.

### Output

Each product record (one row per product):

| Field | Description |
|-------|-------------|
| `goodsId` | Shein internal numeric goods_id |
| `title` | Product name |
| `brand` | Store / brand (SHEIN, ROMWE, marketplace brand) |
| `salePrice` / `salePriceText` | Current price (number + display string) |
| `retailPrice` / `retailPriceText` | Original price (number + display string) |
| `discountPercent` | Discount off retail |
| `currency` | Storefront currency (e.g. USD) |
| `rating` / `reviewCount` | Average rating (0–5) + number of reviews |
| `inStock` | Stock availability |
| `color` / `colors` | Primary color + all available color names |
| `sizes` / `skus` | Size names + SKU variants `[{ size, skuCode, price, stock }]` |
| `mainImage` / `images` | Primary image + full gallery |
| `category` / `categoryId` / `breadcrumbs` | Category context |
| `description` / `attributes` | Description + material/style attributes |
| `reviews` | Embedded reviews when `scrapeReviews=true` |
| `productUrl` / `scrapedAt` | Canonical URL + ISO 8601 timestamp |

`search_result` rows (when `scrapeProductDetails=false`) carry the listing-card subset: `goodsId`, `title`, `salePrice`, `discountPercent`, `mainImage`, `rating`, `productUrl`.

### Pricing (Pay-Per-Event)

| Event | Price |
|-------|-------|
| Actor start | $0.00005 |
| **Product scraped** (full detail) | **$0.04** |
| **Search result** (listing card) | **$0.005** |

A typical run of 20 full products costs about **$0.80**. Listing-only runs are **$0.005/card**. Premium-tier quality at a lower price than the entrenched $0.045/product incumbents.

### Quick start

#### Apify Console
1. Enter a keyword in **Search queries** (e.g. `summer dress`), or paste Shein URLs / goods IDs.
2. Pick your **Country / storefront** (drives currency and proxy region).
3. Set **Max items** and toggle **Scrape full product detail** / **Scrape reviews**.
4. Run.

#### API (JavaScript)

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('khadinakbar/shein-product-scraper').call({
    searchQueries: ['summer dress'],
    country: 'us',
    maxItems: 20,
    scrapeProductDetails: true,
    scrapeReviews: false,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
````

#### API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("khadinakbar/shein-product-scraper").call(run_input={
    "goodsIds": ["100123456", "100654321"],
    "country": "us",
    "scrapeReviews": True,
    "maxReviews": 10,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["salePrice"], item["currency"])
```

#### MCP (AI agents)

The actor is exposed via Apify MCP as `apify--shein-product-scraper`. Point your MCP client at `https://mcp.apify.com?tools=khadinakbar/shein-product-scraper` and call it with a keyword, URL, or goods ID.

### How it works

Shein protects its product and search pages with a homegrown "armor" risk engine that blocks raw HTTP (including its own BFF JSON API) and challenges datacenter IPs. This actor renders pages in a real Chromium browser through **Apify Residential proxies** with rotating fingerprints, warms a session on the storefront homepage, and **passively captures Shein's own BFF JSON responses** (`get_goods_detail_static_data`, realtime, image) — falling back to JSON-LD, OpenGraph, and DOM extraction. If a session is challenged, it rotates to a fresh residential IP with exponential backoff.

### FAQ

**Which countries are supported?** US, UK, AU, DE, FR, ES, IT, and Global (`www.shein.com`). The storefront drives currency and the matching residential proxy region.

**Why are some runs slower?** Shein's armor occasionally challenges the first residential IP; the actor rotates to a fresh one automatically. Lower `maxItems` for faster test runs.

**Do I need cookies or login?** No. The actor needs no Shein account — it passes the armor challenge in-browser.

**Will it ever return 0 items?** If Shein blocks every rotated session, the run finishes `SUCCEEDED` with a single diagnostic row and a terminal WARNING status (never a silent empty success, never an unexplained failure). Retry, lower `maxItems`, or switch country.

**Can I get individual reviews as separate rows?** Reviews are embedded inside each product record (`reviews[]`) up to `maxReviews`.

### Legal & compliance

This Actor collects only **publicly available** data from Shein product and listing pages and performs no login or access-control bypass. You are responsible for using the scraped data in compliance with Shein's Terms of Service, applicable laws (including the GDPR/CCPA where relevant), and copyright. Do not use the data to infringe intellectual property or for any unlawful purpose. This Actor is an independent project and is not affiliated with, endorsed by, or sponsored by Shein.

# Actor input Schema

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

Free-text keywords searched on Shein, one product list per query (e.g. 'summer dress', 'men hoodie'). Each query opens Shein's pdsearch page and collects product cards up to maxItems. Leave empty if you are passing startUrls or goodsIds instead. NOT a URL — put Shein URLs in startUrls.

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

Shein URLs to scrape — product pages (…-p-1234567.html), search pages (/pdsearch/…), or category pages. The URL type is auto-detected: product URLs return one detail record each; search/category URLs return product lists up to maxItems. Use the exact domain you want (e.g. https://us.shein.com/…). NOT for keywords — use searchQueries for plain text.

## `goodsIds` (type: `array`):

Shein numeric goods IDs (the digits in a product URL after '-p-', e.g. '100123456'). Each ID is resolved to a product detail page in the selected country. Use this when you already have IDs and want the fastest detail path. NOT a SKU or barcode — it is Shein's internal goods\_id.

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

Shein storefront and matching residential proxy country, which drives currency and localized pricing (e.g. 'us' → us.shein.com in USD). Pick the market whose prices you want. Defaults to 'us'. Does NOT translate product text — Shein localizes server-side per storefront.

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

Maximum number of products collected per search query or listing URL (paginating as needed). Product-URL and goodsId inputs always return one record each and ignore this cap. Range 1–500, default 20. Keep it low for fast, cheap test runs.

## `scrapeProductDetails` (type: `boolean`):

When true, every product found via search/category is opened and enriched with full detail (variants, SKUs, all images, description, attributes) and billed as a product. When false, only the lightweight listing card (title, price, image, rating) is returned and billed as a cheaper search-result. Product-URL and goodsId inputs are always full detail. Default true.

## `scrapeReviews` (type: `boolean`):

When true, up to maxReviews customer reviews (rating, text, size/color bought, fit) are embedded in each product detail record. Adds extra page work and time but no separate charge. Ignored for listing-only items (scrapeProductDetails=false). Default false.

## `maxReviews` (type: `integer`):

Maximum number of reviews embedded per product when scrapeReviews is true. Reviews are the most recent first. Range 1–100, default 10. Has no effect when scrapeReviews is false.

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

Proxy settings. Shein blocks datacenter IPs, so the actor uses a residential proxy server-side (DataImpulse, matched to the storefront country) regardless of this setting. Only override if you want to force a specific Apify proxy and have residential access. Leave as default otherwise.

## Actor input object example

```json
{
  "searchQueries": [
    "summer dress",
    "men cargo pants"
  ],
  "startUrls": [
    {
      "url": "https://us.shein.com/x-p-100123456.html"
    }
  ],
  "goodsIds": [
    "100123456",
    "100654321"
  ],
  "country": "us",
  "maxItems": 3,
  "scrapeProductDetails": true,
  "scrapeReviews": false,
  "maxReviews": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped Shein products and search-result cards. Download as JSON, CSV, Excel, HTML, or RSS.

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

End-of-run JSON with counts, charges, stop reason, and warning samples.

# 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": [
        "summer dress"
    ],
    "startUrls": [],
    "goodsIds": [],
    "country": "us",
    "maxItems": 3,
    "scrapeProductDetails": true,
    "scrapeReviews": false,
    "maxReviews": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/shein-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": ["summer dress"],
    "startUrls": [],
    "goodsIds": [],
    "country": "us",
    "maxItems": 3,
    "scrapeProductDetails": True,
    "scrapeReviews": False,
    "maxReviews": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/shein-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": [
    "summer dress"
  ],
  "startUrls": [],
  "goodsIds": [],
  "country": "us",
  "maxItems": 3,
  "scrapeProductDetails": true,
  "scrapeReviews": false,
  "maxReviews": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call khadinakbar/shein-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Shein Product Scraper — Prices, Variants & Reviews",
        "description": "Scrape Shein products by keyword search, category URL, product URL, or goods ID. Returns price, variants, sizes, colors, images, rating, description, and optional reviews. Browser-based via Apify Residential proxy. MCP-ready.",
        "version": "0.7",
        "x-build-id": "JywoXwpaCRUCkePNK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~shein-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-shein-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/khadinakbar~shein-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-shein-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/khadinakbar~shein-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-shein-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 queries",
                        "type": "array",
                        "description": "Free-text keywords searched on Shein, one product list per query (e.g. 'summer dress', 'men hoodie'). Each query opens Shein's pdsearch page and collects product cards up to maxItems. Leave empty if you are passing startUrls or goodsIds instead. NOT a URL — put Shein URLs in startUrls.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Shein URLs",
                        "type": "array",
                        "description": "Shein URLs to scrape — product pages (…-p-1234567.html), search pages (/pdsearch/…), or category pages. The URL type is auto-detected: product URLs return one detail record each; search/category URLs return product lists up to maxItems. Use the exact domain you want (e.g. https://us.shein.com/…). NOT for keywords — use searchQueries for plain text.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "goodsIds": {
                        "title": "Goods IDs",
                        "type": "array",
                        "description": "Shein numeric goods IDs (the digits in a product URL after '-p-', e.g. '100123456'). Each ID is resolved to a product detail page in the selected country. Use this when you already have IDs and want the fastest detail path. NOT a SKU or barcode — it is Shein's internal goods_id.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country / storefront",
                        "enum": [
                            "us",
                            "uk",
                            "au",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "global"
                        ],
                        "type": "string",
                        "description": "Shein storefront and matching residential proxy country, which drives currency and localized pricing (e.g. 'us' → us.shein.com in USD). Pick the market whose prices you want. Defaults to 'us'. Does NOT translate product text — Shein localizes server-side per storefront.",
                        "default": "us"
                    },
                    "maxItems": {
                        "title": "Max items per query/URL",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of products collected per search query or listing URL (paginating as needed). Product-URL and goodsId inputs always return one record each and ignore this cap. Range 1–500, default 20. Keep it low for fast, cheap test runs.",
                        "default": 20
                    },
                    "scrapeProductDetails": {
                        "title": "Scrape full product detail",
                        "type": "boolean",
                        "description": "When true, every product found via search/category is opened and enriched with full detail (variants, SKUs, all images, description, attributes) and billed as a product. When false, only the lightweight listing card (title, price, image, rating) is returned and billed as a cheaper search-result. Product-URL and goodsId inputs are always full detail. Default true.",
                        "default": true
                    },
                    "scrapeReviews": {
                        "title": "Scrape reviews",
                        "type": "boolean",
                        "description": "When true, up to maxReviews customer reviews (rating, text, size/color bought, fit) are embedded in each product detail record. Adds extra page work and time but no separate charge. Ignored for listing-only items (scrapeProductDetails=false). Default false.",
                        "default": false
                    },
                    "maxReviews": {
                        "title": "Max reviews per product",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of reviews embedded per product when scrapeReviews is true. Reviews are the most recent first. Range 1–100, default 10. Has no effect when scrapeReviews is false.",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Shein blocks datacenter IPs, so the actor uses a residential proxy server-side (DataImpulse, matched to the storefront country) regardless of this setting. Only override if you want to force a specific Apify proxy and have residential access. Leave as default otherwise.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
