# Shopify & DTC & Quince Product, Prices, Discounts & Reviews (`memo23/dtc-product-scraper`) Actor

Scrape any DTC or Shopify store — selling price, retail price, auto-calculated discount %, variants, images, ratings & reviews. Covers Quince, Everlane, Allbirds, SKIMS + thousands more by domain, category, keyword or product URL. JSON or CSV, pay per result

- **URL**: https://apify.com/memo23/dtc-product-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** E-commerce, AI, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 product 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 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

## DTC & Shopify Product Scraper

Turn any direct-to-consumer brand store into clean, structured product data — **selling price, retail price, auto-calculated discount %, variants, hero images, ratings and reviews**. One actor covers **Shopify storefronts, Quince, and generic JSON-LD shops**, with four ways in: whole-catalog, category/collection, keyword search, or direct product URLs. Pay per result, no monthly fee.

#### How it works

![How the DTC & Shopify Product Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-dtc.png)

#### ✨ Why use this scraper?

- **One actor, the whole DTC long tail.** Any Shopify store works with zero per-brand setup — Everlane, Allbirds, SKIMS, Mejuri, Gymshark and *thousands* more — plus a dedicated Quince adapter and a generic JSON-LD fallback for everything else.
- **Discount % done for you.** Every row carries `sellingPrice`, `retailPrice` and a pre-computed `discountPct` — no spreadsheet formulas, no guessing which price is the sale price.
- **Four discovery modes, mixed freely.** Drop a bare domain (whole catalog), a category URL, a `searchTerms` keyword, a product URL, or a brand key — all in one run, each auto-classified per store.
- **Full variant + image detail.** Size/colour options, per-variant SKU, price and availability, and the complete image gallery — not just the hero shot.
- **No browser, no Cloudflare drama.** Pure HTTP with a real Chrome TLS fingerprint (impit) clears stores that block naïve scrapers — including Aritzia and ssense — with residential proxy support and no paid unlocker.
- **Pay per result.** Billed per product row, with a strict `maxItems` cap so a run never collects (or charges) more than you asked for.

#### 🎯 Use cases

| You are… | Use it to… |
|---|---|
| **Pricing / competitive intelligence** | Track competitor selling vs. retail prices and discount cadence across DTC brands |
| **Affiliate & comparison sites** | Pull clean product metadata, hero images, prices and ratings into your feed |
| **E-commerce & resellers** | Sync catalogs, monitor stock and price changes, align listings |
| **Market & investment research** | Use DTC catalog breadth and discount behaviour as alternative data |
| **Brand & merchandising teams** | Benchmark assortment, newness and markdown depth against peers |
| **Deal / markdown monitors** | Watch active sales and price drops on a schedule |

#### 📥 Supported inputs

Add any mix of the following to **`startUrls`** (each entry is auto-classified per store):

| Input | Example | What you get |
|---|---|---|
| Store domain / homepage | `everlane.com` | The store's whole catalog |
| Category / collection URL | `https://www.allbirds.com/collections/mens` | Every product in that category |
| Product URL | `https://www.quince.com/products/{slug}` | That single product |
| Brand key | `quince`, `everlane`, `allbirds`, `skims`, `mejuri`, `gymshark` | The brand's catalog |

Plus **`searchTerms`** — keyword search run against each store above (e.g. `cashmere sweater`, `linen shirt`).

**Not supported (v1):** category/keyword browsing on non-Shopify, non-Quince stores (for those, pass direct product URLs); checkout, account, or any logged-in data.

#### 🔄 How it works

1. **Classify** — each `startUrls` entry is resolved to a store and tagged as catalog / category / product / search.
2. **Detect platform** — Shopify (`/products.json`), Quince (Algolia), or generic JSON-LD — automatically.
3. **Fetch** — pure HTTP with a Chrome-131 TLS fingerprint and residential proxy; catalog and search paginate until empty or `maxItems`.
4. **Normalize** — every source maps to one identical product row, with `discountPct` computed from selling vs. retail.
5. **(Optional) enrich reviews** — when enabled, the product page's JSON-LD rating/reviews are merged in.
6. **Push** — one row per product to the dataset (JSON or CSV), deduped by product URL.

#### ⚙️ Input parameters

| Field | Type | Description |
|---|---|---|
| `startUrls` | array | Store domains, category URLs, product URLs, or brand keys — mixed freely. |
| `searchTerms` | array | Optional keywords, searched against every store in `startUrls`. |
| `enrichReviews` | boolean | Fetch rating/reviews from product-page JSON-LD (best-effort, off by default). |
| `country` | string | Region hint for region-aware stores (default `US`). |
| `maxItems` | integer | Hard cap on products collected (and billed). Default `1000`. |
| `maxConcurrency` | integer | Stores/jobs processed in parallel. Default `10`. |
| `proxy` | object | Proxy configuration. Residential recommended (default). |

#### 📊 Output overview

The dataset is **one row per product**, with the same schema regardless of which store or discovery mode produced it. Pricing is normalized (`sellingPrice` / `retailPrice` / `discountPct`), variants and images are nested arrays, and provenance (`platform`, `discoveryMode`, `sourceUrl`) tells you exactly how each product was found. Export as JSON or CSV.

#### 📦 Output sample

A real row (Allbirds, on sale — discount auto-calculated):

```json
{
  "type": "product",
  "brand": "Allbirds",
  "storeDomain": "allbirds.com",
  "platform": "shopify",
  "productId": "7134115037264",
  "productTitle": "Women's Tree Dasher Relay - Natural Black",
  "productUrl": "https://www.allbirds.com/products/womens-tree-dasher-relay-natural-black-twilight-teal",
  "productType": "Shoes",
  "sellingPrice": 67,
  "retailPrice": 135,
  "discountPct": 50.4,
  "currency": "USD",
  "inStock": false,
  "primaryImage": "https://cdn.shopify.com/s/files/1/1104/4168/files/A11468...png",
  "images": ["https://cdn.shopify.com/...LEFT.png", "https://cdn.shopify.com/...BACK.png"],
  "optionNames": ["Size"],
  "variants": [
    { "variantId": "41016739233872", "sku": "A11465W050", "title": "5",
      "options": { "Size": "5" }, "sellingPrice": 67, "retailPrice": 135, "available": false }
  ],
  "averageRating": null,
  "reviewCount": null,
  "recentReviews": [],
  "discoveryMode": "catalog",
  "sourceUrl": "allbirds.com",
  "scrapedAt": "2026-06-23T20:34:40.900Z"
}
````

#### 🗂 Key output fields

| Group | Fields |
|---|---|
| **Identity** | `brand`, `productTitle`, `productId`, `handle`, `productUrl`, `storeDomain` |
| **Pricing** | `sellingPrice`, `retailPrice`, `discountPct` (auto), `currency` |
| **Availability** | `inStock` |
| **Media** | `primaryImage`, `images[]` |
| **Variants** | `optionNames[]`, `variants[]` (variantId, sku, options, price, retailPrice, available, image) |
| **Reviews** | `averageRating`, `reviewCount`, `recentReviews[]` (when available) |
| **Categorisation** | `productType`, `tags[]` |
| **Provenance** | `platform`, `discoveryMode`, `sourceUrl`, `scrapedAt` |

#### ❓ FAQ

**Which stores work?** Any Shopify storefront (the majority of DTC brands), Quince, and any store that exposes Product JSON-LD on its product pages. Pass a domain, category URL, product URL, or a known brand key.

**How do I scrape a specific brand?** Add its domain (e.g. `everlane.com`) for the whole catalog, a category URL for one section, or a product URL for a single item. Many popular brands also work by short key (`quince`, `allbirds`, …).

**Does it capture discounts?** Yes — `sellingPrice`, `retailPrice` and a pre-computed `discountPct` are on every row. No formula needed.

**Can I get reviews and ratings?** Turn on `enrichReviews`. Ratings/reviews are read from the product page's structured data (JSON-LD) where the store exposes it. Many DTC stores load reviews via a JavaScript widget (Yotpo, Okendo) that isn't in the HTML — for those, review fields are `null`.

**Do I need a proxy?** Shopify catalogs usually work without one. Residential proxy (the default) is recommended for stores with bot protection such as Quince. No paid CAPTCHA/Cloudflare unlocker is required.

#### 💬 Support

Found a store that doesn't parse, or want a brand added to the quick-key registry? Open an issue on the actor's Issues tab with the URL you tried — most fixes are quick.

#### 🛠 Additional services

Need a custom field, a scheduled price-monitoring pipeline, or a brand not yet covered? Reach out for a tailored build.

#### 🔎 Explore more scrapers

This actor pairs well with marketplace and review scrapers for fuller competitive coverage across e-commerce.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Quince, Shopify, or any of the brands or stores it can access. All trademarks are the property of their respective owners.

The scraper accesses only publicly available product pages — no authenticated endpoints, accounts, or checkout data. Users are responsible for ensuring their use complies with each store's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.

***

### SEO Keywords

dtc product scraper, shopify product scraper, shopify products.json scraper, quince scraper, quince product scraper, ecommerce product scraper, product price scraper, discount tracker, competitor price monitoring, apify shopify scraper, dtc brand data, product variants scraper, product reviews scraper, fashion product scraper, everlane scraper, allbirds scraper, skims scraper, gymshark scraper, retail pricing intelligence, product catalog export

# Actor input Schema

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

Any of: a store domain or homepage (scrapes the whole catalog, e.g. `everlane.com`), a category/collection URL (e.g. `https://www.allbirds.com/collections/mens`), a direct product URL, or a known brand key (e.g. `quince`, `everlane`, `allbirds`, `skims`, `mejuri`, `gymshark`).

## `searchTerms` (type: `array`):

Optional. Each term is searched against every store listed above. Example: `linen shirt`, `cashmere sweater`.

## `enrichReviews` (type: `boolean`):

Adds rating, review count and recent reviews when the store exposes them (Yotpo, JSON-LD). Adds extra requests, so it's off by default.

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

Region hint for region-aware stores. Defaults to US.

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

Hard cap on the number of products collected across the whole run. Clients are billed per result, so this also caps cost.

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

Maximum number of stores/jobs processed in parallel.

## `proxy` (type: `object`):

Proxy used to fetch pages. Residential is recommended for stores with bot protection (Quince, etc.).

## Actor input object example

```json
{
  "startUrls": [
    "everlane.com",
    "https://www.allbirds.com/collections/mens"
  ],
  "searchTerms": [],
  "enrichReviews": false,
  "country": "US",
  "maxItems": 1000,
  "maxConcurrency": 10,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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": [
        "everlane.com",
        "https://www.allbirds.com/collections/mens"
    ],
    "searchTerms": [],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/dtc-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": [
        "everlane.com",
        "https://www.allbirds.com/collections/mens",
    ],
    "searchTerms": [],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/dtc-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": [
    "everlane.com",
    "https://www.allbirds.com/collections/mens"
  ],
  "searchTerms": [],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/dtc-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Shopify & DTC & Quince Product, Prices, Discounts & Reviews",
        "description": "Scrape any DTC or Shopify store — selling price, retail price, auto-calculated discount %, variants, images, ratings & reviews. Covers Quince, Everlane, Allbirds, SKIMS + thousands more by domain, category, keyword or product URL. JSON or CSV, pay per result",
        "version": "0.0",
        "x-build-id": "o8Q6BrQa4Y9U72E2a"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~dtc-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-dtc-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/memo23~dtc-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-dtc-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/memo23~dtc-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-dtc-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": "Stores, categories or product URLs",
                        "type": "array",
                        "description": "Any of: a store domain or homepage (scrapes the whole catalog, e.g. `everlane.com`), a category/collection URL (e.g. `https://www.allbirds.com/collections/mens`), a direct product URL, or a known brand key (e.g. `quince`, `everlane`, `allbirds`, `skims`, `mejuri`, `gymshark`).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchTerms": {
                        "title": "Keyword search terms",
                        "type": "array",
                        "description": "Optional. Each term is searched against every store listed above. Example: `linen shirt`, `cashmere sweater`.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "enrichReviews": {
                        "title": "Fetch product reviews (best-effort)",
                        "type": "boolean",
                        "description": "Adds rating, review count and recent reviews when the store exposes them (Yotpo, JSON-LD). Adds extra requests, so it's off by default.",
                        "default": false
                    },
                    "country": {
                        "title": "Country (ISO code)",
                        "type": "string",
                        "description": "Region hint for region-aware stores. Defaults to US.",
                        "default": "US"
                    },
                    "maxItems": {
                        "title": "Maximum products to scrape",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on the number of products collected across the whole run. Clients are billed per result, so this also caps cost.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Maximum number of stores/jobs processed in parallel.",
                        "default": 10
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used to fetch pages. Residential is recommended for stores with bot protection (Quince, etc.).",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
