Bunnings API

Bunnings for Australia and New Zealand as JSON, priced and stocked per store

The Bunnings API turns bunnings.com.au and bunnings.co.nz into clean JSON, in six actions: search, category/products, product/detail, product/stock, stores and search/suggest.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Bunnings endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
B
/bunnings/v1

6 active endpoints, on 1 and 2 credit tiers.

  • POST/bunnings/v1/search
  • POST/bunnings/v1/category/products
  • POST/bunnings/v1/product/detail
  • POST/bunnings/v1/product/stock
  • POST/bunnings/v1/stores
  • POST/bunnings/v1/search/suggest

What Bunnings endpoints does ReefAPI ship?

6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

6 endpoints

search

1 cr

Search Bunnings by keyword, priced for one store (prices differ by region).

required
query
optional
country, store_id, postcode, page, per_page, sort, brand, price_min, price_max, min_rating, fulfilment, offer, seller, special_order, category, include_fallback_results, live_prices, max_rotations

category/products

1 cr

Browse a Bunnings category (any level, from 'tools' down to 'cordless-drill-kits') with the s…

required
category
optional
country, store_id, postcode, page, per_page, sort, brand, price_min, price_max, min_rating, fulfilment, offer, seller, special_order, live_prices, max_rotations

product/detail

1 cr

The full Bunnings product record for one store.

required
item_number
optional
country, store_id, postcode, url, max_rotations

product/stock

2 cr

In-store stock, click & collect, the aisle and bay, and the store price for one item across s…

required
item_number
optional
country, store_ids, postcode, latitude, longitude, nearest, url, max_rotations

stores

1 cr

The Bunnings store finder.

required
optional
country, postcode, latitude, longitude, store_id, page, max_rotations

search/suggest

1 cr

Bunnings' search-box suggestions for a partial keyword.

required
query
optional
country, store_id, max_rotations

Every parameter, every allowed value →

Bunnings API

4 of 6 endpoints, ready to run

View docs ↗

Bunnings' product results for a keyword, priced for one store: item number, title, brand, price in AUD or NZD, unit price, Marketplace seller, fulfilment options, offer badges, rating and review count, image and category path.

1 credit1 required · 3 optional
POST/bunnings/v1/search
ok2107 ms · 36 records · sample
{
  "ok": true,
  "meta": {
    "api": "bunnings",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2107.1,
    "record_count": 36,
    "cache_hit": false
  },
  "data": {
    "query": "cordless drill",
    "results": [
      {
        "position": 1,
        "item_number": "0365191",
        "title": "XU1 3.6V Cordless Screwdriver XSD-363",
        "brand": "XU1",
        "brand_code": null,
        "url": "https://www.bunnings.com.au/xu1-3-6v-cordless-screwdriver-xsd-363_p0365191",
        "price": 19.98,
        "price_source": "search_index",
        "currency": "AUD",
        "unit_price": null,
        "sold_by_unit": "EA",
        "is_marketplace": false,
        "seller": null,
        "fulfilment_options": [
          "In-Store",
          "Delivery",
          "Click & Collect"
        ],
        "is_special_order": false,
        "delivery_included": false,
        "promotions": null,
        "campaign": null,
        "key_selling_points": [
          "Ideal for light screwdriving jobs",
          "2 Position Rear Handle –Switch between angle or inline orientation to operate in tight areas",
          "1.5Ah Lithium Ion Battery –Allows for convenient cordless operation"
        ],
        "search_index_rating": 3.66,
        "search_index_review_count": 26,
        "rating_scale": 5,
        "variant_count": null,
        "colour_count": null,
        "new_arrival": false,
        "best_seller": false,
        "age_restricted": false,
        "for_hire": false,
        "image": "https://media.bunnings.com.au/api/public/content/c7f5a5dfc4314a76af3095ea61e9b605?v=54a19270",
        "thumbnail": "https://media.bunnings.com.au/api/public/content/c7f5a5dfc4314a76af3095ea61e9b605?v=54a19270",
        "category_path": [
          {
            "code": "tools",
            "name": "Tools",
            "path": "/tools"
          },
          {
            "code": "power-tools",
            "name": "Power Tools",
            "path": "/tools/power-tools"
          },
          {
            "code": "drills",
            "name": "Drills",
            "path": "/tools/power-tools/drills"
          }
        ]
      },
      {
        "position": 2,
        "item_number": "0949092",
        "title": "Powerfit Workshop Vacuum 30-38L M-Class Plastic Bags - 3 Pack",
        "brand": "PowerFit",
        "brand_code": null,
        "url": "https://www.bunnings.com.au/powerfit-workshop-vacuum-30-38l-m-class-plastic-bags-3-pack_p0949092",
        "price": 21.99,
        "price_source": "search_index",
        "currency": "AUD",
        "unit_price": null,
        "sold_by_unit": "EA",
        "is_marketplace": false,
        "seller": null,
        "fulfilment_options": [
          "In-Store",
          "Delivery",
          "Click & Collect"
        ],
        "is_special_order": false,
        "delivery_included": false,
        "promotions": null,
        "campaign": null,
        "key_selling_points": [
          "Tear-resistant plastic design for enhanced durability",
          "Seals in debris for hygienic disposal",
          "Fits all RYOBI M-Class Workshop Vacuums and other leading M-class workshop vacuum brands"
        ],
        "search_index_rating": null,
        "search_index_review_count": null,
        "rating_scale": null,
        "variant_count": null,
        "colour_count": null,
        "new_arrival": false,
        "best_seller": false,
        "age_restricted": false,
        "for_hire": false,
        "image": "https://media.bunnings.com.au/api/public/content/eb9e5196d1a247c0826ee8c6dbb94b5a?v=6b5a2ee4",
        "thumbnail": "https://media.bunnings.com.au/api/public/content/eb9e5196d1a247c0826ee8c6dbb94b5a?v=6b5a2ee4",
        "category_path": [
          {
            "code": "tools",
            "name": "Tools",
            "path": "/tools"
          },
          {
            "code": "power-tools",
            "name": "Power Tools",
            "path": "/tools/power-tools"
          },
          {
            "code": "drills",
            "name": "Drills",
            "path": "/tools/power-tools/drills"
          }
        ]
      },
      {
        "position": 3,
        "item_number": "6330509",
        "title": "Ultra 13mm Keyless Drill Chuck",
        "brand": "Ultra",
        "brand_code": null,
        "url": "https://www.bunnings.com.au/ultra-13mm-keyless-drill-chuck_p6330509",
        "price": 27.95,
        "price_source": "search_index",
        "currency": "AUD",
        "unit_price": null,
        "sold_by_unit": "EA",
        "is_marketplace": false,
        "seller": null,
        "fulfilment_options": [
          "In-Store",
          "Delivery",
          "Click & Collect"
        ],
        "is_special_order": false,
        "delivery_included": false,
        "promotions": null,
        "campaign": null,
        "key_selling_points": [
          "Superior quality metal construction",
          "Ratchet locking of drill bits",
          "Common thread size"
        ],
        "search_index_rating": 4.34,
        "search_index_review_count": 6,
        "rating_scale": 5,
        "variant_count": null,
        "colour_count": null,
        "new_arrival": false,
        "best_seller": false,
        "age_restricted": false,
        "for_hire": false,
        "image": "https://media.bunnings.com.au/api/public/content/8a6f9b97b0e1440b9091f48729fa3ec1?v=9899d647",
        "thumbnail": "https://media.bunnings.com.au/api/public/content/8a6f9b97b0e1440b9091f48729fa3ec1?v=9899d647",
        "category_path": [
          {
            "code": "tools",
            "name": "Tools",
            "path": "/tools"
          },
          {
            "code": "tool-accessories",
            "name": "Tool Accessories",
            "path": "/tools/tool-accessories"
          },
          {
            "code": "drill-bits",
            "name": "Drill Bits & Accessories",
            "path": "/tools/tool-accessories/drill-bits"
          }
        ]
      }
    ],
    "count": 36,
    "total_results": 238,
    "fallback_results_dropped": 0,
    "page": 1,
    "per_page": 36,
    "has_more": true,
    "duplicate_rows_dropped": 0,
    "did_you_mean": null,
    "site_redirect": null,
    "store": {
      "store_id": "7313",
      "name": "Alexandria",
      "pricing_region": "NSWMetro",
      "chosen_by": "postcode"
    },
    "country": "au",
    "currency": "AUD",
    "sort": "price_asc",
    "applied_filters": {
      "seller": "all"
    }
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows. Press Try it for the untrimmed response.

How the Bunnings API works

Bunnings is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 252 engines.

02
Call
POST /bunnings/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Price a shopping list at the stores near a job site

One search gives you Bunnings item numbers. The same numbers give you the price and stock at every nearby store, each in one call.

01search
POST/bunnings/v1/search
{"query": "treated pine 90x45", "postcode": "2000", "sort": "price_asc"}

Priced for the store Bunnings assigns to Sydney 2000, cheapest first, with the price per metre where Bunnings publishes one (16 of 34 rows on 2026-09-15). Take results[].item_number.

02stock
POST/bunnings/v1/product/stock
{"item_number": "0539753", "postcode": "2000", "nearest": 4}

The four nearest stores with their price, in-store stock and the aisle and bay to walk to.

03stores
POST/bunnings/v1/stores
{"store_id": "7313"}

The chosen store's address, phone, opening hours and services.

Where an item is cheapest and in stock near you, and where to find it in the store - without mixing one region's price into another's.

request
curl -X POST https://api.reefapi.com/bunnings/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"cordless drill"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "bunnings",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

A Bunnings price belongs to a store, and so does the stock

Bunnings prices by region and counts stock per store. The same timber length costs a different amount in Melbourne and Sydney, and the same drill kit can be in aisle 19 at one store and aisle 21 at another. This engine always returns the store a price or stock figure is for, and lets you choose it.

ItemMentone VIC (store 6400)Alexandria NSW (store 7313)
Treated pine length, I/N 8030089$28.94$26.73
Ryobi 18V ONE+ Hammer Drill Power Up kit, I/N 0539753 - price$199.00$199.00
Same kit - in-store stock7, aisle 19 bay 22, aisle 21 bay 1

In a same-minute comparison of the first 36 'timber' results at both stores, 21 of the 30 items listed at both were priced differently. Stock counts and prices here are a 2026-09-15 snapshot and change daily.

Which price, which store, which seller, and what Bunnings leaves out

Two countries, six actions, prices in AUD and NZD. Measured on 2026-09-15 with 128 live calls across every action and both countries, and a 12-product check across six categories. Two of these lines go against us.

Australia and New Zealand

bunnings.com.au in AUD and bunnings.co.nz in NZD. Every live test ran in both; country accepts au or nz only.

Every price and stock figure names its store

Prices differ by region (21 of 30 shared timber items between a Victorian and a New South Wales store) and stock differs by store. Choose the store with store_id or postcode; the answer always says which store it is for.

Checked against the rendered product page

Six products in Australia and New Zealand, including a Marketplace listing, matched the Bunnings product page on title, price, rating, review count, seller type, store and in-store stock, 6 of 6.

Bunnings or a Marketplace seller

Marketplace listings carry the seller's name. The product record lists every seller's offer, marks the one Bunnings features and returns the cheapest, which can differ.

Search prices can lag the product page

Search rows use the figure Bunnings' own search results show, which differed from the product page on 2 of 84 rows. live_prices true re-prices every row from the live product price.

Not published: was-prices, barcodes, review texts

Bunnings shows no struck-through price, so was_price is null. No barcode is published. The average rating and review count are returned, the reviews themselves are not. Weight was present on 8 of 12 verified products, manuals on 4, a unit price on 1; the rest are null, never guessed.

What people build with Bunnings

The jobs this data is most often used for.

6

endpoints

1/2

credits per call

01

Tradies and estimators check the price and in-store stock of a materials list at the stores near a job site before driving out.

02

Price-monitoring teams track Bunnings shelf prices per region for Australia and New Zealand, with unit prices for timber, paint and garden supplies.

03

Marketplace sellers see which competing Bunnings Marketplace offers sit on the same product and which one Bunnings features.

04

Store-locator and local-commerce apps list the nearest Bunnings with opening hours, services and click & collect.

What Bunnings data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 252 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/bunnings/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"cordless drill"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/bunnings/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "cordless drill"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Bunnings.

Get a free key →
Which countries and currencies does the Bunnings API cover?

Australia (bunnings.com.au, AUD) and New Zealand (bunnings.co.nz, NZD) - both run on the same Bunnings platform. Set country to au or nz; any other value returns INVALID_PARAM. Every live test ran in both countries.

Why does the price change when I change the store?

Bunnings sets prices per region. Every search row and product record is priced for one store, named in store (store_id, name, pricing_region and how it was chosen). Pass store_id, or a postcode to use the store Bunnings assigns to it; without either you get Bunnings' own default store (Mentone VIC in Australia).

Can I get stock for a specific store, and where the item is in the store?

Yes. product/detail returns in-store and click & collect stock for the chosen store, with the aisle and bay Bunnings publishes. product/stock checks one item across up to 10 store_ids, or the nearest stores to a postcode or coordinates, with each store's price and stock. Special-order products and items a store does not range come back as special_order or not_sold_at_store, never as a stock of 0.

Is the search price the same as the product page price?

Almost always. A search row carries the price Bunnings' own search results show, and that figure occasionally lags the product page: 2 of 84 rows measured on 2026-09-15 (for example $31.31 in search, $29.88 on the product page). Rows say price_source search_index. Pass live_prices true to re-price every row from the live product price; rows then say price_source live and keep search_index_price when the two differed. product/detail always uses the live price.

Does it cover Bunnings Marketplace sellers?

Yes. Marketplace products are flagged is_marketplace with the seller's name. product/detail lists every seller's offer with price, shipping and delivery window, marks the featured offer Bunnings shows first, and returns the cheapest offer price, because the featured offer is not always the only one. seller bunnings or marketplace filters search; by default Australia shows both, like the site, and New Zealand shows Bunnings' own range.

What happens when a search has no matches?

You get ok true with an empty result list. Bunnings' spelling suggestion comes back as did_you_mean (drlil gives drill). When Bunnings answers a nonsense query with loosely related products, those rows are dropped and counted in fallback_results_dropped; include_fallback_results true returns them separately. When Bunnings sends a keyword to a category page (paint, bbq), the matching products are still returned and site_redirect names that category.

What does Bunnings NOT publish?

A was-price or struck-through price (Bunnings runs everyday low pricing, so was_price is always null), member or trade prices, barcodes (gtin is null), and review texts - the average rating and review count are returned, the reviews themselves are not. On 12 verified products weight was published for 8, manuals for 4, a unit price for 1.

What is the Bunnings API?

Bunnings API is a ReefAPI endpoint group for australia and new zealand hardware: store prices, stock by store with aisle and bay, marketplace sellers. It returns live JSON through POST requests under /bunnings/v1.

Is the Bunnings API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Bunnings calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Bunnings login or account?

No login to Bunnings is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Bunnings data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Bunnings API use?

Bunnings actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Bunnings from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call bunnings actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Bunnings API a Bunnings scraper?

It is the managed alternative to a DIY Bunnings scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same australia and new zealand hardware: store prices, stock by store with aisle and bay, marketplace sellers back as clean JSON.

91 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Bunnings, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-15.