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

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.

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.

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.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/coop/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "milk"
  }
}
Captured response
{
  "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"
  }
}
Actions

What the Co-op API does

ActionDescriptionConcrete use caseKey params
searchSearch 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, ...
categoryWalk 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, ...
dealsEvery 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/detailThe 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
categoriesCo-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
Code samples

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"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.coop.search with {"query":"milk"}.
Use cases

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.
FAQ

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.

docs / coop

Co-op

Co-op

base /coop/v15 endpoints
post/coop/v1/category2 credits

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.

ParameterAllowed / rangeDescription
categoryrequiredChocolate, crisps, biscuits and snacks · Beer, wine and spirits · Food cupboard · Chilled and deli · Pizza, pasta and ready meals · Water, juice and soft Drinks · Frozen foods · Breakfast cereals, tea and coffee · Fruit, veg and salad · Meat, fish and poultry · Household essentials · Vegetarian, vegan and gluten free · Bakery and cakes · Health and beauty · Milk, butter and eggs · Free FromThe Co-op grocery category to walk through, spelled exactly as the `categories` action returns it.
product_typeoptionalfoodPage · winePage · spiritsPageNarrow to one of Co-op's three page families. `winePage` and `spiritsPage` rows additionally carry ABV, country, grape and brand.
deals_only = falseoptional—true: only products Co-op's index flags as being in a deal (370 of 3,412 when measured). Note `in_deal` has a third state, null, on rows where the index does not say — those are excluded by this filter.
sort = relevanceoptionalrelevance · price_asc · price_descResult order. Co-op's price sorts run on the index's LISTED price, so a product whose deal price is lower still sorts by the listed one — sort on `price` yourself if you need the deal-aware order.
page = 1optional1–100Result page, 1-based. `page_count` says how many there are; a page past the end comes back empty rather than repeating the last one (measured).
page_size = 48optional1–100Products per page (1-100, default 48 — the size Co-op's own site asks for).
Try in playground →
post/coop/v1/deals2 credits

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.

ParameterAllowed / rangeDescription
deal_typeoptionalmember · everyone · aldi_price_matchOnly deals of this kind. Omit for every current deal.
categoryoptionalChocolate, crisps, biscuits and snacks · Beer, wine and spirits · Food cupboard · Chilled and deli · Pizza, pasta and ready meals · Water, juice and soft Drinks · Frozen foods · Breakfast cereals, tea and coffee · Fruit, veg and salad · Meat, fish and poultry · Household essentials · Vegetarian, vegan and gluten free · Bakery and cakes · Health and beauty · Milk, butter and eggs · Free FromOnly products in this Co-op grocery category, spelled exactly as `categories` returns it (and as `categories[]` on every row). Any category Co-op adds later is accepted too.
sort = relevanceoptionalrelevance · price_asc · price_descResult order. Co-op's price sorts run on the index's LISTED price, so a product whose deal price is lower still sorts by the listed one — sort on `price` yourself if you need the deal-aware order.
page = 1optional1–100Result page, 1-based. `page_count` says how many there are; a page past the end comes back empty rather than repeating the last one (measured).
page_size = 48optional1–100Products per page (1-100, default 48 — the size Co-op's own site asks for).
Try in playground →
post/coop/v1/product/detail3 credits

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.

ParameterAllowed / rangeDescription
product_idrequired—A product's `product_id` from any listing (the slug, e.g. 'lurpak-spreadable-salted-400g'), its full coop.co.uk product URL, or its numeric `retail_code`.
Try in playground →
post/coop/v1/categories1 credit

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.

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.