# Bunnings Scraper by TradeSDK (`lianm/bunnings-scraper-tradesdk`) Actor

Scrape product data from Bunnings Warehouse (bunnings.com.au) � prices, SKUs, brands, stock, specs, images. No browser needed for product pages. By TradeSDK, the materials data layer for AI agents.

- **URL**: https://apify.com/lianm/bunnings-scraper-tradesdk.md
- **Developed by:** [Lian Marshall](https://apify.com/lianm) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 by TradeSDK

Scrape product data from [Bunnings Warehouse](https://www.bunnings.com.au) — Australia and New Zealand's largest hardware retailer. Extract prices, SKUs, brands, stock levels, specifications, images, ratings, and more.

**By [TradeSDK](https://tradesdk.com)** — the materials data layer for AI agents.

***

### Features

- **Two modes**: Search products by keyword OR get detailed info for a specific product
- **Rich data**: Price, SKU, brand, specs, stock levels, aisle/bay location, ratings, images, dimensions
- **Search with pagination** — page through results for bulk data extraction
- **Proxy support** — works with Apify's residential proxy network

### Data Extracted

| Field | Description |
|-------|-------------|
| SKU | Product code / item number |
| Name | Full product name |
| Brand | Brand / manufacturer |
| Price | Current price (AUD) |
| Description | Full product description |
| Features | Bullet-point feature list |
| Categories | Full category hierarchy |
| Specifications | All technical specs (colour, material, size, etc.) |
| Images | All product images with URLs |
| Ratings | Average rating and review count |
| Stock | In-store availability, delivery, click & collect, stock level |
| Location | Aisle/bay location in store |
| Dimensions | Package and product dimensions |

### How to Use

#### Search Mode

Set mode to "Search products" and enter a search query like "poly pipe", "power drill", or "solar lights". The Actor will return matching products with name, SKU, brand, price, rating, and URLs.

#### Product Details Mode

Set mode to "Get product details" and enter a Bunnings SKU (e.g., `3120670`) or full product URL. The Actor returns complete product data including specifications, stock levels, images, and aisle location.

### Input

| Field | Type | Description |
|-------|------|-------------|
| mode | string | `search` or `product` |
| query | string | Search term (search mode only) |
| sku\_or\_url | string | Product SKU or URL (product mode only) |
| page | number | Page number for search pagination (default: 1) |
| max\_results | number | Results per page (default: 10, max: 36) |

### Output

Each result is a structured JSON object pushed to the Actor's dataset. Example:

```json
{
  "sku": "3120670",
  "name": "Holman 25mm x 50m Black Poly Pipe",
  "brand": "Holman",
  "url": "https://www.bunnings.com.au/holman-25mm-x-50m-black-poly-pipe_p3120670",
  "price": { "formatted": "$50.80", "currency": "AUD" },
  "description": "...",
  "specifications": [
    { "name": "Colour", "value": "Black" },
    { "name": "Diameter", "value": "25mm" }
  ],
  "stock": { "level": 12, "in_stock": true },
  "location": { "aisle": "D04", "bay": "03" }
}
```

### Pricing

- **$0.05 per result** — you only pay for successful product extractions
- **Actor start** — $0.00005 per run (negligible)
- **Free tier** — first 10 results per run are free to try it out

**Compare with TradeSDK:**

- **Free tier** — 50 Bunnings calls/day via TradeSDK API (no Apify credits needed)
- **Builder ($29/mo)** — Unlimited Bunnings + Nuway + premium suppliers
- **Pro ($99/mo)** — All suppliers + advanced features

Get your free TradeSDK API key at [tradesdk.com/dashboard](https://tradesdk.com/dashboard).

### Important Notes

#### Proxy Requirements

Bunnings has strong anti-bot measures that block datacenter IPs. This Actor requires **residential proxy access** to work reliably.

- **Free Apify plan**: Limited proxy access, may encounter 403 errors
- **Paid Apify plans** (Starter $49/mo+): Full residential proxy access, works reliably

If you encounter 403 Forbidden errors, upgrade to a paid Apify plan for residential proxy access.

#### Alternative: TradeSDK API

For unlimited Bunnings access without proxy concerns, use the [TradeSDK API](https://tradesdk.com) directly:

- 50 free calls/day
- No proxy needed
- Works from any server
- Upgrade to $29/mo for unlimited access

### Use Cases

- **Price monitoring** — track Bunnings pricing across product categories
- **Market research** — analyze product ranges, brands, and pricing trends
- **Stock checking** — find which stores have items in stock
- **Procurement** — source materials for construction projects
- **Affiliate feeds** — generate product data for affiliate marketing
- **AI agents** — feed Bunnings data into AI-powered estimating and procurement tools

### Integration with TradeSDK

This Actor is powered by [TradeSDK](https://tradesdk.com), which also offers:

- **MCP server** — connect Bunnings data directly to Claude, ChatGPT, or any AI agent
- **Free tier** — unlimited Bunnings calls via the TradeSDK API (no Apify credits needed)
- **Multi-supplier** — add Nuway and other Australian trade suppliers
- **Production infrastructure** — auth, rate limiting, usage tracking

Get your free API key at [tradesdk.com/dashboard](https://tradesdk.com/dashboard).

### Notes

- Product pages are scraped via Bunnings' internal API (fast, no browser needed)
- Search uses the Coveo search API
- Stock data reflects the default store (Mentone Warehouse, VIC)
- Respect Bunnings' terms of service and rate limits
- Data is for informational purposes; always verify with Bunnings for purchasing decisions

***

**Built by [TradeSDK](https://tradesdk.com)** — the materials data layer for AI agents.

# Actor input Schema

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

Choose whether to search for products or scrape a specific product by SKU/URL.

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

Search term to find products (e.g., 'poly pipe', 'power drill', 'solar lights'). Only used in search mode.

## `sku_or_url` (type: `string`):

Bunnings product SKU (e.g., '3120670') or full product URL. Only used in product details mode.

## `page` (type: `integer`):

Page number for search results pagination. Start at 1.

## `max_results` (type: `integer`):

Maximum number of products to return per search page.

## Actor input object example

```json
{
  "mode": "search",
  "query": "poly pipe",
  "sku_or_url": "3120670",
  "page": 1,
  "max_results": 10
}
```

# Actor output Schema

## `sku` (type: `string`):

Bunnings product SKU / item number.

## `name` (type: `string`):

Full product title.

## `brand` (type: `string`):

Product brand or manufacturer.

## `url` (type: `string`):

Full URL to the product page on bunnings.com.au.

## `product_url` (type: `string`):

Product page URL (present in search mode results).

## `price` (type: `string`):

Price information with formatted string, numeric value, and currency (AUD).

## `description` (type: `string`):

Product description or excerpt.

## `features` (type: `string`):

List of key product features (product mode only).

## `categories` (type: `string`):

Product category breadcrumb trail (product mode only).

## `specifications` (type: `string`):

Product specifications as name/value pairs (product mode only).

## `images` (type: `string`):

Product images with URL and alt text (product mode only).

## `image_url` (type: `string`):

Primary product image URL (search mode only).

## `rating` (type: `string`):

Customer rating with average score and review count.

## `stock` (type: `string`):

Stock and availability including level, in\_stock, delivery and click & collect (product mode only).

## `location` (type: `string`):

In-store location with aisle, bay and store name (product mode only).

## `dimensions` (type: `string`):

Product and package dimensions (product mode only).

# 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 = {
    "query": "poly pipe",
    "sku_or_url": "3120670"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lianm/bunnings-scraper-tradesdk").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 = {
    "query": "poly pipe",
    "sku_or_url": "3120670",
}

# Run the Actor and wait for it to finish
run = client.actor("lianm/bunnings-scraper-tradesdk").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "poly pipe",
  "sku_or_url": "3120670"
}' |
apify call lianm/bunnings-scraper-tradesdk --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lianm/bunnings-scraper-tradesdk"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/DyDbwpCh0JGTwvBV5/builds/NBwMMq3gBp5wHXuK2/openapi.json
