# Laced API — the UK sneaker and streetwear marketplace (laced.com): search and brand / series collections with every size's lowest asking price, and one product with each size's live lowest ask, shipping and return fee, barcode and 28-day sales count, priced for the delivery country (100 countries) in GBP, EUR, USD or AED. No login, no key.

> Search Laced by model, colourway or style code, with filters for brand, product type, colour, gender, age group, size and price. Each row carries every size's lowest asking price for the chosen delivery country and currency.
> ReefAPI engine `laced` · 4 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/laced/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/laced/v1/search — 2 credits
Search Laced by model, colourway or style code, with filters for brand, product type, colour, gender, age group, size and price. Each row carries every size's lowest asking price for the chosen delivery country and currency.

**Parameters:**
- `query` (string, optional) — What to search for: a model (dunk low, samba, gel-kayano 14), a colourway (panda, grey fog) or a style code (DD1391-103). Leave empty to browse with filters only.
- `delivery_country` (enum, optional, default "GB") — The country the item would be delivered to (ISO code, 100 countries; UK is accepted for GB). Laced prices every size per delivery country: EU and US prices include taxes and duties, so the same size costs more there than in the UK (measured: £148 to GB, €235 to DE, $230 to the US). [one of: AL, AM, AW, AU, AT, BH, BE, BM, BA, BW, BN, BG, KH, CA, KY, CL, CN, CO, CR, HR, CY, CZ, DK, DO, EE, FK, FI, FR, GF, GE, DE, GI, GR, GL, GP, GU, GG, HK, HU, IS, IN, IE, IM, IL, IT, JP, JE, JO, KZ, KW, LV, LB, LI, LT, LU, MO, MY, MT, MQ, YT, MD, MC, ME, NL, NC, NZ, MK, NO, OM, PW, PH, PL, PT, PR, QA, RO, RE, BL, SA, RS, SG, SK, SI, ZA, KR, ES, SE, CH, TW, TR, UA, AE, GB, US, UZ, VE, VN, VI, ZM, ZW]
- `currency` (enum, optional) — Currency of every price: GBP, EUR, USD or AED (the site's own four). Default follows the delivery country: GB → GBP, US → USD, AE → AED, an EU country → EUR, anywhere else → GBP. [one of: GBP, EUR, USD, AED]
- `brand` (string, optional) — Only this brand as the site writes it (Nike, Adidas, Air Jordan, Asics, New Balance, UGG, PUMA, On-Running, HOKA, Lego, Salomon, Crocs, Yeezy, Supreme, POP MART, Pokemon …; case does not matter). An unknown brand returns 0 rows.
- `product_type` (enum, optional) — Only this product type. [one of: Shoes, Toys, Boots, Clogs, Slippers, Sweatshirts & Hoodies, T-Shirts, Figurines, Trousers, Sandals, Trading Card Boxes, Shorts, Watches, Football Shirts, Jackets, Tracksuits, Hats, Games Console, Shirts, Trading Card Packs, Trading Card Singles, Backpack]
- `color` (enum, optional) — Only this main colour. [one of: Black, White, Grey, Blue, Green, Multi-colour, Beige, Pink, Brown, Cream, Red, Yellow, Purple, Orange, Tan, Teal, Silver, Sail, Burgundy, Gold, Bone, Rust, Copper, Bronze]
- `gender` (enum, optional) — Only products the site tags with this gender. Most products are tagged unisex (24,114 of 31,780 size records), so men / women are narrow. [one of: men, women, unisex]
- `age_category` (enum, optional) — Only this age group (Adult, Grade School, Pre School, Toddler, Kids, Infant). [one of: Adult, Grade School, Pre School, Toddler, Kids, Infant]
- `size` (string, optional) — Only products with this size for sale, in the `size_system` sizing (UK by default): 9, 10.5, kids 10.5c, EU 42.5 or 40 2/3, letter sizes S/M/L/XL, One Size. Each row then carries matched_size and matched_size_price (the lowest ask for THAT size).
- `size_system` (enum, optional, default "uk") — Which sizing `size` is written in. [one of: uk, eu, us]
- `min_price` (number, optional) — Only products with at least one size whose lowest ask (for the delivery country, in the currency) is at least this much. The row's matched_size_price is that size's price; price_from (the cheapest size of the product) can be lower.
- `max_price` (number, optional) — Only products with at least one size whose lowest ask is at most this much (see min_price).
- `sort` (enum, optional, default "relevance") — Result order. price_asc orders by the lowest ask in the delivery area (UK, EU or rest of world), the site's own price sort; there is no descending price order on the site. [one of: relevance, price_asc, newest, recently_sold]
- `limit` (integer, optional, default 40) — Products per page, 1-100.
- `page` (integer, optional, default 1) — Page number from 1. The source serves the first 1,000 products of any search only: page × limit cannot pass 1,000 (narrow with filters instead).

**Returns:** rows[]: style_code, slug (give it to `product`), url, title, brand, product_type, color, gender, age_category, release_date, delivery_country, currency, price_from (the cheapest size's lowest ask), price_from_size{uk, eu, us}, price_to (the dearest size's lowest ask), sizes_available, size_prices[]{size_id, uk, eu, us, price}, matched_size{uk, eu, us} + matched_size_price (only with a size or price filter, or the price sort), sold_last_28_days, distinct_sellers, categories[]{name, collection}, image. Prices are the search index's figures and can trail the live product page by minutes. meta: total (the index's count), reachable (the first 1,000 only), page, limit, has_more, sort, filters_applied, delivery_country, currency, warnings.

**Example request body:**
```json
{
  "query": "dunk low"
}
```

### POST https://api.reefapi.com/laced/v1/collection — 2 credits
One Laced collection — a brand (nike), a brand series (nike/dunk-low) or a group (best-sellers) — with the same filters, sort and row shape as `search`.

**Parameters:**
- `collection` (string, required) — A collection as its laced.com path: a brand (nike, adidas, air-jordan, asics, ugg), a brand series (nike/dunk-low, air-jordan/air-jordan-4, asics/asics-gel-kayano-14) or a group (best-sellers, new-in). Every row's categories[].collection can be given here as is; a full laced.com URL works too.
- `delivery_country` (enum, optional, default "GB") — The country the item would be delivered to (ISO code, 100 countries; UK is accepted for GB). Laced prices every size per delivery country: EU and US prices include taxes and duties, so the same size costs more there than in the UK (measured: £148 to GB, €235 to DE, $230 to the US). [one of: AL, AM, AW, AU, AT, BH, BE, BM, BA, BW, BN, BG, KH, CA, KY, CL, CN, CO, CR, HR, CY, CZ, DK, DO, EE, FK, FI, FR, GF, GE, DE, GI, GR, GL, GP, GU, GG, HK, HU, IS, IN, IE, IM, IL, IT, JP, JE, JO, KZ, KW, LV, LB, LI, LT, LU, MO, MY, MT, MQ, YT, MD, MC, ME, NL, NC, NZ, MK, NO, OM, PW, PH, PL, PT, PR, QA, RO, RE, BL, SA, RS, SG, SK, SI, ZA, KR, ES, SE, CH, TW, TR, UA, AE, GB, US, UZ, VE, VN, VI, ZM, ZW]
- `currency` (enum, optional) — Currency of every price: GBP, EUR, USD or AED (the site's own four). Default follows the delivery country: GB → GBP, US → USD, AE → AED, an EU country → EUR, anywhere else → GBP. [one of: GBP, EUR, USD, AED]
- `brand` (string, optional) — Only this brand as the site writes it (Nike, Adidas, Air Jordan, Asics, New Balance, UGG, PUMA, On-Running, HOKA, Lego, Salomon, Crocs, Yeezy, Supreme, POP MART, Pokemon …; case does not matter). An unknown brand returns 0 rows.
- `product_type` (enum, optional) — Only this product type. [one of: Shoes, Toys, Boots, Clogs, Slippers, Sweatshirts & Hoodies, T-Shirts, Figurines, Trousers, Sandals, Trading Card Boxes, Shorts, Watches, Football Shirts, Jackets, Tracksuits, Hats, Games Console, Shirts, Trading Card Packs, Trading Card Singles, Backpack]
- `color` (enum, optional) — Only this main colour. [one of: Black, White, Grey, Blue, Green, Multi-colour, Beige, Pink, Brown, Cream, Red, Yellow, Purple, Orange, Tan, Teal, Silver, Sail, Burgundy, Gold, Bone, Rust, Copper, Bronze]
- `gender` (enum, optional) — Only products the site tags with this gender. Most products are tagged unisex (24,114 of 31,780 size records), so men / women are narrow. [one of: men, women, unisex]
- `age_category` (enum, optional) — Only this age group (Adult, Grade School, Pre School, Toddler, Kids, Infant). [one of: Adult, Grade School, Pre School, Toddler, Kids, Infant]
- `size` (string, optional) — Only products with this size for sale, in the `size_system` sizing (UK by default): 9, 10.5, kids 10.5c, EU 42.5 or 40 2/3, letter sizes S/M/L/XL, One Size. Each row then carries matched_size and matched_size_price (the lowest ask for THAT size).
- `size_system` (enum, optional, default "uk") — Which sizing `size` is written in. [one of: uk, eu, us]
- `min_price` (number, optional) — Only products with at least one size whose lowest ask (for the delivery country, in the currency) is at least this much. The row's matched_size_price is that size's price; price_from (the cheapest size of the product) can be lower.
- `max_price` (number, optional) — Only products with at least one size whose lowest ask is at most this much (see min_price).
- `sort` (enum, optional, default "relevance") — Result order. price_asc orders by the lowest ask in the delivery area (UK, EU or rest of world), the site's own price sort; there is no descending price order on the site. [one of: relevance, price_asc, newest, recently_sold]
- `limit` (integer, optional, default 40) — Products per page, 1-100.
- `page` (integer, optional, default 1) — Page number from 1. The source serves the first 1,000 products of any search only: page × limit cannot pass 1,000 (narrow with filters instead).

**Returns:** rows[]: style_code, slug (give it to `product`), url, title, brand, product_type, color, gender, age_category, release_date, delivery_country, currency, price_from (the cheapest size's lowest ask), price_from_size{uk, eu, us}, price_to (the dearest size's lowest ask), sizes_available, size_prices[]{size_id, uk, eu, us, price}, matched_size{uk, eu, us} + matched_size_price (only with a size or price filter, or the price sort), sold_last_28_days, distinct_sellers, categories[]{name, collection}, image. Prices are the search index's figures and can trail the live product page by minutes. meta: total (the index's count), reachable (the first 1,000 only), page, limit, has_more, sort, filters_applied, delivery_country, currency, warnings. data.collection: name, type (Brand / BrandCategory / Group), path, parents[].

**Example request body:**
```json
{
  "collection": "nike/dunk-low"
}
```

### POST https://api.reefapi.com/laced/v1/product — 3 credits
One product, live: every size with its lowest asking price, shipping fee, return fee, whether taxes and duties are included, barcode (GTIN) and listing id, for the chosen delivery country and currency; style code, brand, colour, release year, 28-day sales count, description, images. Give `slug` (from a search row) or `style_code`.

**Parameters:**
- `slug` (string, optional) — The product's `slug` from a search row, as is, or its laced.com/products/... URL. Give `slug` or `style_code`.
- `style_code` (string, optional) — A manufacturer style code (DD1391-103, 1203A537-020, FY5158). Give `slug` or `style_code`.
- `delivery_country` (enum, optional, default "GB") — The country the item would be delivered to (ISO code, 100 countries; UK is accepted for GB). Laced prices every size per delivery country: EU and US prices include taxes and duties, so the same size costs more there than in the UK (measured: £148 to GB, €235 to DE, $230 to the US). [one of: AL, AM, AW, AU, AT, BH, BE, BM, BA, BW, BN, BG, KH, CA, KY, CL, CN, CO, CR, HR, CY, CZ, DK, DO, EE, FK, FI, FR, GF, GE, DE, GI, GR, GL, GP, GU, GG, HK, HU, IS, IN, IE, IM, IL, IT, JP, JE, JO, KZ, KW, LV, LB, LI, LT, LU, MO, MY, MT, MQ, YT, MD, MC, ME, NL, NC, NZ, MK, NO, OM, PW, PH, PL, PT, PR, QA, RO, RE, BL, SA, RS, SG, SK, SI, ZA, KR, ES, SE, CH, TW, TR, UA, AE, GB, US, UZ, VE, VN, VI, ZM, ZW]
- `currency` (enum, optional) — Currency of every price: GBP, EUR, USD or AED (the site's own four). Default follows the delivery country: GB → GBP, US → USD, AE → AED, an EU country → EUR, anywhere else → GBP. [one of: GBP, EUR, USD, AED]

**Returns:** product{product_id, slug, url, style_code, mpn, title, brand, brand_id, colour, product_type, category, release_year, description, fitting_note, sold_last_28_days, delivery_country, currency, lowest_price, lowest_price_size{uk, eu, us}, highest_price, sizes_total, sizes_available, premium_shipping_available, sizes[]{size_id, uk, eu, us, label, gtin, available, price (the lowest ask, standard delivery), shipping_method, shipping_fee, return_fee, discount, price_includes_tax_duties, free_shipping_eligible, listing_id, other_offers[]{shipping_method, price, shipping_fee} (premium delivery where offered)}, images[], affiliate_links}. meta.lowest_check: the source's own lowest/highest size id against ours.

**Example request body:**
```json
{
  "slug": "nike-dunk-low-grey-fog"
}
```

### POST https://api.reefapi.com/laced/v1/suggest — 1 credit
The site's own search suggestions for the start of a query (jordan → jordan 4, jordan 5 …), with the site's popularity score.

**Parameters:**
- `query` (string, required) — The start of a search (two characters or more).
- `limit` (integer, optional, default 10) — How many suggestions, 1-20.

**Returns:** rows[]: suggestion, popularity

**Example request body:**
```json
{
  "query": "jordan"
}
```

## 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=laced
- Human docs page: https://reefapi.com/docs/laced
- Overview page: https://reefapi.com/laced-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
