# Bunnings Product & Stock Scraper (`mof1re/bunnings-scraper`) Actor

Fast, HTTP-only Bunnings (bunnings.com.au) scraper. Get products by store, category, or search — with prices, stock status, and (for product-mode results) GTIN/EAN barcodes. No browser, dedicated proxies, pay only for what you scrape.

- **URL**: https://apify.com/mof1re/bunnings-scraper.md
- **Developed by:** [Vladimir Efimenco](https://apify.com/mof1re) (community)
- **Categories:** E-commerce, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 33.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 per 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.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

## Bunnings Scraper — Store, Category & Product Data from bunnings.com.au

Fast, pure-HTTP scraper for [Bunnings Warehouse](https://www.bunnings.com.au) (Australia) — no browser, no Cloudflare-challenge waiting, no headless overhead. Built directly on Bunnings' own mobile API, so it's fast and lightweight compared to browser-based scrapers.

Get **store-specific pricing and stock**, **category or search listings**, or **full product details including GTIN/EAN barcodes** — all from a single actor with three modes.

### What makes this different

- **Pure HTTP, not browser-based.** No Playwright/Puppeteer instance to spin up per request. This means faster runs and lower cost per result compared to scrapers that render pages in a real browser.
- **Dedicated proxy pool.** Runs on our own maintained proxies, not shared/rotating datacenter pools that get flagged more easily.
- **Store-accurate data.** Bunnings prices and stock status differ by physical store. Every request is tied to a specific store location (dropdown of all AU stores), so the numbers you get match what a customer would actually see at checkout for that store — not a generic national average.
- **GTIN / EAN / barcode data.** Included on ~40% of products when scraped in **product mode** (by product ID or URL). Not available in category/search mode.

### Modes

#### 1. Search
Scrape products matching a search query, for a given store.

#### 2. Category
Scrape all products from a Bunnings category page, for a given store.

#### 3. Product
Scrape full product detail pages — description, specifications, images, dimensions, warranty info, and (where available) GTIN/EAN — from a list of product IDs or URLs.

> **Tip:** If you already ran Search or Category mode and want GTIN/barcode data, take the `product_id` or `product_url` values from those results and feed them into Product mode as a second run.

### Input

| Field | Description |
|---|---|
| `mode` | `search`, `category`, or `product` |
| `store` | Store/location dropdown — all AU Bunnings stores. Prices and stock are store-specific. Defaults to **Melbourne VIC 3000** if not selected. |
| `query` | Search term (search mode) |
| `categoryUrl` | Bunnings category page URL (category mode) |
| `productIdsOrUrls` | List of product IDs or URLs (product mode) |
| `maxPages` | Max pages to fetch (search/category mode) |
| `sortOrder` | Result sort order |
| `priceMin` / `priceMax` | Optional price filter |

#### Accepted formats

**Category mode — `categoryUrl`:**
- Full category URL, e.g. `https://www.bunnings.com.au/products/garden/garden-power-tools/lawn-mowers`

**Product mode — `productIdsOrUrls`:**
- Full product URL, e.g. `https://www.bunnings.com.au/ozito-pxc-18v-300mm-brushless-lawn-mower-4-0ah-kit-pxclmk-1418_p0207447`
- Short product URL with just the `_p<id>` slug, e.g. `https://www.bunnings.com.au/_p0207447`
- Raw product ID only, e.g. `0207447`

### Output examples

**Search / Category mode** — one row per product in the listing:

```json
 {
    "url": "https://www.bunnings.com.au/_p0335319",
    "product_image": "https://media.bunnings.com.au/api/public/content/6230e5615d104a739d8023935704d6ee?v=b045a72d&t=gen462x462",
    "product_id": "0335319",
    "name": "HiKOKI 2000W 32kg 70J 30mm Corded HEX Demolition Hammer",
    "brand": "HiKOKI Power Tools Pty Ltd",
    "price": 2999,
    "currency": "AUD",
    "rating": 5,
    "category": "Tools | Power Tools | Heavy Duty & Construction Tools",
    "reviews": 2,
    "isInStore": false,
    "isSpecialOrder": true,
    "isNewArrival": false,
    "description": "The HiKOKI 30mm Hex Demolition Hammer (H90SG) makes improvements on previous models with greater power, increased performance, lower vibration and a universal tool retainer.\n\nThe input power of 2000W provides an improved hammering mechanism, which more efficiently transfers energy to the bit, improving demolition performance. The vibration absorbing main handle produces low full-load vibration, resulting in less user fatigue and greater productivity. This hammer employs a sealed grease system and auto-stop brushes for minimal maintenance and durability.",
    "specifications": [
      "Model Name: 32kg 28.5mm Hex Demolition Hammer",
      "Model Number: H90SG(H1Z)",
      "Weight: 36.3kg"
    ]
  },
````

**Product mode** — full detail per product, including specs, dimensions, images, and (when available) GTIN:

```json
{
    "url": "https://www.bunnings.com.au/_p0357650",
    "product_id": "0357650",
    "name": "Uniden Igo Cam 90r 4k Smart Dash Cam",
    "brand": "Uniden",
    "category": "Tools | Automotive | Automotive Electronics | Dash Cams",
    "warrantyReturns": "12 Months",
    "ean": "9322402015828",
    "price": 349.95,
    "currency": "AUD",
    "stock_info": {
      "inStorePickUpAvailable": false,
      "isAvailableInStore": false,
      "isDeliveryAvailable": true,
      "stockStatus": "Unknown"
    },
    "features": "Plug & play – easy to set up\nLoop recording mode\n2 sticker mounts – rotating design for optimal visibility & stability\nWifi enabled\nSpeed/red light camera warnings",
    "description": "4k (2160p) camera resolution magnetic slide bracket voice control 3.16” wide angle lcd colour screen large speedo display speed / red light camera warnings parking mode* wide view 135° (front camera) wifi enabled supercapacitor small & compact design plug & play – easy to set up 3 axis g-sensor event recording mode loop recording mode auto power off date and time wide dynamic range images (wdr) cigarette charger included 2 sticker mounts – rotating design for optimal visibility & stability records footage onto micro sd card#. 128gb is the max capacity – minimum class u3 required (not included)",
    "specifications": [
      "Model Number: CAM90R",
      "Weight: 0.16 kgkg",
      "Warranty info: 12 Months"
    ],
    "images": [
      "https://media.bunnings.com.au/api/public/content/95c31e7757ba48678de616cc26ccfee1?v=94b4ace9&t=gen800x800",
      "https://media.bunnings.com.au/api/public/content/fecb28b8bdf44ec7968a209795ab6f79?v=10e51323&t=gen800x800",
      "https://media.bunnings.com.au/api/public/content/48098eb3473d4ee1a358da7b8756f645?v=76cbfbff&t=gen800x800",
      "https://media.bunnings.com.au/api/public/content/66d12336737f41d0872825e53e54e15f?v=277426ca&t=gen800x800",
      "https://media.bunnings.com.au/api/public/content/295206ac7dde4b1ea0f9d66a369dd1c5?v=957a71e8&t=gen800x800",
      "https://media.bunnings.com.au/api/public/content/63f3796e032640c9a304cc4bc03e25a9?v=1c8bf792&t=gen800x800",
      "https://media.bunnings.com.au/api/public/content/9e19ca0bc10f4eab878426c75b90d8ac?v=7b3c715d&t=gen800x800",
      "https://media.bunnings.com.au/api/public/content/4fcefbb5efa249fb8018c832f121c3e3?v=06ff9e4b&t=gen800x800"
    ],
    "productDimensions": null,
    "packagingDimensions": null,
    "installationInformation": null,
    "rating": 1,
    "reviews": 1,
    "totalWeight": "0.16 kgkg",
    "guideDocuments": []
  }
```

### Pricing — Pay Per Event

You only pay for what's actually scraped:

- **$1 per 1,000 results** — search / category mode
- **$2 per 1,000 results** — product mode (full detail, incl. GTIN where available)

No subscription, no compute-unit math. A category run returning 500 products costs $0.50; a product-detail run on 1,000 IDs costs $2.

### Limits

- A single search or category request returns a **maximum of ~1,800 results** (this is a limit of Bunnings' own API, not an artificial cap). If your category has more products than that, narrow the result set using `sortOrder` and `priceMin`/`priceMax` filters, or split the query.

### FAQ

**Why don't I see GTIN/EAN in search or category results?**
GTIN/EAN data is only included in Product mode output. If you need it, run Search or Category mode first, then feed the resulting `product_id`s into Product mode.

**What if I don't select a store?**
The actor defaults to Melbourne VIC 3000. Prices and stock status are store-specific, so for accurate local data always select the store closest to your use case.

**Is this affected by Bunnings blocking/Cloudflare challenges?**
This actor talks to Bunnings' mobile API directly over HTTP with dedicated proxies, rather than rendering pages in a browser — so it avoids the overhead (and common failure point) of browser-based scrapers hitting challenge pages.

Found a bug or need a custom field? Open an issue on the Issues tab.

# Actor input Schema

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

Choose what this run should do. Each mode charges a different event - see Pricing tab.

## `store` (type: `string`):

Bunnings store used for pricing and stock data across all modes. Prices and availability are store-specific. Defaults to Melbourne VIC 3000 if not selected. Format: ZIP - StoreName, Address, STATE.

## `query` (type: `string`):

Used when mode = search. E.g. 'cordless drill'.

## `categoryUrl` (type: `string`):

Used when mode = category. Paste a full bunnings.com.au category URL (e.g. https://www.bunnings.com.au/products/outdoor-living/camping-recreation/camping-power-cables) or just the last slug (e.g. camping-power-cables). Resolved automatically to the internal category key.

## `maxPages` (type: `integer`):

Maximum number of pages to fetch (18 products/page, fixed by Bunnings internal API). Bunnings caps browsing at 100 pages (1800 products) max per search/category. If your category or search has more than 1800 results, you won't get all of them this way - narrow it down using the sort order and price filters below, or split it into multiple runs. Stops earlier if fewer results exist. Charged per page actually fetched.

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

Ignored for product mode.

## `priceMin` (type: `integer`):

Optional. Filter results to products priced at or above this value.

## `priceMax` (type: `integer`):

Optional. Filter results to products priced at or below this value. Leave empty for no upper limit.

## `productIdsOrUrls` (type: `array`):

Used when mode = product. Accepts product page URLs (the \_p<id> slug is extracted automatically) or raw product IDs.

## Actor input object example

```json
{
  "mode": "search",
  "store": "6425",
  "query": "cordless drill",
  "categoryUrl": "https://www.bunnings.com.au/products/outdoor-living/camping-recreation/camping-power-cables",
  "maxPages": 10,
  "sortOrder": "BoostOrder"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("mof1re/bunnings-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("mof1re/bunnings-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 '{}' |
apify call mof1re/bunnings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bunnings Product & Stock Scraper",
        "description": "Fast, HTTP-only Bunnings (bunnings.com.au) scraper. Get products by store, category, or search — with prices, stock status, and (for product-mode results) GTIN/EAN barcodes. No browser, dedicated proxies, pay only for what you scrape.",
        "version": "0.1",
        "x-build-id": "nRCqei98kBGGSnyUI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/mof1re~bunnings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-mof1re-bunnings-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/mof1re~bunnings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-mof1re-bunnings-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/mof1re~bunnings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-mof1re-bunnings-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",
                            "category",
                            "product"
                        ],
                        "type": "string",
                        "description": "Choose what this run should do. Each mode charges a different event - see Pricing tab.",
                        "default": "search"
                    },
                    "store": {
                        "title": "Store / location",
                        "enum": [
                            "4058",
                            "4040",
                            "4056",
                            "4059",
                            "4025",
                            "7301",
                            "7316",
                            "7071",
                            "7175",
                            "7334",
                            "7373",
                            "7174",
                            "7173",
                            "7313",
                            "7132",
                            "7374",
                            "7378",
                            "7304",
                            "7159",
                            "7216",
                            "7168",
                            "7333",
                            "7384",
                            "7082",
                            "7152",
                            "7346",
                            "7364",
                            "7376",
                            "7369",
                            "7342",
                            "7179",
                            "7222",
                            "7213",
                            "7351",
                            "7086",
                            "7219",
                            "7319",
                            "7315",
                            "7148",
                            "7321",
                            "7118",
                            "7344",
                            "7380",
                            "7302",
                            "7363",
                            "7122",
                            "7335",
                            "7088",
                            "7332",
                            "7385",
                            "7323",
                            "7345",
                            "7312",
                            "7303",
                            "7354",
                            "7337",
                            "7092",
                            "7395",
                            "7309",
                            "7200",
                            "7348",
                            "7343",
                            "7094",
                            "8153",
                            "8170",
                            "8129",
                            "8139",
                            "7217",
                            "7220",
                            "7377",
                            "7349",
                            "7365",
                            "7021",
                            "7368",
                            "7386",
                            "7214",
                            "7379",
                            "7336",
                            "7196",
                            "7356",
                            "7306",
                            "6436",
                            "7096",
                            "7063",
                            "7151",
                            "7318",
                            "7310",
                            "7212",
                            "7314",
                            "7016",
                            "7329",
                            "7361",
                            "7325",
                            "7161",
                            "7091",
                            "7347",
                            "7080",
                            "7076",
                            "7341",
                            "8211",
                            "8172",
                            "8140",
                            "8157",
                            "8159",
                            "8219",
                            "8182",
                            "8181",
                            "8204",
                            "8035",
                            "8161",
                            "8056",
                            "8175",
                            "8026",
                            "8057",
                            "8197",
                            "8018",
                            "8191",
                            "8212",
                            "8180",
                            "8196",
                            "8066",
                            "8109",
                            "8210",
                            "8199",
                            "8103",
                            "8101",
                            "8164",
                            "8171",
                            "8201",
                            "8215",
                            "8085",
                            "8158",
                            "8169",
                            "8195",
                            "8017",
                            "8179",
                            "8076",
                            "8176",
                            "8203",
                            "8079",
                            "8220",
                            "8042",
                            "8205",
                            "8190",
                            "8027",
                            "8386",
                            "8152",
                            "8453",
                            "8477",
                            "8462",
                            "8467",
                            "8451",
                            "8476",
                            "8469",
                            "8437",
                            "8440",
                            "8471",
                            "8466",
                            "8470",
                            "8474",
                            "8041",
                            "8154",
                            "5024",
                            "5221",
                            "5150",
                            "5095",
                            "5228",
                            "5083",
                            "5121",
                            "5211",
                            "5214",
                            "5229",
                            "5227",
                            "5222",
                            "5210",
                            "5230",
                            "5181",
                            "5224",
                            "5068",
                            "5160",
                            "5212",
                            "5226",
                            "5220",
                            "5215",
                            "4457",
                            "4455",
                            "4467",
                            "4466",
                            "4422",
                            "4453",
                            "4468",
                            "6300",
                            "6156",
                            "6430",
                            "6177",
                            "6412",
                            "6975",
                            "6409",
                            "6423",
                            "6404",
                            "6395",
                            "6224",
                            "6310",
                            "6249",
                            "6083",
                            "6126",
                            "6425",
                            "6299",
                            "6443",
                            "6426",
                            "6042",
                            "6448",
                            "6401",
                            "6390",
                            "6402",
                            "6428",
                            "6359",
                            "6035",
                            "6438",
                            "6140",
                            "6230",
                            "6439",
                            "6240",
                            "6400",
                            "6363",
                            "6403",
                            "6075",
                            "6429",
                            "6388",
                            "6225",
                            "6431",
                            "6386",
                            "6194",
                            "6453",
                            "6196",
                            "6185",
                            "6459",
                            "6420",
                            "6174",
                            "6215",
                            "6442",
                            "6450",
                            "6411",
                            "6385",
                            "6446",
                            "6422",
                            "6435",
                            "6118",
                            "6246",
                            "6037",
                            "6228",
                            "6432",
                            "6011",
                            "6461",
                            "6160",
                            "6399",
                            "6449",
                            "6462",
                            "6433",
                            "6227",
                            "6247",
                            "6180",
                            "6221",
                            "6427",
                            "6437",
                            "6451",
                            "6202",
                            "6201",
                            "6452",
                            "6463",
                            "2170",
                            "2435",
                            "2174",
                            "2443",
                            "2010",
                            "2183",
                            "2708",
                            "2404",
                            "2445",
                            "2052",
                            "2440",
                            "2260",
                            "2094",
                            "2130",
                            "2438",
                            "2157",
                            "2402",
                            "2206",
                            "2015",
                            "2433",
                            "2437",
                            "2163",
                            "2160",
                            "2442",
                            "2432",
                            "2016",
                            "2707",
                            "2444",
                            "2063",
                            "2703",
                            "2179",
                            "2706",
                            "2182",
                            "2181",
                            "2390",
                            "2022",
                            "2355",
                            "2210"
                        ],
                        "type": "string",
                        "description": "Bunnings store used for pricing and stock data across all modes. Prices and availability are store-specific. Defaults to Melbourne VIC 3000 if not selected. Format: ZIP - StoreName, Address, STATE.",
                        "default": "6425"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Used when mode = search. E.g. 'cordless drill'.",
                        "default": "cordless drill"
                    },
                    "categoryUrl": {
                        "title": "Category URL or slug",
                        "type": "string",
                        "description": "Used when mode = category. Paste a full bunnings.com.au category URL (e.g. https://www.bunnings.com.au/products/outdoor-living/camping-recreation/camping-power-cables) or just the last slug (e.g. camping-power-cables). Resolved automatically to the internal category key.",
                        "default": "https://www.bunnings.com.au/products/outdoor-living/camping-recreation/camping-power-cables"
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of pages to fetch (18 products/page, fixed by Bunnings internal API). Bunnings caps browsing at 100 pages (1800 products) max per search/category. If your category or search has more than 1800 results, you won't get all of them this way - narrow it down using the sort order and price filters below, or split it into multiple runs. Stops earlier if fewer results exist. Charged per page actually fetched.",
                        "default": 10
                    },
                    "sortOrder": {
                        "title": "Sort order",
                        "enum": [
                            "BoostOrder",
                            "PriceAscending",
                            "PriceDescending"
                        ],
                        "type": "string",
                        "description": "Ignored for product mode.",
                        "default": "BoostOrder"
                    },
                    "priceMin": {
                        "title": "Min price (AUD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional. Filter results to products priced at or above this value."
                    },
                    "priceMax": {
                        "title": "Max price (AUD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional. Filter results to products priced at or below this value. Leave empty for no upper limit."
                    },
                    "productIdsOrUrls": {
                        "title": "Product IDs or URLs",
                        "type": "array",
                        "description": "Used when mode = product. Accepts product page URLs (the _p<id> slug is extracted automatically) or raw product IDs.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
