DEVELOPERS

Australian grocery data. One API.

49,000+ products across Coles, Woolworths, ALDI and Harris Farm. Real prices updated weekly, cross-retailer comparison by barcode, and up to 12 months of price history. Free tier included.

-- Products
4 Retailers
7,800+ Barcode matches
11 Endpoints

Get an API key

Free tier: 30 requests/minute, 1,000/day, 30 days of price history. No credit card.

By registering, you agree to the API Terms of Use.

Quick start

Search for products
curl "https://pinch-app.com/api/products/search?q=milk&limit=3" \
  -H "Authorization: Bearer pk_live_YOUR_KEY"
Compare prices by barcode
curl "https://pinch-app.com/api/compare/9300675016902" \
  -H "Authorization: Bearer pk_live_YOUR_KEY"
Compare a basket across retailers
curl -X POST "https://pinch-app.com/api/basket/compare" \
  -H "Authorization: Bearer pk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"query":"full cream milk 2L"},{"query":"white bread"},{"query":"bananas"}]}'
Response format
{
  "data": [...],
  "meta": {
    "total": 1518,
    "limit": 3,
    "offset": 0,
    "data_source": "pinch",
    "generated_at": "2026-05-14T06:49:05.027Z"
  }
}

Endpoints

All endpoints are relative to https://pinch-app.com/api

Freshness fields. Product and specials responses carry is_fresh (price confirmed within the last 11 days), data_freshness_days (age of the last confirmation), and, for Coles and Woolworths, price_catalogue_week_start (the Wednesday-anchored catalogue week the price was observed in, Sydney time) plus special_may_have_ended: true means the special was captured before the most recent Wednesday catalogue changeover and the promotion may have finished, so treat that price as unconfirmed (null for retailers without a weekly catalogue cycle; only meaningful when is_fresh is true). All updated_at timestamps are UTC. Prices reflect national online pricing, not a specific store.

GET /health No auth

Health check and data freshness. Returns retailer list, product counts, and last update timestamps, plus current_catalogue_week_start and per-retailer in_current_catalogue_period (Coles and Woolworths; null for retailers without a weekly catalogue cycle).

GET /products/search

Full-text search across all products. Falls back to fuzzy matching for special characters.

q required Search query
retailer Filter: Woolworths, Coles, Aldi, Harris Farm
category Filter by category name
on_special true for specials only
sort relevance (default), price_asc, price_desc, unit_price_asc
limit 1-50, default 20
offset Pagination offset, default 0
GET /products/:id

Get a single product by ID. IDs are returned in search results and vary by retailer (e.g. 216872 for Woolworths, coles_1154961 for Coles).

GET /products/:id/price-history

Historical price data with stats (lowest, highest, average). History depth depends on your tier.

days Max days of history. Free: 30, Registered: 90, Partner: 365
GET /compare/:barcode

Cross-retailer price comparison by EAN-13 barcode. Returns all retailers stocking the product, sorted cheapest first. Approximately 7,800 products have barcode matches.

GET /specials

Current specials and promotions, sorted by savings amount (biggest discounts first). Specials captured before the most recent Wednesday catalogue changeover (Coles and Woolworths) are excluded as unconfirmed, so the list can be short right after a changeover until the next collection. Individual products still expose such prices via /products/:id with special_may_have_ended: true.

retailer Filter by retailer
category Filter by category
limit 1-50, default 20
offset Pagination offset, default 0
GET /categories

List all product categories with product counts.

GET /retailers

Retailer statistics: product counts, specials counts, average prices, and last update time.

POST /basket/compare

Submit a grocery list and get the total cost at each retailer. Finds the best match per retailer for each item and computes totals and savings.

items required Array of { query: string } objects (1-20 items)
strategy single_store (default) or split_stores

Rate limits

Free Registered Partner
Per minute 30 60 120
Per day 1,000 5,000 50,000
Price history 30 days 90 days 365 days
Basket items 5 15 20
Attribution Required Optional Optional
Cost Free $99/mo Contact us

New registrations start on the Free tier. The Free tier is for evaluation, personal projects, research, and products that are free to end users; if you charge users for a product that includes Pinch data, a paid tier is required (see the API Terms). To upgrade to Registered ($99/mo), contact us or use the upgrade link after registering. For Partner access, get in touch.

MCP server for AI agents

Connect Claude, ChatGPT, or any MCP-compatible AI agent to live Australian grocery data. Choose remote (recommended) or local.

Remote MCP (recommended, no install required)
{
  "mcpServers": {
    "pinch-grocery": {
      "url": "https://pinch-app.com/api/mcp",
      "headers": {
        "Authorization": "Bearer pk_live_YOUR_KEY_HERE"
      }
    }
  }
}
Local MCP (requires Node.js)
{
  "mcpServers": {
    "pinch-grocery": {
      "command": "npx",
      "args": ["-y", "@pinch-app/mcp-server"],
      "env": {
        "PINCH_API_KEY": "pk_live_YOUR_KEY_HERE"
      }
    }
  }
}

Available tools

search_products Search grocery products with filters
get_product Get full product details by ID
compare_prices Compare prices across retailers by barcode
get_price_history Historical price data with stats
get_specials Current specials and promotions
get_cheapest Find cheapest option across all retailers
compare_basket Compare a grocery list across all retailers

Interactive API docs

Full interactive documentation with try-it-out functionality, code examples in multiple languages, and schema details: Open API docs

Authentication

All endpoints except /health require an API key. Pass it as a Bearer token in the Authorization header:

Authorization header
Authorization: Bearer pk_live_YOUR_KEY

Attribution

Every API response includes "data_source": "pinch". Attribution is required on the Free tier and optional on paid tiers: if you display Pinch data publicly on the Free tier, include a visible attribution (e.g., "Price data by Pinch") linking back to pinch-app.com.