# BigBadToyStore Scraper (`crawlerbros/bigbadtoystore-scraper`) Actor

Scrape BigBadToyStore.com - search collectibles by keyword, browse by department or toy line/brand, or look up product URLs directly. Get price, brand, manufacturer, pre-order status, release date, SKU, packaging variation, images, and product URLs.

- **URL**: https://apify.com/crawlerbros/bigbadtoystore-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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/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

## BigBadToyStore Scraper

Scrape [BigBadToyStore.com](https://www.bigbadtoystore.com) — a specialty retailer of action figures, statues, model kits, trading cards, and pop-culture collectibles. Search by keyword, browse a department (category) or a curated toy line/brand, or look up specific product URLs directly. Get price, brand/line, manufacturer, pre-order status, estimated release date, SKU, packaging variation, images, and product URLs. No auth, no cookies, no proxy configuration required from you.

### What this actor does

- **Four modes:** `search` (keyword), `byDepartment` (category browse), `byBrand` (toy line/franchise browse), `byUrl` (direct lookup of specific product URLs)
- **Cross-cutting filters:** department, brand, manufacturer/company, sort order, availability status, price range, pre-order-only — combine any of them regardless of mode
- **Pre-order aware:** flags pre-order items, extracts the "estimated to arrive" release window BigBadToyStore shows for them, and can filter down to pre-orders only
- **Empty fields are omitted** — every record only contains fields BigBadToyStore actually populated for that product

### Output per product

- `itemNumber` — BigBadToyStore's internal product ID
- `sku` — the specific packaging/variation SKU used for ordering
- `packagingVariation` — human-readable label for that SKU's packaging/condition variant, when BigBadToyStore shows one (e.g. `"BBTS Mint Packaging"`)
- `title`, `description`
- `brand` — the toy line/franchise (e.g. "Transformers", "Marvel")
- `brandId` — numeric facet ID for `brand` (matches the `brandId` input enum)
- `company` — manufacturer (e.g. "Hasbro", "Takara Tomy", "Hot Toys")
- `companyId` — numeric facet ID for `company` (matches the `companyId` input enum)
- `character` — primary character, when BigBadToyStore tags one
- `series` — array of series/sub-line tags (e.g. "Studio Series", "Masterpiece")
- `price`, `priceCurrency`
- `availability` — `In Stock`, `Pre-Order`, `Sold Out`, or `Waitlist`
- `isPreOrder` — boolean
- `estimatedReleaseDate` — e.g. `"May 2027"` (pre-order items only, when shown)
- `itemCondition` — e.g. `New`
- `imageUrl`
- `productUrl`
- `recordType: "product"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `byDepartment` / `byBrand` / `byUrl` |
| `searchQuery` | string | `Transformers` | Keyword query (mode=search) |
| `departmentId` | select | – | Department (required for byDepartment; optional filter elsewhere) |
| `brandId` | select | – | Curated toy line/brand (required for byBrand unless `customBrandName` set; optional filter elsewhere) |
| `customBrandName` | string | – | Free-text brand/line name, used as a keyword-search fallback for byBrand when not in the curated list |
| `companyId` | select | – | Manufacturer/publisher filter, any mode |
| `productUrls` | array | – | Specific BigBadToyStore product URLs to look up directly (required for byUrl) |
| `sortOrder` | select | `Relevance` | `Relevance` / `New` / `PriceHighToLow` / `PriceLowToHigh` / `Discount` |
| `availabilityStatuses` | array | `["InStock","PreOrder"]` | Which stock states to include |
| `minPrice` / `maxPrice` | number | – | USD price range |
| `preorderOnly` | boolean | `false` | Keep only Pre-Order items |
| `maxItems` | int | `15` | Hard cap (1–2000). Kept modest by default — see "How fast is this?" below |

#### Example: keyword search

```json
{
  "mode": "search",
  "searchQuery": "Marvel Legends",
  "maxItems": 30
}
````

#### Example: browse a department, in-stock only, cheapest first

```json
{
  "mode": "byDepartment",
  "departmentId": "45792",
  "sortOrder": "PriceLowToHigh",
  "availabilityStatuses": ["InStock"],
  "maxItems": 50
}
```

#### Example: browse a toy line, scoped to one manufacturer

```json
{
  "mode": "byBrand",
  "brandId": "1971",
  "companyId": "28",
  "maxItems": 40
}
```

#### Example: custom brand not in the curated list

```json
{
  "mode": "byBrand",
  "customBrandName": "Diaclone",
  "maxItems": 20
}
```

#### Example: pre-order items only for a toy line

```json
{
  "mode": "byBrand",
  "brandId": "1971",
  "preorderOnly": true,
  "maxItems": 30
}
```

#### Example: look up specific product URLs directly

```json
{
  "mode": "byUrl",
  "productUrls": [
    "https://www.bigbadtoystore.com/product/transformers-kuro-kara-kuri-skywarp-action-figure-192744"
  ]
}
```

### Use cases

- **Price monitoring** — use `mode=byUrl` to track price and stock status for specific SKUs you already know
- **Pre-order tracking** — combine `preorderOnly` with `isPreOrder` + `estimatedReleaseDate` to build release alerts
- **Collector tooling** — build a personal catalog/wishlist scraper for a franchise
- **Market research** — compare toy-line coverage and price bands across departments, using the `byBrand`/`byDepartment` browse modes
- **Resale/arbitrage research** — pull SKU-level and packaging-variation-level pricing across multiple lines

### Limitations

- **Speed.** BigBadToyStore fronts its site with Cloudflare, which challenges non-browser traffic from some cloud IPs. This actor auto-detects the challenge and falls back to a real anti-detect browser (no residential proxy) to get past it, which costs roughly 10-20 seconds per product on runs where the fallback engages. Budget accordingly for large `maxItems` values.
- **Curated brand/line list.** `brandId` covers the ~35 most popular toy lines/franchises (by product count, across departments). BigBadToyStore's brand facet has many more entries with internal numeric IDs we don't enumerate; use `customBrandName` (keyword-search fallback) or `mode=search` for anything not listed.
- **Sold Out / Waitlist availability.** In the current catalog these two statuses are held almost entirely by BigBadWorkshop crowdfunding "project" pages (`/project/...`), a different content type without standard product/price/SKU data. This actor intentionally scopes to retail `/product/...` pages, so filtering to `SoldOut`/`Waitlist` alone can return 0 results.
- **US market / USD only.** BigBadToyStore is a single-market (US, USD) retailer with no country/locale variants, so no market/language input is exposed.
- **No review or rating data.** BigBadToyStore product pages don't expose structured customer reviews/ratings, so this actor doesn't emit them.

### FAQ

**Do I need a proxy or login?** No. The actor works on the Apify free plan with zero configuration beyond the input fields above. It automatically handles BigBadToyStore's anti-bot protection internally (see "How fast is this?" below) — no residential proxy or paid add-on is used or required.

**How fast is this?** BigBadToyStore serves normal browsers instantly, but blocks non-browser traffic (including some cloud datacenter IPs) behind a Cloudflare challenge. This actor detects that automatically and falls back to a real anti-detect browser to get past it — which is slower than a plain HTTP fetch. Expect roughly 10-20 seconds per product on runs where the fallback engages, so `maxItems` is kept modest by default (15) to keep a typical run under ~3-5 minutes. Raise `maxItems` for larger pulls; just budget more run time (e.g. ~100 products can take 15-25 minutes).

**Why isn't every field always present?** Fields are only included when BigBadToyStore actually shows them for that product — e.g. `estimatedReleaseDate` only appears on pre-order items, and `series`/`character` only appear when the product page tags them.

**What if the brand/line I want isn't in the `brandId` dropdown?** BigBadToyStore's brand filter is an internal numeric ID; the dropdown covers the ~35 most popular lines/franchises across the catalog. For anything else, use `customBrandName` (falls back to a keyword search scoped to that term) or use `mode=search` directly.

**What does `packagingVariation` mean?** BigBadToyStore often sells the same product under multiple packaging/condition variants (e.g. `"BBTS Mint Packaging"`) as separate SKUs. `packagingVariation` is the human-readable label for the specific variant that `sku`/`productUrl` point to, when BigBadToyStore shows one — useful for distinguishing which listing a given price/SKU belongs to.

**How does `mode=byUrl` work?** Give it one or more BigBadToyStore `/product/...` URLs in `productUrls` and it fetches exactly those pages — no search or department/brand filters apply. Handy for monitoring specific SKUs you've already found (e.g. via a previous `search`/`byBrand` run) without re-searching.

**How does `preorderOnly` interact with `availabilityStatuses`?** `availabilityStatuses` controls which stock states are fetched from BigBadToyStore's search results in the first place; `preorderOnly` is an extra post-fetch filter that additionally drops anything that isn't Pre-Order. For the most efficient pre-order-only run, set `availabilityStatuses: ["PreOrder"]` and `preorderOnly: true` together.

**Why do `Sold Out` / `Waitlist` availability filters sometimes return nothing?** In the current catalog, those two statuses are mostly held by BigBadWorkshop crowdfunding "project" pages (a different content type this actor intentionally excludes, since they don't carry standard product/price/SKU data). Regular retail products are almost always `In Stock` or `Pre-Order`.

**How is `availability` determined?** Directly from BigBadToyStore's own structured product data (schema.org `Offer.availability`), not scraped visually — so it reflects the same state shown in the buy box.

**Can I combine `departmentId`, `brandId`, and `companyId` at once?** Yes — all three are independent narrowing filters usable together in any mode (department/brand only become *required* in their respective `byDepartment`/`byBrand` modes).

**How fresh is the data?** Real-time — every run reads BigBadToyStore's live search and product pages directly.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

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

Free-text keyword search, e.g. a toy line, character, or product name.

## `departmentId` (type: `string`):

Required for mode=byDepartment. Also usable as an extra narrowing filter on `search` / `byBrand`.

## `brandId` (type: `string`):

Curated list of popular toy lines/brands. Required for mode=byBrand unless `customBrandName` is set. Also usable as an extra narrowing filter on `search` / `byDepartment`.

## `customBrandName` (type: `string`):

Free-text toy line/brand name not in the curated `brandId` list, e.g. `Diaclone` or `Robotech`. Falls back to a keyword search scoped to this term (BigBadToyStore's brand filter only accepts internal numeric IDs, which the curated list covers for the ~35 most popular lines).

## `companyId` (type: `string`):

Narrow results to a specific manufacturer/publisher, e.g. Hasbro, Hot Toys, Good Smile Company.

## `productUrls` (type: `array`):

Required for mode=byUrl. One or more BigBadToyStore product URLs, e.g. `https://www.bigbadtoystore.com/product/transformers-kuro-kara-kuri-skywarp-action-figure-192744`. Useful for price/stock monitoring on specific SKUs you already know.

## `sortOrder` (type: `string`):

Result ordering, matches the site's own sort dropdown.

## `availabilityStatuses` (type: `array`):

Which stock statuses to include. Sold Out / Waitlist mostly surface BigBadWorkshop crowdfunding project pages rather than standard retail products in the current catalog.

## `minPrice` (type: `number`):

Drop products cheaper than this.

## `maxPrice` (type: `number`):

Drop products more expensive than this.

## `preorderOnly` (type: `boolean`):

Keep only products currently listed as Pre-Order (drops In Stock / Sold Out / Waitlist items regardless of `availabilityStatuses`).

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

Hard cap on emitted product records. Kept modest by default — each product may require a slower anti-bot fallback fetch (see README).

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "Transformers",
  "departmentId": "",
  "brandId": "",
  "companyId": "",
  "productUrls": [],
  "sortOrder": "Relevance",
  "availabilityStatuses": [
    "InStock",
    "PreOrder"
  ],
  "preorderOnly": false,
  "maxItems": 8
}
```

# Actor output Schema

## `products` (type: `string`):

Dataset containing all scraped BigBadToyStore products.

# 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 = {
    "mode": "search",
    "searchQuery": "Transformers",
    "departmentId": "",
    "brandId": "",
    "companyId": "",
    "productUrls": [],
    "sortOrder": "Relevance",
    "availabilityStatuses": [
        "InStock",
        "PreOrder"
    ],
    "preorderOnly": false,
    "maxItems": 8
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/bigbadtoystore-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 = {
    "mode": "search",
    "searchQuery": "Transformers",
    "departmentId": "",
    "brandId": "",
    "companyId": "",
    "productUrls": [],
    "sortOrder": "Relevance",
    "availabilityStatuses": [
        "InStock",
        "PreOrder",
    ],
    "preorderOnly": False,
    "maxItems": 8,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/bigbadtoystore-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 '{
  "mode": "search",
  "searchQuery": "Transformers",
  "departmentId": "",
  "brandId": "",
  "companyId": "",
  "productUrls": [],
  "sortOrder": "Relevance",
  "availabilityStatuses": [
    "InStock",
    "PreOrder"
  ],
  "preorderOnly": false,
  "maxItems": 8
}' |
apify call crawlerbros/bigbadtoystore-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BigBadToyStore Scraper",
        "description": "Scrape BigBadToyStore.com - search collectibles by keyword, browse by department or toy line/brand, or look up product URLs directly. Get price, brand, manufacturer, pre-order status, release date, SKU, packaging variation, images, and product URLs.",
        "version": "1.0",
        "x-build-id": "xf5orcvgN8yelkkaX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~bigbadtoystore-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-bigbadtoystore-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/crawlerbros~bigbadtoystore-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-bigbadtoystore-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/crawlerbros~bigbadtoystore-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-bigbadtoystore-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byDepartment",
                            "byBrand",
                            "byUrl"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "Search query (mode=search)",
                        "type": "string",
                        "description": "Free-text keyword search, e.g. a toy line, character, or product name.",
                        "default": "Transformers"
                    },
                    "departmentId": {
                        "title": "Department (mode=byDepartment; optional filter otherwise)",
                        "enum": [
                            "",
                            "43623",
                            "7391",
                            "7399",
                            "45790",
                            "45792",
                            "7392",
                            "45794",
                            "7388",
                            "7394",
                            "45793",
                            "44078",
                            "126",
                            "7395",
                            "7390",
                            "7398"
                        ],
                        "type": "string",
                        "description": "Required for mode=byDepartment. Also usable as an extra narrowing filter on `search` / `byBrand`.",
                        "default": ""
                    },
                    "brandId": {
                        "title": "Toy line / brand (mode=byBrand; optional filter otherwise)",
                        "enum": [
                            "",
                            "2085",
                            "2149",
                            "2308",
                            "2891",
                            "11481",
                            "872",
                            "4863",
                            "1971",
                            "1786",
                            "26112",
                            "2431",
                            "614",
                            "1103",
                            "16675",
                            "2603",
                            "1170",
                            "856",
                            "2363",
                            "3234",
                            "10043",
                            "1385",
                            "924",
                            "1847",
                            "3218",
                            "46976",
                            "47002",
                            "2525",
                            "3215",
                            "1670",
                            "16136",
                            "2782",
                            "27077",
                            "4829",
                            "15232",
                            "1833",
                            "1366"
                        ],
                        "type": "string",
                        "description": "Curated list of popular toy lines/brands. Required for mode=byBrand unless `customBrandName` is set. Also usable as an extra narrowing filter on `search` / `byDepartment`.",
                        "default": ""
                    },
                    "customBrandName": {
                        "title": "Custom brand / line name (mode=byBrand fallback)",
                        "type": "string",
                        "description": "Free-text toy line/brand name not in the curated `brandId` list, e.g. `Diaclone` or `Robotech`. Falls back to a keyword search scoped to this term (BigBadToyStore's brand filter only accepts internal numeric IDs, which the curated list covers for the ~35 most popular lines)."
                    },
                    "companyId": {
                        "title": "Manufacturer / company (optional filter, all modes)",
                        "enum": [
                            "",
                            "1475",
                            "62",
                            "165",
                            "5",
                            "1",
                            "10",
                            "279",
                            "126",
                            "2",
                            "51",
                            "904",
                            "11",
                            "388",
                            "124",
                            "1363",
                            "1143",
                            "421",
                            "28",
                            "583",
                            "981",
                            "609",
                            "3",
                            "232",
                            "332",
                            "299",
                            "23",
                            "424",
                            "14",
                            "13",
                            "261",
                            "256",
                            "365",
                            "55",
                            "25",
                            "826",
                            "139",
                            "777"
                        ],
                        "type": "string",
                        "description": "Narrow results to a specific manufacturer/publisher, e.g. Hasbro, Hot Toys, Good Smile Company.",
                        "default": ""
                    },
                    "productUrls": {
                        "title": "Product URLs (mode=byUrl)",
                        "type": "array",
                        "description": "Required for mode=byUrl. One or more BigBadToyStore product URLs, e.g. `https://www.bigbadtoystore.com/product/transformers-kuro-kara-kuri-skywarp-action-figure-192744`. Useful for price/stock monitoring on specific SKUs you already know.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortOrder": {
                        "title": "Sort order",
                        "enum": [
                            "Relevance",
                            "New",
                            "PriceHighToLow",
                            "PriceLowToHigh",
                            "Discount"
                        ],
                        "type": "string",
                        "description": "Result ordering, matches the site's own sort dropdown.",
                        "default": "Relevance"
                    },
                    "availabilityStatuses": {
                        "title": "Availability statuses",
                        "type": "array",
                        "description": "Which stock statuses to include. Sold Out / Waitlist mostly surface BigBadWorkshop crowdfunding project pages rather than standard retail products in the current catalog.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "InStock",
                                "PreOrder",
                                "SoldOut",
                                "Waitlist"
                            ],
                            "enumTitles": [
                                "In Stock",
                                "Pre-Order",
                                "Sold Out",
                                "Waitlist"
                            ]
                        },
                        "default": [
                            "InStock",
                            "PreOrder"
                        ]
                    },
                    "minPrice": {
                        "title": "Min price (USD)",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "number",
                        "description": "Drop products cheaper than this."
                    },
                    "maxPrice": {
                        "title": "Max price (USD)",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "number",
                        "description": "Drop products more expensive than this."
                    },
                    "preorderOnly": {
                        "title": "Pre-order items only",
                        "type": "boolean",
                        "description": "Keep only products currently listed as Pre-Order (drops In Stock / Sold Out / Waitlist items regardless of `availabilityStatuses`).",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Hard cap on emitted product records. Kept modest by default — each product may require a slower anti-bot fallback fetch (see README).",
                        "default": 15
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
