Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the PAK'nSAVE & New World API page →
E-commerce & Marketplaces

PAK'nSAVE & New World API

PAK'nSAVE and New World are New Zealand's Foodstuffs supermarkets, and both price every product per store: across six PAK'nSAVE stores on the same day, 37 of 39 bread products and 9 of 11 butter products had different prices (one sliced bread was $3.49 in Napier and $4.02 at Wairau Road).

5 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

Every call therefore reads one store, given by store_id or part of its name; without one the API uses PAK'nSAVE Royal Oak or New World Remuera (Auckland) and says so. `search` returns products for a search term or a category with the price, the Clubcard price kept apart from the price, multi-buys such as "2 for $5.00", the unit price ("$2.33/1L"), price per kg with average piece weight for produce and meat, online and in-store availability, dietary tags and every category the product sits in. `deals` lists everything on a deal at a store, `product` returns one product with its barcode, ingredients, allergens, nutrition panel, images and the deal's start and end dates, `categories` gives the store's category tree and `stores` the 58 PAK'nSAVE and 149 New World stores with address, island, hours and coordinates. Pass banner=newworld for New World.

Reference

What a PAK'nSAVE / New World field actually contains

Fields that read differently from how they look. Every row was measured against live responses and the rendered site on 2026-10-15.

FieldWhat it holds
store_id, store_name, store_defaultedThe store the prices belong to. store_defaulted is true when you did not pass a store; the answer still names the store used.
priceWhat anyone pays for one unit now, in NZD. When a single-unit deal is on ("$5.00, Limit 4"), price is the deal price and regular_price the price without it (Hubbards granola: 5.00 and 7.05). For goods sold by weight it is the price per kg (price_unit "kg").
member_priceThe New World Clubcard price, never the price: Paseo toilet tissue 8 x 270 sheets showed price 10.19 and member_price 7.59 (limit 12). null when there is no card price; PAK'nSAVE deals carried none in our sample.
multi_buyA deal on several units, kept apart from the single price: Nippy's flavoured milk 375 ml price 2.79 with multi_buy quantity 2, price 5.00 ("2 for $5.00"). card_required says when it needs a Clubcard; mix_and_match when assorted products count together.
unit_priceThe site's comparison price: price per quantity and unit, for example 2.33 per 1 L or 0.47 per 100 sheets.
sold_by, weightunit, weight or unit_or_weight (bananas can be bought by the piece or by the kg); weight gives the average piece weight, minimum order and step in grams.
categoriesEvery placement of the product in the shop, as "Department > Aisle > Shelf" paths. A flavoured milk sits under both Hot & Cold Drinks and Fridge, Deli & Eggs.
total, total_capped, total_on_promotionThe shop shows at most the first 1,000 products of any result; total_capped is true when the count stops there. For deals, total_on_promotion is the store's own count of deals (2,904 at PAK'nSAVE Royal Oak).
barcode, plubarcode is the EAN of packed goods; weighed goods carry a short store code instead, returned as plu.

Neither shop publishes a was-price or a stock count to visitors: availability is online / in store only. Ratings are not included.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/paknsave/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "milk"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "paknsave",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2081.3,
    "record_count": 50,
    "bytes": 35307,
    "cache_hit": false,
    "total": 95,
    "store_defaulted": true,
    "banner": "paknsave",
    "upstream_requests": 1,
    "charged_credits": 2,
    "version": "0.1.0",
    "request_id": "9f138a23d6a14740",
    "queue_ms": 1.2,
    "fetched_at": "2026-10-15T17:02:57.626Z"
  },
  "data": {
    "banner": "paknsave",
    "store_id": "e1925ea7-01bc-4358-ae7c-c6502da5ab12",
    "store_name": "PAK'nSAVE Royal Oak",
    "store_region": "NI",
    "store_defaulted": true,
    "query": "milk",
    "category": null,
    "brand": null,
    "dietary": null,
    "on_promotion": null,
    "sort": "relevance",
    "total": 95,
    "total_is_exact": true,
    "total_capped": false,
    "page": 1,
    "page_size": 50,
    "last_page": 2,
    "has_more": true,
    "returned": 50,
    "products": [
      {
        "rank": 1,
        "product_id": "5201490-EA-000",
        "title": "Pams Value Standard Milk",
        "name": "Standard Milk",
        "brand": "Pams Value",
        "size": "3l",
        "price": 6.98,
        "regular_price": null,
        "price_limit": null,
        "currency": "NZD",
        "on_promotion": false,
        "member_price": null,
        "member_price_program": null,
        "member_unit_price": null,
        "member_price_limit": null,
        "multi_buy": null,
        "price_unit": "each",
        "unit_price": {
          "price": 2.33,
          "quantity": 1,
          "unit": "L",
          "per": "1L",
          "text": "$2.33/1L"
        },
        "sold_by": "unit",
        "weight": null,
        "available_online": true,
        "available_in_store": true,
        "promotions": [],
        "categories": [
          "Fridge, Deli & Eggs > Milk > Fresh Milk"
        ],
        "dietary": [
          "Non-GMO"
        ],
        "origin": null,
        "restricted": false,
        "liquor": false,
        "tobacco": false,
        "store_id": "e1925ea7-01bc-4358-ae7c-c6502da5ab12",
        "url": "https://www.paknsave.co.nz/shop/product/5201490_ea_000pns"
      },
      {
        "rank": 2,
        "product_id": "5201479-EA-000",
        "title": "Pams Value Standard Milk",
        "name": "Standard Milk",
        "brand": "Pams Value",
        "size": "2l",
        "price": 4.69,
        "regular_price": null,
        "price_limit": null,
        "currency": "NZD",
        "on_promotion": false,
        "member_price": null,
        "member_price_program": null,
        "member_unit_price": null,
        "member_price_limit": null,
        "multi_buy": null,
        "price_unit": "each",
        "unit_price": {
          "price": 2.35,
          "quantity": 1,
          "unit": "L",
          "per": "1L",
          "text": "$2.35/1L"
        },
        "sold_by": "unit",
        "weight": null,
        "available_online": true,
        "available_in_store": true,
        "promotions": [],
        "categories": [
          "Fridge, Deli & Eggs > Milk > Fresh Milk"
        ],
        "dietary": [
          "Non-GMO"
        ],
        "origin": null,
        "restricted": false,
        "liquor": false,
        "tobacco": false,
        "store_id": "e1925ea7-01bc-4358-ae7c-c6502da5ab12",
        "url": "https://www.paknsave.co.nz/shop/product/5201479_ea_000pns"
      },
      {
        "rank": 3,
        "product_id": "5201487-EA-000",
        "title": "Pams Value Lite Milk",
        "name": "Lite Milk",
        "brand": "Pams Value",
        "size": "2l",
        "price": 4.69,
        "regular_price": null,
        "price_limit": null,
        "currency": "NZD",
        "on_promotion": false,
        "member_price": null,
        "member_price_program": null,
        "member_unit_price": null,
        "member_price_limit": null,
        "multi_buy": null,
        "price_unit": "each",
        "unit_price": {
          "price": 2.35,
          "quantity": 1,
          "unit": "L",
          "per": "1L",
          "text": "$2.35/1L"
        },
        "sold_by": "unit",
        "weight": null,
        "available_online": true,
        "available_in_store": true,
        "promotions": [],
        "categories": [
          "Fridge, Deli & Eggs > Milk > Fresh Milk"
        ],
        "dietary": [
          "Non-GMO"
        ],
        "origin": null,
        "restricted": false,
        "liquor": false,
        "tobacco": false,
        "store_id": "e1925ea7-01bc-4358-ae7c-c6502da5ab12",
        "url": "https://www.paknsave.co.nz/shop/product/5201487_ea_000pns"
      }
    ]
  }
}
Actions

What the PAK'nSAVE & New World API does

ActionDescriptionConcrete use caseKey params
searchSearch one PAK'nSAVE or New World store's online range: price in NZD, club-card price kept apart from the price, multi-buy, unit price, sold-by-weight details, online / in-store availability, dietary tags and every category placement per product. `query` or `category` is required (either one); filter by brand, dietary tag or deals.Pricing teams call search to search one PAK'nSAVE or New World store's online range.query, category, store_id, banner, brand, ...
dealsEverything on a deal at one store (the site's Deals page): sale prices, multi-buys and club-card prices, optionally narrowed by query, category, brand or dietary tag. Reports the store's own count of deals (total_on_promotion) beyond the 1000-row window.Marketplace operators call deals to get everything on a deal at one store (the site's Deals page).query, category, store_id, banner, brand, ...
productOne product at one store: price, club-card price, multi-buy with start / end dates, unit price, barcode (or PLU for weighed goods), description, ingredients, allergens, nutrition panel, dietary tags, origin, images and availability. NOT_FOUND when the store does not sell it.Catalog enrichment teams call product to get one product at one store.product_id, store_id, banner
categoriesThe category tree of one store (names and paths to pass as `category`).Retail analysts call categories to get the category tree of one store (names and paths to pass as `category`)..store_id, banner
storesPAK'nSAVE or New World store directory: store_id, name, address, island, coordinates, phone, opening hours, click & collect / delivery. Narrow by text or island, or sort by distance from a point.Pricing teams call stores to get pAK'nSAVE or New World store directory.banner, query, region, latitude, longitude, ...
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/paknsave/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"milk"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.paknsave.search with {"query":"milk"}.
Use cases

Who uses this API and why

  • Compare New Zealand grocery prices between PAK'nSAVE and New World stores and regions.
  • Track weekly deals, multi-buys and Clubcard prices on the products you follow.
  • Build a New Zealand grocery product database with barcodes, ingredients, allergens and nutrition.
  • Monitor unit prices to find the cheapest pack size per litre or per kilo.
  • Find the nearest PAK'nSAVE or New World store with its hours and click & collect options.
FAQ

Questions developers ask before integrating

Do I need a PAK'nSAVE or New World account?

No. Everything is read logged out: the prices, deals and Clubcard prices any visitor sees for a store. Personalised offers that need a login are not included.

Why does the price depend on the store?

Because Foodstuffs prices every store separately: 37 of 39 bread products and 9 of 11 butter products had different prices across six PAK'nSAVE stores on the same day. Pass store_id from the stores call, or part of a store name such as Napier or Royal Oak.

Is the Clubcard price the price I get?

Only with a Clubcard. price is what everyone pays; member_price is the card price. On the New World deals pages we checked, 21 of 30 deals were Clubcard prices.

Does it cover New World?

Yes, pass banner=newworld. New World runs on the same platform with 149 stores; PAK'nSAVE has 58.

Which filters and sorts work?

Sort by popularity, price or unit price, up or down; filter by category, brand, dietary tag (Gluten Free, Vegan …) and deals only. On "milk" at PAK'nSAVE Napier City (97 products): Anchor 23, Gluten Free 14, on a deal 7. On "chocolate" (639): the Chocolate, Sweets & Chewing Gum aisle 318, Fridge, Deli & Eggs 39.

How many results can I page through?

50 per page and up to 20 pages, because the shop itself stops at the first 1,000 products of any result. Three pages in a row returned 150 different products. Narrow by category or brand to reach the rest.

Are the prices the ones shown on the website?

Yes. 50 of 50 PAK'nSAVE product cards and 30 of 30 New World deal cards matched the price, deal price and multi-buy printed on the site for the same store and day.

How fresh is the data?

Every call reads the shop live; nothing is cached. Deals carry their start and end dates on the product call.

What is the PAK'nSAVE & New World API?

PAK'nSAVE & New World API is a ReefAPI endpoint group for new zealand grocery prices per store from pak'nsave and new world: nzd price, clubcard price, multi-buys, unit price, ingredients and nutrition. It returns live JSON through POST requests under /paknsave/v1.

Is the PAK'nSAVE & New World API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. PAK'nSAVE & New World calls use the same shared credit balance as every other ReefAPI engine.

Do I need a PAK'nSAVE & New World login or account?

No login to PAK'nSAVE & New World 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 PAK'nSAVE & New World 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 PAK'nSAVE & New World API use?

PAK'nSAVE & New World actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call PAK'nSAVE & New World from an AI assistant or MCP client?

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

docs / paknsave

PAK'nSAVE & New World

New Zealand grocery prices per store from PAK'nSAVE and New World: NZD price, Clubcard price, multi-buys, unit price, ingredients and nutrition.

base /paknsave/v15 endpoints
post/paknsave/v1/deals2 credits

Everything on a deal at one store (the site's Deals page): sale prices, multi-buys and club-card prices, optionally narrowed by query, category, brand or dietary tag. Reports the store's own count of deals (total_on_promotion) beyond the 1000-row window.

ParameterAllowed / rangeDescription
queryoptional—Optional text to narrow the deals.
categoryoptional—Category path from the `categories` action, 1-3 levels joined by ' > ' (e.g. 'Pantry' or 'Fridge, Deli & Eggs > Milk > Fresh Milk'). Case-insensitive.
store_idoptional—Store whose prices, deals and range you want: a store_id from the `stores` action, or part of a store name ('Napier', 'Royal Oak'). Prices differ by store. Without it the default store is used (PAK'nSAVE Royal Oak / New World Remuera, Auckland) and the answer says so (store_defaulted: true).
banner = paknsaveoptionalpaknsave · newworldWhich Foodstuffs shop: paknsave (default) or newworld. Same platform, own stores, prices and deals; New World has Clubcard prices.
brandoptional—Only this brand, as a row's `brand` field gives it (case-insensitive).
dietaryoptional—Only products with this dietary tag, as a row's `dietary` list gives it (e.g. Gluten Free, Vegan, Vegetarian, Non-GMO, Low Fat, Low Sugar).
sort = relevanceoptionalrelevance · price_asc · price_desc · unit_price_asc · unit_price_descOrder of the results.
page = 1optional1–20Page number, 1-20, 50 products per page. The source shows at most the first 1000 products of a result (total_capped says when).
Try in playground →
post/paknsave/v1/product1 credit

One product at one store: price, club-card price, multi-buy with start / end dates, unit price, barcode (or PLU for weighed goods), description, ingredients, allergens, nutrition panel, dietary tags, origin, images and availability. NOT_FOUND when the store does not sell it.

ParameterAllowed / rangeDescription
product_idrequired—The product_id of a search row (e.g. 5201490-EA-000, 5046542-KGM-000) or the product page URL.
store_idoptional—Store whose prices, deals and range you want: a store_id from the `stores` action, or part of a store name ('Napier', 'Royal Oak'). Prices differ by store. Without it the default store is used (PAK'nSAVE Royal Oak / New World Remuera, Auckland) and the answer says so (store_defaulted: true).
banner = paknsaveoptionalpaknsave · newworldWhich Foodstuffs shop: paknsave (default) or newworld. Same platform, own stores, prices and deals; New World has Clubcard prices.
Try in playground →
post/paknsave/v1/categories2 credits

The category tree of one store (names and paths to pass as `category`).

ParameterAllowed / rangeDescription
store_idoptional—Store whose prices, deals and range you want: a store_id from the `stores` action, or part of a store name ('Napier', 'Royal Oak'). Prices differ by store. Without it the default store is used (PAK'nSAVE Royal Oak / New World Remuera, Auckland) and the answer says so (store_defaulted: true).
banner = paknsaveoptionalpaknsave · newworldWhich Foodstuffs shop: paknsave (default) or newworld. Same platform, own stores, prices and deals; New World has Clubcard prices.
Try in playground →
post/paknsave/v1/stores2 credits

PAK'nSAVE or New World store directory: store_id, name, address, island, coordinates, phone, opening hours, click & collect / delivery. Narrow by text or island, or sort by distance from a point.

ParameterAllowed / rangeDescription
banner = paknsaveoptionalpaknsave · newworldWhich Foodstuffs shop: paknsave (default) or newworld. Same platform, own stores, prices and deals; New World has Clubcard prices.
queryoptional—Part of the store name or address (case-insensitive).
regionoptionalNI · SIOnly stores on this island.
latitudeoptional—With longitude: sort stores by straight-line distance from this point (distance_km).
longitudeoptional—With latitude.
limit = 200optional1–200How many stores to return (default all).
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.