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.
Get an API key
Free tier: 30 requests/minute, 1,000/day, 30 days of price history. No credit card.
Quick start
curl "https://pinch-app.com/api/products/search?q=milk&limit=3" \
-H "Authorization: Bearer pk_live_YOUR_KEY" curl "https://pinch-app.com/api/compare/9300675016902" \
-H "Authorization: Bearer pk_live_YOUR_KEY" 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"}]}' {
"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.
/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).
/products/search Full-text search across all products. Falls back to fuzzy matching for special characters.
q required Search queryretailer Filter: Woolworths, Coles, Aldi, Harris Farmcategory Filter by category nameon_special true for specials onlysort relevance (default), price_asc, price_desc, unit_price_asclimit 1-50, default 20offset Pagination offset, default 0/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).
/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/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.
/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 retailercategory Filter by categorylimit 1-50, default 20offset Pagination offset, default 0/categories List all product categories with product counts.
/retailers Retailer statistics: product counts, specials counts, average prices, and last update time.
/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_storesRate 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.
{
"mcpServers": {
"pinch-grocery": {
"url": "https://pinch-app.com/api/mcp",
"headers": {
"Authorization": "Bearer pk_live_YOUR_KEY_HERE"
}
}
}
} {
"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: 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.