# Coupang API scraper - live keyword search and product lookup for coupang.com, South Korea's largest e-commerce marketplace. Prices in KRW with the list price and discount behind them, rocket-delivery filter, ratings and review counts, delivery ETA. No account, no browser.

> Search Coupang by keyword, in Korean or English, optionally narrowed by price range and to Coupang's own rocket-delivery inventory, and sorted by price, recency or sales. Every row carries the item and product ids, the product url, the title, the price as a number in KRW with the formatted string beside it, the list price and the discount percentage where Coupang shows one, the rating and review count on almost every row (99.0% of 420 measured rows; a brand-new listing has neither), whether it is in stock, the promised delivery date, the shipping terms where Coupang states them (94.0% of the same 420 rows), and whether the row is a sponsored placement. 🔴 ONE PAGE ONLY: Coupang's search route serves up to 60 rows and its own pagination is broken (page 2 comes back empty and offset silently repeats page 1), so there is no page parameter and no way past 60 - narrow the keyword or the price range instead. 🔴 Coupang never answers a search with an empty page: a keyword it cannot match is answered with 60 unrelated recommendations and Coupang publishes no flag saying so, so this endpoint derives one - see `possible_no_match`. 🔴 One product id can appear on several rows: Coupang lists each sellable variant (pack size, colour) as its own row at its own price, so `item_id` is the unique key, not `product_id`.
> ReefAPI engine `coupang` · 2 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/coupang/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 or blocked calls are free.
- **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, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /coupang/v1/search — 1 credit
Search Coupang by keyword, in Korean or English, optionally narrowed by price range and to Coupang's own rocket-delivery inventory, and sorted by price, recency or sales. Every row carries the item and product ids, the product url, the title, the price as a number in KRW with the formatted string beside it, the list price and the discount percentage where Coupang shows one, the rating and review count on almost every row (99.0% of 420 measured rows; a brand-new listing has neither), whether it is in stock, the promised delivery date, the shipping terms where Coupang states them (94.0% of the same 420 rows), and whether the row is a sponsored placement. 🔴 ONE PAGE ONLY: Coupang's search route serves up to 60 rows and its own pagination is broken (page 2 comes back empty and offset silently repeats page 1), so there is no page parameter and no way past 60 - narrow the keyword or the price range instead. 🔴 Coupang never answers a search with an empty page: a keyword it cannot match is answered with 60 unrelated recommendations and Coupang publishes no flag saying so, so this endpoint derives one - see `possible_no_match`. 🔴 One product id can appear on several rows: Coupang lists each sellable variant (pack size, colour) as its own row at its own price, so `item_id` is the unique key, not `product_id`.

**Parameters:**
- `query` (string, required) — What to search for. Korean or English both work — Coupang's own index does the matching, and an English brand term (`airpods`, `canon`, `lg gram`) returns Korean-titled Korean listings. 🔴 Coupang never returns an empty page: a keyword with no match comes back as 60 unrelated recommendations, so check `possible_no_match` in the response before trusting a result set.
- `sort` (enum, optional, default "relevance") — Result ordering. Every value here was proven to change the result set against a 54-56/60 self-overlap noise floor. An unknown value is SILENTLY IGNORED by Coupang, so this parameter rejects one rather than pretending it applied. [one of: relevance, price_asc, price_desc, newest, best_selling]
- `price_min` (integer, optional) — Lowest price in KRW (whole won, no decimals). Coupang treats the bound as approximate: with 10 000-20 000 requested, 55 of 59 rows came back inside the band and the widest stray was 22 400.
- `price_max` (integer, optional) — Highest price in KRW (whole won, no decimals). Approximate — see `price_min`.
- `rocket_delivery` (boolean, optional, default false) — Only 로켓배송 / 와우 fast-delivery listings — Coupang's own next-day and dawn delivery inventory. Proven: 38/60 overlap with the unfiltered page, and the rows come back carrying 로켓/와우 shipping strings.
- `max_rotations` (integer, optional, default 3) — How many datacentre exits to try before giving up. Raise it only if you are seeing transient UPSTREAM_HTTP.

**Returns:** items[]{item_id, product_id (NOT unique - Coupang lists each variant of a product as its own row), vendor_item_id, name, url, price (number, KRW), price_display, currency, list_price, discount_percent, in_stock, sold_out_text, low_stock, rating (number), review_count, rating_scale (null - Coupang publishes no scale), rating_ratio, seller (null - Coupang publishes no seller on the search surface), brand (null except on R.LUX luxury rows), shipping, delivery_eta, cash_reward, is_sponsored, image, rank}, count, possible_no_match (boolean - OUR derived flag, not Coupang's), page_limit_reached, filters{}

**Example request body:**
```json
{
  "query": "무선이어폰"
}
```

### POST /coupang/v1/product — 1 credit
Look up ONE Coupang product by id - search-grade fields. 🔴 Read this before you call it: Coupang's product-detail page is closed to unauthenticated clients, so this action answers by asking Coupang's own search index for the id. That means you get exactly the fields a search card carries, complete and correct, and NOT a full product record. You DO get: the title, the price as a number in KRW, the list price and discount, the currency, whether it is in stock, the rating and review count, the thumbnail, the shipping terms and promised delivery date, and the item / vendor-item ids. You do NOT get: the product description, the specification table, the image gallery (one thumbnail only), the seller or vendor name, the option/variant attribute list, the stock quantity, the category path, or any review text - Coupang does not publish any of those on the surface that is open to us. 🔴 A Coupang product id covers several sellable items at DIFFERENT prices (one coffee product measured at 4 010 / 5 700 / 5 990 / 6 250 / 6 270 / 8 550 KRW for different pack sizes), so this action returns EVERY item Coupang lists under the id in `items[]` and names the one Coupang ranks first as `item` - use `items[]` if you need the cheapest or a specific pack. A dead or invented id returns NOT_FOUND rather than the recommendations Coupang backfills with.

**Parameters:**
- `product_id` (string, required) — A Coupang product id (the digits in `coupang.com/vp/products/<id>`), an item id, or a full Coupang product url — all three are accepted. Every `search` row returns `product_id`, `item_id` and `url`.
- `max_rotations` (integer, optional, default 3) — How many datacentre exits to try before giving up. Raise it only if you are seeing transient UPSTREAM_HTTP.

**Returns:** item{...the representative item, same shape as a search row...}, items[]{every item Coupang lists under this product id, same shape}, item_count, price_range{min, max, currency} when the items differ in price, product_id, url

**Example request body:**
```json
{
  "product_id": "9034631075"
}
```

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