Resale pricing and inventory research
Use Mercari endpoints to turn resale pricing and inventory research into repeatable API requests with documented inputs and JSON responses.
Turn public Mercari pages into structured resale-marketplace data — keyword listing search, full item detail with photos and pricing, the curated home feed, search autocomplete, and the complete category/brand/size taxonomy, all as normalized JSON. Credential-free.
Search Mercari listings and get item detail, the home feed, autocomplete, and the full taxonomy as structured JSON.
Endpoint families
5
Documented params
8
Examples
5
Live catalog snapshot
Active endpoints
5
Methods
GET
Required params
8
Schema refs
5
{
"platform": "Mercari",
"endpoint": "mercari-search",
"method": "GET",
"path": "/mercari/search",
"auth": "apiKey"
}Use cases
Search Mercari listings and get item detail, the home feed, autocomplete, and the full taxonomy as structured JSON.
Use Mercari endpoints to turn resale pricing and inventory research into repeatable API requests with documented inputs and JSON responses.
Use Mercari endpoints to turn listing and category monitoring into repeatable API requests with documented inputs and JSON responses.
Use Mercari endpoints to turn marketplace demand tracking into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Mercari endpoint catalog — 5 endpoints, 8 documented request parameters, and 5 published response schemas — the same catalog Docs and Playground run against.
5 documented Mercari endpoints, grouped into 5 request families — Autocomplete, Home and Item, plus 2 more.
8 request parameters are documented across those Mercari endpoints, 8 of them required — the full input contract is public before you write any integration code.
5 of the 5 Mercari endpoints ship a recorded example response, and 5 carry a documented response schema — you can code against the real JSON before the first request.
Mercari endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
5 hosted MCP tools back the Mercari endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/mercari/autocomplete
/mercari/home
/mercari/item/{id}
/mercari/master
/mercari/search
Endpoint catalog
/mercari/searchSearches Mercari's live resale marketplace by free-text keyword, returning normalized listing summaries (title, price, thumbnail, condition, seller) plus the total matching count. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.
Response notes
- `total_results` reflects Mercari's full matching-result count for the query, not just `len(items)` (this endpoint returns the first page). - `original_price_cents`, `num_likes`, and `condition_code` are omitted from an item when Mercari's response doesn't include them for that listing. - `condition_code` and `num_likes` are best-effort field labels, recovered by decoding raw upstream responses rather than from a published schema — treat them as directionally useful, not authoritative. - A search with no matching listings returns `200` with `"items": []`. - A missing `query` returns `400` before any upstream request is made. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "nike jacket", "total_results": 21523, "items": [ { "id": "m31455228584", "url": "https://www.mercari.com/us/item/m31455228584", "title": "Nike varsity jacket. New with tags!", "thumbnail_url": "https://u-mercari-images.mercdn.net/photos/m31455228584_1.jpg?1784911712", "price_cents": 4873, "original_price_cents": 5400, "num_likes": 1931, "seller_id": "794269920", "created_at_unix": 1774057908, "updated_at_unix": 1784911712 } ] } } ```
MCP tool mercari_search
/mercari/item/{id}Returns a normalized Mercari item-detail page: description, all photos, price, condition, category, hashtags, the shipping origin state, and a "similar items" carousel of related listings. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.
Response notes
- `title` is the item's description text up to its first line break — Mercari's mobile API does not expose a separate, shorter title field at this response's top level; `description` is the full text. - `condition_code` and `category_code` are best-effort field labels, recovered by decoding raw upstream responses rather than from a published schema — treat them as directionally useful, not authoritative. - `similar_items` is a list of related listings in the same normalized shape as `/mercari/search`'s `items` array (title, price, thumbnail, condition, seller). It is omitted (not an error) when Mercari's response doesn't include a similar-items carousel for that listing, and it never includes the requested item itself. - An unknown or delisted item id returns `404`. - A missing `id` returns `400` before any upstream request is made. Example response: ```json { "code": 200, "msg": "OK", "data": { "id": "m38581776856", "url": "https://www.mercari.com/us/item/m38581776856", "title": "Women’s NIKE WNBA Nike Mesh Jacket Size NEW MSRP 120", "description": "Women’s NIKE WNBA Nike Mesh Jacket Size NEW MSRP 120", "photos": [ "https://u-mercari-images.mercdn.net/photos/m38581776856_1.jpg?1777492193", "https://u-mercari-images.mercdn.net/photos/m38581776856_2.jpg?1777492193" ], "price_cents": 4578, "condition_code": 1, "category_code": 6, "shipping_from_state": "New Jersey", "similar_items": [ { "id": "m34982910331", "url": "https://www.mercari.com/us/item/m34982910331", "title": "Lululemon Every Moment Pant *26\" Black Size 6", "thumbnail_url": "https://u-mercari-images.mercdn.net/photos/m34982910331_1.jpg?1783333561", "price_cents": 4000, "num_likes": 1967, "seller_id": "790985424", "created_at_unix": 1783333561 } ] } } ```
MCP tool mercari_item
/mercari/homeReturns Mercari's own curated home-feed recommendations: normalized listing summaries (title, price, thumbnail, condition, seller). Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.
Response notes
- `original_price_cents`, `num_likes`, and `condition_code` are omitted from an item when Mercari's response doesn't include them for that listing. - `condition_code` and `num_likes` are best-effort field labels, recovered by decoding raw upstream responses rather than from a published schema — treat them as directionally useful, not authoritative. - Mercari's upstream response carries two parallel item carousels; this endpoint surfaces only the larger, primary one. Example response: ```json { "code": 200, "msg": "OK", "data": { "items": [ { "id": "m31162625332", "url": "https://www.mercari.com/us/item/m31162625332", "title": "Lululemon Align tank", "thumbnail_url": "https://u-mercari-images.mercdn.net/photos/m31162625332_1.jpg?1783611695", "price_cents": 4000, "condition_code": 1, "num_likes": 1972, "seller_id": "319514857", "created_at_unix": 1783611695 } ] } } ```
MCP tool mercari_home
/mercari/autocompleteReturns Mercari's own search-suggestion list for a partial keyword, in the upstream's own relevance order. An empty suggestion list is a normal outcome for obscure or gibberish input. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.
Response notes
- `suggestions` is an empty array (not an error) when Mercari has nothing to suggest for sufficiently obscure or gibberish input — a true "nothing matched" outcome. - A missing `query` returns `400` before any upstream request is made. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "nike", "suggestions": [ "nikes shoes women", "nikes shoes men", "nikes", "nikes shoes", "Nike pro biker shorts", "Nike biker shorts", "nikes air max", "Nike bike shorts", "nikeskims", "nikes women" ] } } ```
MCP tool mercari_autocomplete
/mercari/masterReturns Mercari's full reference taxonomy in one call: every category (with parent linkage), every recognized brand, and every clothing/shoe/apparel size. Large (tens of thousands of brand entries) and effectively static -- cache this response rather than polling it. Credential-free public data sourced from Mercari's own mobile-app API using an anonymous, login-free session.
Response notes
- This is a large response — tens of thousands of brand entries. It is effectively static day to day; the endpoint is served with a 24-hour edge cache, so repeated calls do not re-fetch from Mercari each time. - `categories` is a flat list with `parent_id` linkage rather than a nested tree, matching the shape Mercari's own data uses. `parent_id` is omitted (zero) for a top-level category (e.g. "Women", "Men", "Home"); `icon_url` is only populated for top-level categories. - `sizes` is one flat list spanning all size-bearing categories — it is not scoped per-category. `short_name` and `code` are the two parts a size's `name` is composed from when both are present (e.g. name `"XS (0-2)"` = short_name `"XS"` + code `"(0-2)"`); either may be absent when Mercari's own data doesn't split them out. Example response (truncated — the real response has ~3,000 categories, ~28,000 brands, and ~380 sizes): ```json { "code": 200, "msg": "OK", "data": { "categories": [ { "id": 1, "name": "Women", "icon_url": "https://u-mercari-images.mercdn.net/assets/img/home_categories/1.png" }, { "id": 11, "name": "Dresses", "parent_id": 1 } ], "brands": [ { "id": 1, "name": "104+ Octane Boost" }, { "id": 4, "name": "3.1 Phillip Lim" } ], "sizes": [ { "id": 1, "name": "XXS (00)", "short_name": "XXS", "code": "(00)" }, { "id": 2, "name": "XS (0-2)", "short_name": "XS", "code": "(0-2)" } ] } } ```
MCP tool mercari_master
Related APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
How to scrape Mercari
Crawlora's Mercari endpoints read Mercari's mobile-app API anonymously and return listing search, item detail, the home feed, autocomplete, and the full taxonomy as normalized JSON. /mercari/master returned 3,233 categories, 28,825 brands, and 384 sizes on 2026-09-18, and search returns 100 listings in a single call.
/mercari/search takes a query and returns total_results (21,545 for nintendo switch) and 100 listing cards. Each card has id, URL, title, thumbnail, price_cents, original_price_cents, num_likes, seller_id, and created_at_unix and updated_at_unix timestamps.
A lower price_cents than original_price_cents marks a price drop; one Mario Kart case listing dropped from 900 to 810 cents. num_likes shows demand, and that listing had 796 likes. Unix timestamps let you measure how long listings stay up.
/mercari/item/{id} (ids look like m73669339323) returns the description, all photos, price, condition, category, hashtags, the shipping origin state, and a similar-items carousel. The title is the description's first line, and condition and category codes are decoded from Mercari's app data, so treat them as indicative.
/mercari/master and /mercari/home take no parameters. Fetch the taxonomy once and cache it. /mercari/autocomplete gives Mercari's own phrasing; nintendo suggests nintendoswitch 2.
FAQ
/mercari/master returned 3,233 categories, 28,825 brands, and 384 sizes on 2026-09-18, all in one response.
Search cards carry created_at_unix and updated_at_unix, which are Unix seconds. Compare them with the current time or with each other.
They are integer cents, not dollars. price_cents of 2499 is $24.99, and original_price_cents carries the pre-markdown figure in the same unit — comparing the two is how you detect a price drop. Divide by 100 before displaying or aggregating.
A broad keyword returns a large single page — 100 normalized listing cards on a live check — rather than a small page you have to walk. For most monitoring workloads that means one request per query, with /mercari/autocomplete first if you need to find the phrasing Mercari's own index matches.