Co-op API & Scraper
Co-op API returns live Co-op data as clean JSON for co-op The primary endpoint, search, returns matching records including product id, retail code, entry id, title and gtin format.
🤖 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.
Developers reach for it when they need to track product listings, prices, availability, variants and reviews without maintaining one-off scraping code or separate API contracts. If you were about to build or fix a Co-op scraper, this API is the maintained alternative — it returns the same data as clean JSON, with the proxies, rotation and anti-bot handling already solved. This page covers the live example, request shape, response shape and available actions: search, category, deals, product/detail. Every request uses the same ReefAPI envelope, one API key and one shared credit pool, so it fits alongside the rest of your data stack.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/coop/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "milk"
}
}{
"ok": true,
"meta": {
"api": "coop",
"endpoint": "search",
"mode": "live",
"latency_ms": 924.9,
"record_count": 48,
"bytes": 47437,
"cache_hit": false,
"country": "uk",
"upstream_requests": 1,
"pagination": {
"page": 1,
"page_size": 48,
"total": 137,
"has_more": true
},
"charged_credits": 2,
"version": "0.1.0",
"request_id": "f7137d7e0eb74b68",
"queue_ms": 1.5
},
"data": {
"results": [
{
"product_id": "milkybar-white-chocolate-sharing-bar-90g",
"retail_code": "710596",
"entry_id": "68G4WaYRH3UPuTnZ7pf5W8",
"title": "Milkybar White Chocolate Sharing Bar 90g",
"gtin": "8000300430493",
"gtin_format": "EAN-13",
"ean_raw": "8000300430493",
"price": 2.55,
"currency": "GBP",
"regular_price": null,
"price_is_deal": false,
"member_price": null,
"member_offer": null,
"member_program": null,
"aldi_price_match": false,
"deal_text": null,
"deal_ends_at": null,
"member_discount_percent": null,
"discount_percent": null,
"unit_price": 28.33,
"unit": "kg",
"unit_price_source": "computed_from_pack_size",
"pack_size": "90g",
"brand": null,
"categories": [
"Chocolate, crisps, biscuits and snacks"
],
"food_type": "Chocolate",
"product_type": "foodPage",
"in_deal": false,
"promotions": [],
"availability": "order_online",
"order_url": "https://shop.coop.co.uk/product/milkybar-white-chocolate-sharing-bar-90g--37f80d10-82aa-410c-8829-e2863d0a5b7a",
"url": "https://www.coop.co.uk/products/milkybar-white-chocolate-sharing-bar-90g",
"image": "https://images.ctfassets.net/6jpeaipefazr/7EAjJfGouT4kCmZ8GwQaY1/b8fd90b60b51d4618339affee86c7ec9/8000300430493.jpg",
"description": null,
"updated_at": "2026-10-01T07:14:33.888000+00:00",
"first_published_at": "2025-06-09T09:19:39.588000+00:00"
},
{
"product_id": "milky-way-nougat-and-milk-chocolate-snack-bar-43g",
"retail_code": "878134",
"entry_id": "4e5YqoARry233Fy8dJONYI",
"title": "Milky Way Nougat & Milk Chocolate Snack Bar 43g",
"gtin": "5000159550512",
"gtin_format": "EAN-13",
"ean_raw": "5000159550512",
"price": 1.2,
"currency": "GBP",
"regular_price": null,
"price_is_deal": false,
"member_price": null,
"member_offer": null,
"member_program": null,
"aldi_price_match": false,
"deal_text": null,
"deal_ends_at": null,
"member_discount_percent": null,
"discount_percent": null,
"unit_price": 27.91,
"unit": "kg",
"unit_price_source": "computed_from_pack_size",
"pack_size": "2x21.5g",
"brand": null,
"categories": [],
"food_type": null,
"product_type": "foodPage",
"in_deal": null,
"promotions": [],
"availability": "in_store_only",
"order_url": null,
"url": "https://www.coop.co.uk/products/milky-way-nougat-and-milk-chocolate-snack-bar-43g",
"image": "https://images.ctfassets.net/6jpeaipefazr/5kToS0Gc3S16Oz98shGrAo/e387875b90dc1054f381291e0c6d109d/5000159550512.jpg",
"description": null,
"updated_at": "2026-10-01T07:10:55.769000+00:00",
"first_published_at": "2025-03-25T09:43:34.314000+00:00"
},
{
"product_id": "cadbury-milk-tray-312g",
"retail_code": "895592",
"entry_id": "XXUaONM78f5jmoYIVfKTr",
"title": "Cadbury Milk Tray 312g",
"gtin": "7622202278457",
"gtin_format": "EAN-13",
"ean_raw": "7622202278457",
"price": 7.7,
"currency": "GBP",
"regular_price": null,
"price_is_deal": false,
"member_price": null,
"member_offer": null,
"member_program": null,
"aldi_price_match": false,
"deal_text": null,
"deal_ends_at": null,
"member_discount_percent": null,
"discount_percent": null,
"unit_price": 24.68,
"unit": "kg",
"unit_price_source": "computed_from_pack_size",
"pack_size": "312g",
"brand": null,
"categories": [],
"food_type": "Chocolate",
"product_type": "foodPage",
"in_deal": null,
"promotions": [],
"availability": "in_store_only",
"order_url": null,
"url": "https://www.coop.co.uk/products/cadbury-milk-tray-312g",
"image": "https://images.ctfassets.net/6jpeaipefazr/cp4RRY8RoL8i3MV1dq2ng/438acda0f3b6a0c1824a618dd985a9be/7622202278457.jpg",
"description": null,
"updated_at": "2026-10-01T07:27:03.692000+00:00",
"first_published_at": "2026-02-02T01:27:04.678000+00:00"
}
],
"count": 48,
"total_results": 137,
"page": 1,
"page_size": 48,
"page_count": 3,
"country": "uk",
"currency": "GBP",
"price_source": "search_index",
"price_note": "Prices here are Co-op's own search index, made deal-aware. The index is refreshed daily and on 1 product in 34 it lagged behind that product's page; `product/detail` reads the page itself and is the authority for the price of the day.",
"sort_applied": "relevance",
"query": "milk"
}
}What the Co-op API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Co-op's UK grocery catalogue by keyword. Every product comes back with the barcode (GTIN/EAN), the price without membership, the Co-op Member price kept separately, the pre-deal price when a deal cut it, the computed per-kg or per-litre unit price, the pack size, every live deal with its end date, the category path and whether Co-op lets you order the item online or only shows you a shop. Filter by category, page family or deals; sort by price. | Pricing teams call search to search Co-op's UK grocery catalogue by keyword. | query, category, product_type, deals_only, sort, ... |
| category | Walk one Co-op grocery category end to end — same rows as `search`, no keyword. Use it to pull a whole shelf (for example 'Milk, butter and eggs') with barcodes and prices, page by page. | Marketplace operators call category to get walk one Co-op grocery category end to end. | category, product_type, deals_only, sort, page, ... |
| deals | Every Co-op product currently in a deal, with the deal's own wording, price and end date: Co-op Member prices, deals open to everyone and Aldi Price Match lines. Optionally only one kind of deal, or only one category. | Catalog enrichment teams call deals to get every Co-op product currently in a deal, with the deal's own wording, price and end date. | deal_type, category, sort, page, page_size |
| product/detail | The full record of one Co-op product, read from the product page itself and from Co-op's index together: the price the page is showing today, whether that price is a Member price, the was-price, the unit price exactly as Co-op prints it, the pack size, the barcode with a second independent witness, every live deal, all images, the ordering link and — when the page and the index disagree about the price — both numbers and a `price_mismatch` flag. | Retail analysts call product/detail to get the full record of one Co-op product, read from the product page itself and from Co-op's inde…. | product_id |
| categories | Co-op's own category counters: every grocery category, food type and page family with the number of products in it, plus how many products are in a deal right now. One cheap call; the values are exactly what `category`, `product_type` and `deals_only` accept. | Pricing teams call categories to get co-op's own category counters. | none |
Call search from your stack
curl -X POST https://api.reefapi.com/coop/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"milk"}'import requests
r = requests.post(
"https://api.reefapi.com/coop/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "milk"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/coop/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "milk"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.coop.search with {"query":"milk"}.Who uses this API and why
- Pricing teams use Co-op to search Co-op's UK grocery catalogue by keyword.
- Marketplace operators use Co-op to get walk one Co-op grocery category end to end.
- Catalog enrichment teams use Co-op to get every Co-op product currently in a deal, with the deal's own wording, price and end date.
- Retail analysts use Co-op to get the full record of one Co-op product, read from the product page itself and from Co-op's inde….
- Pricing teams use Co-op to get co-op's own category counters.
Questions developers ask before integrating
What is the Co-op API?
Co-op API is a ReefAPI endpoint group for co-op It returns live JSON through POST requests under /coop/v1.
Is the Co-op API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Co-op calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Co-op login or account?
No login to Co-op 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 Co-op 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 Co-op API use?
Co-op actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Co-op from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call coop actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Co-op API a Co-op scraper?
It is the managed alternative to a DIY Co-op 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 co-op back as clean JSON.
Why does my Co-op scraper keep getting blocked?
Most Co-op scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.