# Pigu API — Baltic and Finnish marketplace (pigu.lt, 220.lv, kaup24.ee, hobbyhall.fi): EUR prices for everyone and for Pigu PLUS members, every seller's offer, delivery dates and fees, specs

> Keyword search in one Pigu Group shop (country lt/lv/ee/fi). Each row: product id and modification id (pass both to `product`), title, brand, URL, image, price in EUR that everyone pays, Pigu PLUS member price when the shop shows one, monthly instalment from, rating and review count, seller id and supply type (1P = sold by the shop, 3P = marketplace seller), delivery promise, promotion labels, sponsored flag, category id (feeds `category`). Plus the shop's own total and page count. Page on with `next_cursor`: it keeps every page in page 1's result set and drops rows already returned. One of `query` or `cursor` is required.
> ReefAPI engine `pigu` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/pigu/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/pigu/v1/search — 3 credits
Keyword search in one Pigu Group shop (country lt/lv/ee/fi). Each row: product id and modification id (pass both to `product`), title, brand, URL, image, price in EUR that everyone pays, Pigu PLUS member price when the shop shows one, monthly instalment from, rating and review count, seller id and supply type (1P = sold by the shop, 3P = marketplace seller), delivery promise, promotion labels, sponsored flag, category id (feeds `category`). Plus the shop's own total and page count. Page on with `next_cursor`: it keeps every page in page 1's result set and drops rows already returned. One of `query` or `cursor` is required.

**Parameters:**
- `query` (string, optional) — Search words, as typed in the shop's search box (any language the shop indexes; the local language gives the most rows). Required unless `cursor` is given.
- `country` (enum, optional, default "lt") — Which shop: lt = pigu.lt (Lithuania), lv = 220.lv (Latvia), ee = kaup24.ee (Estonia), fi = hobbyhall.fi (Finland). Prices are EUR in all four. [one of: lt, lv, ee, fi]
- `min_price` (number, optional) — Lowest price in EUR. The shop applies the range to the LOWEST payable price, which is the member price when the row has one, so a row's `price` (for everyone) can be above `max_price` (measured: 200-400 returned rows with `price` up to 487 and `member_price` in range).
- `max_price` (number, optional) — Highest price in EUR (same rule as `min_price`).
- `sort` (enum, optional, default "best_selling") — best_selling (the shop's default), price_asc, price_desc, delivery (fastest delivery first) or rating. Price sorts order by the lowest payable price. [one of: best_selling, price_asc, price_desc, delivery, rating]
- `page` (integer, optional, default 1) — Result page, starting at 1 (59-60 rows per page, measured).
- `result_set` (enum, optional) — The shop answers a keyword from one of two result sets, picked per request (lego technic: 451 or 261 hits). Pass the `result_set` of page 1 when asking for later pages; the engine asks again until the shop answers from that set (up to 3 times). `next_cursor` does this for you. [one of: algolia, classic, landing]
- `cursor` (string, optional) — `next_cursor` from the previous search answer. Carries the query, country, filters, sort, next page, page 1's result set and the product ids already returned; rows returned on earlier pages are dropped and counted in `duplicates_dropped`. Use it alone.

**Returns:** results[]{product_id, modification_id, title, brand, url, image, currency, price, member_price, installment_from_per_month, rating, review_count, available, item_status, supply_type, seller_id, delivery_promise, delivery_label, labels, category_id, sponsored} + total, page, last_page, has_more, next_cursor, result_set, result_set_requested, result_set_changed, duplicates_dropped, search_kind, redirected_to

**Example request body:**
```json
{
  "query": "lego technic",
  "country": "lt"
}
```

### POST https://api.reefapi.com/pigu/v1/category — 3 credits
One category listing of a Pigu Group shop, by the category id a search row carries in `category_id` (or the id in a shop category URL's listing). Same row fields as `search`, plus the category title and the shop's own product count.

**Parameters:**
- `category_id` (string, required) — Numeric category id, e.g. 85 = mobile phones on pigu.lt. Ids are per shop: take them from a search row of the same country.
- `country` (enum, optional, default "lt") — Which shop: lt = pigu.lt (Lithuania), lv = 220.lv (Latvia), ee = kaup24.ee (Estonia), fi = hobbyhall.fi (Finland). Prices are EUR in all four. [one of: lt, lv, ee, fi]
- `sort` (enum, optional, default "best_selling") — best_selling (the shop's default), price_asc, price_desc, delivery (fastest delivery first) or rating. Price sorts order by the lowest payable price. [one of: best_selling, price_asc, price_desc, delivery, rating]
- `page` (integer, optional, default 1) — Result page, starting at 1 (59-60 rows per page, measured).

**Returns:** results[]{same as search} + category{id, title}, total, page, last_page, has_more

**Example request body:**
```json
{
  "category_id": "85",
  "country": "lt"
}
```

### POST https://api.reefapi.com/pigu/v1/product — 2 credits
One product of a Pigu Group shop by its product id AND modification id (both are on every search/category row). Returns the main offer's price for everyone and member price, main seller with rating, every seller's offer with both prices, rating count and delivery date, the delivery options with date and fee, specification table, description, images.

**Parameters:**
- `product_id` (string, required) — Product id exactly as a search row returns it (also the `id=` number of the product URL).
- `modification_id` (string, required) — Modification id from the same search row. A modification that belongs to another product answers NOT_FOUND.
- `country` (enum, optional, default "lt") — Which shop: lt = pigu.lt (Lithuania), lv = 220.lv (Latvia), ee = kaup24.ee (Estonia), fi = hobbyhall.fi (Finland). Prices are EUR in all four. [one of: lt, lv, ee, fi]

**Returns:** product{product_id, modification_id, title, brand, currency, price, member_price, rating, review_count, question_count, available, supply_type, seller{id, name, url, rating}, other_offers_count, other_offers_from_price, offers[]{seller_name, seller_url, seller_id, seller_rating, seller_rating_count, supply_type, price, member_price, delivery_date}, delivery[]{method, date, fee}, category_id, category_name, category_url, manufacturer_code, specifications[]{name, value}, description, images[]}

**Example request body:**
```json
{
  "product_id": "79734775",
  "modification_id": "101444835",
  "country": "lt"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=pigu
- Human docs page: https://reefapi.com/docs/pigu
- Overview page: https://reefapi.com/pigu-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
