2nd STREET
2nd STREET
/2ndstreet/v1/search3 creditsSearch 2nd STREET. ONE ROW IS ONE PHYSICAL SECOND-HAND PIECE held by ONE NAMED SHOP — the chain buys outright and resells, so there is no seller, no variant and no stock count; the size IS the row and every Japanese row carries the `shop_id` that holds it. JAPAN: 60 rows a page, fixed (the source swallowed per_page/limit/count and served 60 when 120 was asked for), and the WHOLE result set is walkable — page 20,000 of the unfiltered catalogue still returned 60 real rows and the page after the last one returns an EMPTY grid, never a repeat. Prices are whole yen and TAX-INCLUDED: `税込` appears on every product page measured and `税抜` on none, and the grid price was checked against 12 product pages' own microdata (12/12 identical). Japanese text — size, condition, colour, material — is republished exactly as the source wrote it; nothing is translated. UNITED STATES: the storefront's search answers at most 1,000 results (it prints '1000 results found' for nike, jacket and even `*`) over 28 pages of 36, so a large query ends with `stop_reason: cap_reached`. Pass `collection` instead of `keyword` to walk a collection without that cap, up to 250 rows a page; that surface additionally publishes `tags` (which carry the US branch name), `images` and `compare_at_price_usd`, which the keyword surface does not print.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = jp | optional | jp · us | Which storefront to ask. `jp` is 2nd STREET Japan (www.2ndstreet.jp, 1,609,435 items across 971 shops, prices in whole yen, tax included) and is the default; `us` is the US web store (ec.2ndstreetusa.com, prices in USD with cents). |
| keyword | optional | — | Free text over brand, item name and product code. Both scripts work and they are not the same query: measured ナイキ → 103,034 and NIKE → 103,096. Case is ignored (nike = NIKE, both 103,096). On the US store an unmatched word still returns a handful of fuzzy hits (zzzznotathing → 5), so an empty row set is rarer there than it looks. |
| category | optional | — | One 6-digit category id from the `categories` action — any level of the tree. Measured: 910001 メンズウェア 680,016 · 911008 トップス 117,394 · 810032 カーディガン 11,326. An unknown id returns 0 rows, not the catalogue. JAPAN ONLY. |
| brand | optional | — | One or more 6-digit brand ids from the `brands` action; repeat to OR them. Measured: 001106 (NIKE) → 101,310. 🔴 999999 is the chain's own その他ブランド bucket (119,435 items) and is NOT in the brand list. An empty or all-zero id is refused here because the source answers it with its entire catalogue. JAPAN ONLY. |
| shop | optional | — | One or more shop ids from the `stores` action — the branch physically holding the piece. Measured: 30251 → 2,296 on its own, and two shops together → 4,263. JAPAN ONLY. |
| prefecture | optional | — | One or more 2-digit prefecture codes (01 Hokkaido … 47 Okinawa) from `stores`. Measured: 13 (Tokyo) → 185,508, and 13+27 together → 327,816. JAPAN ONLY. |
| size | optional | — | One or more size ids from the `facets` action. Measured: id 1 (XXS) → 1,846, which is exactly the figure the source's own size list prints. JAPAN ONLY. |
| color | optional | — | One or more of the shop's own 23 colour ids. Measured: 2 (ブラック) → 25,551. `facets` returns the id→Japanese-name list. JAPAN ONLY. |
| condition | optional | A · B · C · D · NS | 2nd STREET's own condition grades. Measured on the whole catalogue: A 7,819, B 82,621, C 11,225, D 3,131, NS 1,264 for keyword=ナイキ. The facet surface reports NS as grade `S`; both spellings are accepted. JAPAN ONLY. |
| flag | optional | nflg · dflg · bflg | The chain's own extra switches. Only the three that were measured to BITE are offered: nflg 12,246 · dflg 19,243 · bflg 1,329,978 (of 1,609,435). Its form also prints aflg and rflg, which returned the whole catalogue unchanged, and eflg and sflg, which returned 0 on every query tried — all four are not published. JAPAN ONLY. |
| new_arrivals_only = false | optional | — | Shorthand for flag=nflg (新着入荷). JAPAN ONLY. |
| discounted_only = false | optional | — | Shorthand for flag=dflg — every marked-down piece. JAPAN ONLY. |
| store_transfer_only = false | optional | — | Shorthand for flag=bflg — only pieces 2nd STREET will move to another branch for collection. This is the real shop-vs-online axis and it bites: 1,329,978 of 1,609,435 can be transferred, 279,457 cannot. JAPAN ONLY. |
| price_min | optional | 0– | Minimum price in WHOLE YEN (JPY has no minor unit). Measured: ≥10,000 → 36,918 of 103,034. JAPAN ONLY — use us_price_min on the US store. |
| price_max | optional | 0– | Maximum price in whole yen. Measured: 0-3,000 → 614 of 103,034. JAPAN ONLY. |
| sort = recommend | optional | recommend · arrival · cost-low · cost-high · discount-high | Sort order. Omitted = 2nd STREET's own recommended order, which is REPRODUCIBLE: three identical calls returned the same 60 ids in the same order. The US store offers relevance and the two price orders only. |
| page = 1 | optional | 1–50000 | 1-based page. Japan: 60 rows a page and no result ceiling — the last page of a 103,034-row query was 1,718 with exactly 14 rows, and the page after the last one is EMPTY rather than a repeat. US keyword search stops at page 28 (the 1,000-result cap); the US collection surface was walked to page 60 and refuses page 150 with HTTP 400. |
| collection | optional | — | A US collection handle from the `categories` action (e.g. `new-arrivals`, `nike-1`). Walks that collection instead of the keyword search, which lifts the 1,000-result cap and adds `tags`, `images` and `compare_at_price_usd` to each row. UNITED STATES ONLY. |
| per_page = 60 | optional | 1–250 | Rows per page on the US collection surface, 1-250. Ignored elsewhere: the Japanese grid is a fixed 60 (120 was asked for and 60 came back) and the US keyword grid is a fixed 36. UNITED STATES + collection ONLY. |
| available_only = false | optional | — | Only pieces the US store will ship right now (its own availability filter). UNITED STATES ONLY. |
| us_price_min | optional | 0– | Minimum price in US DOLLARS (decimal, e.g. 49.90) for the US store's own price filter. UNITED STATES ONLY. |
| us_price_max | optional | 0– | Maximum price in US dollars. UNITED STATES ONLY. |
/2ndstreet/v1/product3 creditsOne piece in full. JAPAN publishes, and this returns separately: the printed tax-inclusive price, the pre-markdown price (通常価格) with the discount percentage the page prints, and the shipping charge — either the flat ¥770 (tax included, its own label) or the marker that the piece carries 個別送料, an individual delivery charge, in which case `shipping_jpy` is null rather than guessed. The condition comes back three ways with no translation invented: `condition` is the source's own text (中古B), `condition_grade` is the source's OWN filter code (B), and `condition_note` is the sentence the page prints about that grade. Attributes (colour, pattern, material, model number, size) are parsed out of the page's own 商品の詳細 table, which is category-shaped — a laptop prints OS/CPU/memory where a jacket prints 柄 and 素材・生地 — so the whole table is also returned verbatim as `specs`, plus the tailor's measurements in cm as `measurements_cm` (a figure printed as `/` means not measured and is omitted, not 0). 🔴 THE TWO STOCK SURFACES ARE KEPT APART: `available_online` is whether the page offers a cart, `store_transfer` is whether it offers 店舗取り寄せ to another branch, and `shop` is the branch that physically holds it, with its address, opening hours, buy-back hours and parking. A SOLD piece does not go OutOfStock — its id starts serving the shop's landing page with HTTP 200, and that is returned as NOT_FOUND here rather than as a success carrying somebody else's merchandise. UNITED STATES: price in dollars and in cents (the store publishes the same number both ways — 24990 and "249.90" — and they are never mixed), availability, the branch name from the product's own tags, and the Size/Color/Material/Condition table the store writes into the description.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = jp | optional | jp · us | Which storefront to ask. `jp` is 2nd STREET Japan (www.2ndstreet.jp, 1,609,435 items across 971 shops, prices in whole yen, tax included) and is the default; `us` is the US web store (ec.2ndstreetusa.com, prices in USD with cents). |
| goods_id | required | — | Japan: the 13-digit goods id, or the whole product URL (https://www.2ndstreet.jp/goods/detail/goodsId/2319227341949/shopsId/30251 → 2319227341949). The shop id in the URL is NOT needed — the page resolves from the goods id alone. United States: the Shopify handle, which on this store IS the same 13-digit id (e.g. 2341550599643). A non-numeric Japanese id is refused here, because the source answers one with HTTP 200 and its landing page. |
/2ndstreet/v1/categories3 creditsThe shop's own category tree with its own item counts. JAPAN: 16 top-level departments over three levels, every node carrying the count the chain publishes for it — メンズウェア 680,072 · シューズ 256,471 · レディースウェア 199,572 · 服飾雑貨他 178,470 · バッグ 139,302 · 家電・ビジュアル・オーディオ 40,736 · スポーツ 32,666 · ホビー 27,098 · キッチン用品 20,184 · 楽器 6,828 · カメラ 6,413 · インテリア小物 6,730 · キッズ 6,244 · パソコン 5,975 · DIY用品 1,676 · 家具 1,071, and a catalogue total of 1,609,533 (2026-10-08). Names are Japanese because that is what the source publishes; no translation is invented. The same call also returns the 47 prefectures, the 11 sales areas and the 23-colour palette the search filters use. UNITED STATES: the store's collections with their handles — pass one back as `search(collection=…)`. 🔴 Their own `products_count` is republished as the source prints it and is NOT a measurement: the biggest collection claims 2,357,882 products on a store whose search surface caps at 1,000 and whose whole product list was walked to 15,000, so the figure is a Shopify smart-collection count, not a catalogue size.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = jp | optional | jp · us | Which storefront to ask. `jp` is 2nd STREET Japan (www.2ndstreet.jp, 1,609,435 items across 971 shops, prices in whole yen, tax included) and is the default; `us` is the US web store (ec.2ndstreetusa.com, prices in USD with cents). |
| category | optional | — | Return only this node and its children instead of the whole tree. JAPAN ONLY. |
| depth = 3 | optional | 1–3 | How many levels of children to include: 1 = departments only, 3 = the whole tree (the source has three). JAPAN ONLY. |
| page = 1 | optional | 1–40 | 1-based page of 250 collections. UNITED STATES ONLY. |
/2ndstreet/v1/brands3 credits2nd STREET Japan's whole brand dictionary — 14,980 brands, each with BOTH spellings the chain itself publishes (`brand` in Latin script, `brand_kana` in Japanese katakana; 14,980 of 14,980 rows carry both, measured) plus the id the `search(brand=…)` filter takes and the live item count. Biggest measured: NIKE/ナイキ 101,313 · THE NORTH FACE/ザノースフェイス 54,088 · LOUIS VUITTON/ルイヴィトン 35,509 · adidas/アディダス 26,169 · Levi's/リーバイス 24,333 · Supreme/シュプリーム 23,718. 4,180 brands currently show a count of 0 — they are in the dictionary with nothing in stock, which is an answer, so `min_count` is offered rather than silently dropping them. With `keyword` this is also the chain's own brand look-up: it matches the katakana reading, so ナイキ returns NIKE, NIKE ACG and NIKE SB with their counts. 🔴 The id 999999 (その他ブランド, 119,435 items) is a real, usable filter value that this dictionary does not list. JAPAN ONLY — the US store publishes no brand index.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = jp | optional | jp · us | Which storefront to ask. `jp` is 2nd STREET Japan (www.2ndstreet.jp, 1,609,435 items across 971 shops, prices in whole yen, tax included) and is the default; `us` is the US web store (ec.2ndstreetusa.com, prices in USD with cents). |
| keyword | optional | — | Look a brand up by its Japanese reading or its Latin name. Measured: ナイキ → NIKE 101,313, NIKE ACG 1,269, NIKE SB 454. |
| min_count = 0 | optional | 0– | Drop brands with fewer than this many items in stock. 4,180 of 14,980 brands are currently at 0. |
| limit = 200 | optional | 1–2000 | How many brands to return, 1-2000. |
| offset = 0 | optional | 0– | How many brands to skip, for walking the whole 14,980. |
/2ndstreet/v1/facets2 creditsWhat the chain's own search index says about a query BEFORE you page through it: the total, and the breakdown by brand, category, colour, condition grade and size, each with its own count. This is the same figure the result page prints (103,034 vs 103,036 on the grid, a live-index difference of 2) and it is the cheap way to size a query, measure a filter or build a facet UI without pulling 60-row pages. Takes exactly the same filters as `search`, so it also answers 'how much would this filter bite'. The colour buckets come back with the shop's own Japanese colour names attached, the condition buckets with the source's own 中古A/中古B/… labels, and the size buckets carry the label the index itself publishes (`XXS`, `L`, `28cm`); brand and category buckets are ids, resolvable with `brands` and `categories`. JAPAN ONLY.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = jp | optional | jp · us | Which storefront to ask. `jp` is 2nd STREET Japan (www.2ndstreet.jp, 1,609,435 items across 971 shops, prices in whole yen, tax included) and is the default; `us` is the US web store (ec.2ndstreetusa.com, prices in USD with cents). |
| keyword | optional | — | Same as `search`. |
| category | optional | — | Same as `search`. |
| brand | optional | — | Same as `search`. |
| shop | optional | — | Same as `search`. |
| prefecture | optional | — | Same as `search`. |
| size | optional | — | Same as `search`. |
| color | optional | — | Same as `search`. |
| condition | optional | — | Same as `search`. |
| flag | optional | — | Same as `search`. |
| price_min | optional | 0– | Same as `search`, whole yen. |
| price_max | optional | 0– | Same as `search`, whole yen. |
/2ndstreet/v1/stores3 credits2nd STREET Japan's shop network. With no argument this returns the chain's own shop list — 985 entries with their ids and house names, against a headline figure of 971 shops that the chain publishes itself (the list carries a few non-trading placeholders, so both numbers are returned rather than one being quietly preferred) — together with the 47 prefectures, the 11 sales areas, the cities of each prefecture, and how many duty-free shops each prefecture has. With `prefecture` it returns that prefecture's shops only, from the chain's own per-prefecture endpoint: Tokyo (13) answers with 70 shops. Feed a `shop_id` straight back into `search(shop=…)` — it bites (30251 → 2,296 items) — or into `store` for that branch's full record. JAPAN ONLY: the US site's shop finder sits behind a JavaScript interstitial and publishes no catalogue.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = jp | optional | jp · us | Which storefront to ask. `jp` is 2nd STREET Japan (www.2ndstreet.jp, 1,609,435 items across 971 shops, prices in whole yen, tax included) and is the default; `us` is the US web store (ec.2ndstreetusa.com, prices in USD with cents). |
| prefecture | optional | — | A 2-digit prefecture code (01 Hokkaido … 13 Tokyo … 47 Okinawa). Omit for the whole network. |
| name | optional | — | Keep only shops whose name contains this text (matched on the Japanese name the chain publishes). |
/2ndstreet/v1/store3 creditsOne 2nd STREET branch in full, as its own page prints it: house name and shop name, shop type (トータルリユース, 買取専門店 …), whether it is a duty-free shop, its description, street address, telephone number, opening hours, buy-back reception hours, visiting buy-back hours where it offers them, parking spaces, the latitude and longitude from the map the page embeds, its area and prefecture, its photographs, and the two lists of goods it handles — what it SELLS and what it BUYS BACK, which are not the same list. Pair the `shop_id` with `search(shop=…)` to see what that branch has on sale right now. JAPAN ONLY.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = jp | optional | jp · us | Which storefront to ask. `jp` is 2nd STREET Japan (www.2ndstreet.jp, 1,609,435 items across 971 shops, prices in whole yen, tax included) and is the default; `us` is the US web store (ec.2ndstreetusa.com, prices in USD with cents). |
| shop_id | required | — | The 5-digit shop id from `stores`, from any search row, or the whole shop URL (https://www.2ndstreet.jp/shop/details?shopsId=30251 → 30251). |
/2ndstreet/v1/suggest1 creditThe US store's own type-ahead: the products, the collections and the alternative search phrases it would offer a shopper mid-keystroke, each product already carrying its price, availability, image and the Size/Color/Material/Condition table the store writes into its description. Capped by the store at 10 results per kind (20 was asked for and 10 came back). UNITED STATES ONLY — the Japanese site has no suggest endpoint (its /searchapi/suggest answers 200 with an empty body); for Japan, `brands(keyword=…)` is the equivalent look-up and it matches the katakana reading.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| market = jp | optional | jp · us | Which storefront to ask. `jp` is 2nd STREET Japan (www.2ndstreet.jp, 1,609,435 items across 971 shops, prices in whole yen, tax included) and is the default; `us` is the US web store (ec.2ndstreetusa.com, prices in USD with cents). |
| keyword | required | — | What the shopper has typed so far. |
| limit = 6 | optional | 1–10 | How many of each kind to ask for, 1-10. The store refuses more. |
curl -X POST https://api.reefapi.com/2ndstreet/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"keyword":"ナイキ"}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}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.
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.
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.
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.