querystringrequired
Search keyword (e.g. nike air jordan 1). Japanese terms return far more in Japan, though Latin brand and model names work.
https://api.sandbase.ai/v1/api/mercari/sold-listingsSearch Mercari US or Japan sold listings by keyword with optional price-range, condition, category, brand, and sort filters, page by page, with the total result count; ideal for resale pricing research. The sold price is the final price after any accepted offer; it does not include buyer fees, and whether shipping is included depends on the listing's shipping terms. Rows carry no sale date: call mercari.product for soldUtc (US only).
Your output will appear here
Complete the inputs, then click Run.
Search Mercari US or Japan sold listings by keyword with optional price-range, condition, category, brand, and sort filters, page by page, with the total result count; ideal for resale pricing research. The sold price is the final price after any accepted offer; it does not include buyer fees, and whether shipping is included depends on the listing's shipping terms. Rows carry no sale date: call mercari.product for soldUtc (US only).
curl -X POST "https://api.sandbase.ai/v1/run" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "mercari/sold-listings", "query": "nike air jordan 1"}'
The result is returned in outputs[0].data. Lookups that find nothing fail with a not-found error.
| Name | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search keyword (e.g. nike air jordan 1). Japanese terms return far more in Japan, though Latin brand and model names work. |
brandId | string | No | Mercari brand id, or several separated by commas; the US and Japan use separate ids (e.g. 319 for Apple in the US). Every US row carries its brandId. |
categoryId | string | No | Mercari category id, or several separated by commas; the US and Japan use separate ids and a parent id includes its children (e.g. 778 for US cell phones and smartphones). Every row carries its categoryId. |
condition | array | No | Only listings in any of these condition grades (e.g. ["new", "like_new"]). worn is Japan only. |
country | string | No | Mercari marketplace: us (mercari.com, USD) or jp (jp.mercari.com, JPY). One of: us, jp. Default "us". |
cursor | string | No | Pagination cursor: pass the previous response's nextCursor with the same query and filters; omit for the first page. |
maxPrice | integer | No | Highest sold price to include, in whole units of the country's currency (e.g. 300). |
minPrice | integer | No | Lowest sold price to include, in whole units of the country's currency (US dollars or yen) (e.g. 50). |
requireFields | array | No | Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example categories, and it is served only by a source that returns every one |
sort | string | No | Result order; omitted means Mercari's default (most recently sold first for a US sold search). most_liked is Japan only; recently_sold is US only (e.g. price_desc). One of: relevance, newest, price_asc, `price_desc |
Billed at the actual cost of each call, about $0.0012 per request. A call can cost more when the first data source fails and another one answers. Failed calls and lookups that find nothing are not charged.
Start building
Platform API endpoint with unified authentication and usage tracking.
# The quoted heredoc keeps Unicode and shell metacharacters unchanged.
result=$(curl --fail-with-body --silent \
-X POST "https://api.sandbase.ai/v1/api/mercari/sold-listings" \
-H "Authorization: Bearer $SANDBASE_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'SANDBASE_JSON'
{
"query": "nike air jordan 1",
"country": "us"
}
SANDBASE_JSON
)
printf '%s\n' "$result"Set your SandBase API key in your server environment. Requests use Bearer authentication.
export SANDBASE_API_KEY="YOUR_API_KEY"Keep your key on the server. Do not expose it in browser code.
querystringrequiredSearch keyword (e.g. nike air jordan 1). Japanese terms return far more in Japan, though Latin brand and model names work.
sortstringResult order; omitted means Mercari's default (most recently sold first for a US sold search). most_liked is Japan only; recently_sold is US only (e.g. price_desc).
Possible values: relevance, newest, price_asc, price_desc, most_liked, recently_sold
cursorstringPagination cursor: pass the previous response's nextCursor with the same query and filters; omit for the first page.
brandIdstringMercari brand id, or several separated by commas; the US and Japan use separate ids (e.g. 319 for Apple in the US). Every US row carries its brandId.
countrystringMercari marketplace: us (mercari.com, USD) or jp (jp.mercari.com, JPY).
Default: "us"
Possible values: us, jp
maxPriceintegerHighest sold price to include, in whole units of the country's currency (e.g. 300).
minPriceintegerLowest sold price to include, in whole units of the country's currency (US dollars or yen) (e.g. 50).
conditionarrayOnly listings in any of these condition grades (e.g. ["new", "like_new"]). worn is Japan only.
categoryIdstringMercari category id, or several separated by commas; the US and Japan use separate ids and a parent id includes its children (e.g. 778 for US cell phones and smartphones). Every row carries its categoryId.
requireFieldsarrayOptional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `categories`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a listing that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
Saved example response for this API; no live request is made when viewing it.
No saved response has been published. Run the API in Playground to inspect its response.
Explore more
| API | Price | Response |
|---|---|---|
Mercari Sold ListingsThis API Mercari | From $0.0012 per call | JSON |
Mercari | From $0.0012 per call | JSON |
Mercari | From $0.0012 per call | JSON |
Questions
Send a POST request to https://api.sandbase.ai/v1/api/mercari/sold-listings with your SandBase API key in the Authorization header (Bearer) and the parameters as a JSON body. You can also try it in the Playground on this page without writing code.
From $0.0012 per call, billed from your SandBase balance. You are only charged for calls you make; there is no subscription.
Required: query (string). Optional: sort (one of relevance, newest, price_asc, price_desc, most_liked, recently_sold), cursor (string), brandId (string), country (one of us, jp), maxPrice (integer) and minPrice (integer) and 3 more. The Parameters table and the Playground on this page list every field.
A JSON response returned in the same HTTP request (synchronous).
No. Mercari Sold Listings runs through SandBase, so one SandBase API key covers this endpoint and every other API and model in the catalog. You do not need to apply for Mercari API access separately.