Vestiaire Collective listings, sold prices and the fees inside them in 23 countries, one API
The Vestiaire Collective API turns vestiairecollective.com, the luxury resale marketplace, into clean JSON in four actions: search, product/detail, seller/listings and suggest.
4 active endpoints, on 1 and 2 credit tiers.
- POST/vestiaire/v1/search
- POST/vestiaire/v1/product/detail
- POST/vestiaire/v1/seller/listings
- POST/vestiaire/v1/suggest
What Vestiaire Collective endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Vestiaire Collective API
4 of 4 endpoints, ready to run
One page of Vestiaire listings for a buyer country: product id, name, brand, model, condition, size, the price that country pays with original price and drop %, sold flag, seller badge, item country and images.
{ "ok": true, "meta": { "api": "vestiaire", "endpoint": "search", "mode": "live", "latency_ms": 2030.3, "record_count": 48, "cache_hit": false }, "data": { "results": [ { "product_id": "70379642", "url": "https://fr.vestiairecollective.com/sacs-femme/sacs-a-main/hermes/sac-a-main-hermes-birkin-35-en-cuir-orange-70379642.shtml", "name": "Sac à main en cuir Birkin 35", "brand": "Hermès", "brand_id": "14", "model": "Birkin 35", "model_id": "8", "gender": "women", "base_category": "Sacs", "base_category_id": "5", "category": "Sacs à main", "category_id": "59", "condition": "Très bon état", "condition_id": "3", "size": null, "color": "Orange", "colors": [ "Orange" ], "price": 8397, "currency": "EUR", "original_price": 8400, "price_drop_percent": 0, "sold": true, "likes": 66, "listed_at": "2026-08-28T08:57:55Z", "seller_id": "19553008", "seller_badge": null, "seller_is_official_store": false, "item_country_code": "FR", "local_delivery": true, "direct_shipping": false, "duty_free": true, "editor_picks": [ "we_love", "exceptional_piece" ], "description": "Sac après le spa. Il y a une housse. Le cadenas est perdu. Il y a une clé.\nAnnée 2013.", "image": "https://images.vestiairecollective.com/produit/70379642-1_2.jpg", "images": [ "https://images.vestiairecollective.com/produit/70379642-1_2.jpg" ] }, { "product_id": "69500017", "url": "https://fr.vestiairecollective.com/sacs-femme/sacs-a-main/hermes/sac-a-main-hermes-birkin-40-en-cuir-autre-69500017.shtml", "name": "Sac à main en cuir Birkin 40", "brand": "Hermès", "brand_id": "14", "model": "Birkin 40", "model_id": "2368", "gender": "women", "base_category": "Sacs", "base_category_id": "5", "category": "Sacs à main", "category_id": "59", "condition": "Bon état", "condition_id": "4", "size": null, "color": null, "colors": null, "price": 7575, "currency": "EUR", "original_price": 18900, "price_drop_percent": 60, "sold": true, "likes": 3, "listed_at": "2026-08-02T10:48:17Z", "seller_id": "12832389", "seller_badge": "Trusted", "seller_is_official_store": false, "item_country_code": "IT", "local_delivery": true, "direct_shipping": false, "duty_free": true, "editor_picks": [ "vintage", "exceptional_piece" ], "description": "Splendide et iconique sac Hermès Birkin 40 en cuir Togo, dans la couleur intemporelle Gold (06) associée à une quincaillerie plaquée or (Gold Hardware). Cet exemplaire date de 2009, comme l'atteste le tampon de production (Blind Stamp) \"M\" inscrit dans un carré, situé à l'intérieur de la languette de fermeture. Le cuir Togo est réputé pour sa résistance extraordinaire aux rayures et son grain naturel doux. État général : Très bon état (Very Good Condition). Le sac conserve parfaitement sa forme. Le cuir est magnifique, l'intérieur est propre et sans taches ni odeurs. On note uniquement une usure légère et normale par frottement sur les quatre coins du fond (détaillée sur les photos). Accessoires inclus (Full Set) : Le sac est expédié complet avec tous ses accessoires d'origine de l'époque : sac anti-poussière (dustbag), protection de pluie (rain protector), feutre de protection pour la quincaillerie, cadenas avec clés rangées dans la clochette en cuir, boîte orange originale Hermès (qui présente quelques taches d'humidité superficielles sur un côté), et l'emblématique ruban Bolduc d'origine. Une pièce de collection extraordinaire, idéale pour ceux qui recherchent l'élégance alliée à la capacité de la taille 40.", "image": "https://images.vestiairecollective.com/produit/69500017-1_2.jpg", "images": [ "https://images.vestiairecollective.com/produit/69500017-1_2.jpg" ] }, { "product_id": "69924158", "url": "https://fr.vestiairecollective.com/sacs-femme/sacs-a-main/hermes/sac-a-main-hermes-birkin-30-en-cuir-vert-69924158.shtml", "name": "Sac à main en cuir Birkin 30", "brand": "Hermès", "brand_id": "14", "model": "Birkin 30", "model_id": "2366", "gender": "women", "base_category": "Sacs", "base_category_id": "5", "category": "Sacs à main", "category_id": "59", "condition": "Jamais porté avec étiquette", "condition_id": "1", "size": null, "color": "Vert", "colors": [ "Vert" ], "price": 17850, "currency": "EUR", "original_price": 22050, "price_drop_percent": 19, "sold": true, "likes": 27, "listed_at": "2026-08-15T06:18:22Z", "seller_id": "248102", "seller_badge": null, "seller_is_official_store": false, "item_country_code": "IT", "local_delivery": true, "direct_shipping": false, "duty_free": true, "editor_picks": [ "exceptional_piece" ], "description": "Sac à main Hermès Birkin 30 pour femme. En cuir vert. Neuf, jamais porté, étiquette d'origine.\n\nDimensions : 23 x 30 cm.", "image": "https://images.vestiairecollective.com/produit/69924158-5_4.jpg", "images": [ "https://images.vestiairecollective.com/produit/69924158-5_4.jpg" ] } ], "count": 48, "total_results": 775, "total_is_capped": false, "page": 1, "page_size": 48, "has_more": true, "status": "sold", "sort": "relevance", "query": "hermes birkin", "corrected_query": null, "country": "fr", "currency": "EUR", "language": "fr", "keyword_matches_on_page": 48, "fallback_results_dropped": 0 } }
How the Vestiaire Collective API works
Vestiaire Collective is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 252 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Price a bag from sold listings, then compare a live listing across countries
Sold listings show what an item actually went for. product/detail then shows what a live listing costs in each country and how much of it is fees.
{"country": "us", "query": "chanel timeless", "status": "sold", "condition": "very_good", "sort": "newest"}Recent sold listings in very good condition, in USD, with original price and drop %. Take results[].price.
{"country": "us", "model_id": "<results[0].model_id>", "status": "available", "sort": "price_asc"}Listings of the same model for sale now, cheapest first. Take results[0].product_id.
{"country": "gb", "product_id": "<results[0].product_id>"}The same listing for a UK buyer: its GBP price, the seller price vs buyer fee, the flat fee, and shipping to the UK.
Sold comparables, current supply and the real cost per country, with fees kept apart from the seller's price.
curl -X POST https://api.reefapi.com/vestiaire/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"country":"us","query":"chanel bag"}'{
"ok": true,
"data": { … },
"meta": {
"api": "vestiaire",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}The same listing costs a different amount in every country, because the buyer fee depends on where it ships
A Vestiaire price is not one number. It includes a buyer-service fee that is lower when the item is already in the buyer's country and higher cross-border, and a flat fee is added on top at checkout. The API returns the price each country pays and splits it.
| Gucci polo shirt, never worn (item in the US) | price | seller price | buyer fee | flat fee listed apart |
|---|---|---|---|---|
| United States (USD) | 368 | 320 | 48 (15 %) | 15 |
| United Kingdom (GBP) | 312 | 243.72 | 68.28 (28 %) | 15 |
| France (EUR) | 365 | 284.38 | 80.62 (28 %) | 15 |
| Japan (JPY) | 64,900 | 50,661 | 14,239 (28 %) | 2,000 |
Values from 2026-09-16 for item 70532143. price = seller price + buyer fee on every measured listing; the flat fee is not inside price. original_price (978 USD here) is the price before the seller dropped it, and price_drop_percent (62) is the drop. Sold listings keep their last price and add sold_at; they carry no fee split.
Which countries, which price is which, and what Vestiaire does not publish
23 buyer countries. Measured on 2026-09-16: 107 live cases across every country, 12 listings in 4 categories, and 6 listings checked against the listing page. Some of these lines go against us.
One country parameter sets the buyer country and currency (13 currencies). Prices include Vestiaire's buyer fee for that destination: 15 % for the item's own country and 28 % cross-border on the measured listing.
product/detail splits price into seller_price and buyer_fee (price = seller price + fee on every measured listing), says whether the fee includes authentication, and lists flat fees separately because they are not part of price.
status=sold returns sold listings with their last price; product/detail adds sold_at. 784 sold Hermès Birkin listings came back for France in a live search.
Unrelated padding is dropped and counted (42 of 42 real queries kept their results, 10 of 10 nonsense queries came back empty), and the site's own spelling correction is reported in corrected_query.
Vestiaire serves a search up to offset 1,000 and reports totals above 10,000 as 10,000 (total_is_capped). Narrow a broad search with brand, model, category or price filters to reach the rest.
Vestiaire publishes no fee breakdown for a sold listing, so price_breakdown is null there. A seller's profile page needs a login and is not returned; the seller block on a listing (username, type, badges, counts, six-month sales) and seller/listings are.
Size is on clothing and shoes, measurements mostly on bags, model only on items with a named model, and shipping cost is often not published (null). Nothing is filled in where the listing is silent.
What people build with Vestiaire Collective
The jobs this data is most often used for.
endpoints
credits per call
Resellers and luxury buyers price an item from sold listings of the same model, condition and country before buying or listing.
Price-monitoring teams track what a bag or watch costs buyers in 23 countries, with the fee share separated from the seller's price.
Consignment and authentication businesses watch new listings for a brand or model with listed_after and seller badges.
Market researchers measure price drops, time on sale and sold volumes across brands and categories.
What Vestiaire Collective data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 252 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/vestiaire/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"country":"us","query":"chanel bag"}'import requests
r = requests.post(
"https://api.reefapi.com/vestiaire/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"country": "us",
"query": "chanel bag"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Vestiaire Collective.
Get a free key →Which countries and currencies does it cover?▾
23 buyer countries: the United States, the United Kingdom, France, Germany, Italy, Spain, the Netherlands, Belgium, Austria, Ireland, Portugal, Greece, Finland, Switzerland, Sweden, Denmark, Poland, Hong Kong, Singapore, Australia, Canada, Japan and South Korea. The currency follows the country, and currency can be set to any of the 13 currencies Vestiaire prices in (EUR, USD, GBP, CHF, SEK, DKK, PLN, HKD, SGD, AUD, CAD, JPY, KRW). An unsupported country or currency returns INVALID_PARAM rather than unpriced rows.
Why does one listing have a different price per country?▾
Because the price includes Vestiaire's buyer fee, and the fee depends on the destination. For an item located in the US, a US buyer paid a 15 % fee (368 USD) and buyers in the UK, France and Japan paid 28 % (312 GBP, 365 EUR, 64,900 JPY) on 2026-09-16. product/detail returns price_breakdown with seller_price, buyer_fee, buyer_fee_percent and whether the fee includes authentication, plus flat_buyer_fees, which are listed separately and are not part of price.
Can I research sold prices?▾
Yes. search and seller/listings take status=sold (or all). Sold listings stay resolvable in product/detail with sold: true, sold_at and the last listed price. A live search for sold Hermès Birkin listings in France returned 784 results. Vestiaire does not publish the fee split for a sold listing, so price_breakdown is null there.
What is the difference between price, original_price and the seller price?▾
price is what a buyer in the chosen country pays, fee included. original_price is the buyer price before the seller dropped it, returned only when it is higher, with price_drop_percent. price_breakdown.seller_price is the part the seller set, and seller_original_price is the seller's own price before the drop. None of these is invented: when Vestiaire publishes no drop, original_price is null.
What does it tell me about the seller?▾
Search rows carry the seller id, the Expert or Trusted badge and whether the seller is an official store. product/detail adds the seller's public username, whether it is a private or professional seller, country, badges, items listed and sold, and the sales history Vestiaire shows for the last six months (sold, shipped within 7 days, cancelled). Seller first names are not returned. seller/listings lists one seller's items for sale or sold.
What happens on a query with no match or a typo?▾
Vestiaire fills a no-match search with unrelated listings. Those are dropped and counted in fallback_results_dropped, and include_fallback_results=true returns them separately. In a live check 42 of 42 real queries kept their results, including typos and searches in French, German, Italian, Spanish, Dutch, Swedish, Korean and Chinese, and 10 of 10 nonsense queries came back empty. When the site corrects a spelling itself ('hermmes' to 'hermes'), corrected_query says so.
Is every field filled for every listing?▾
No, and nulls mean the listing does not publish the field. Across 12 listings in bags, women's clothing, shoes and watches or jewellery, brand, condition, colour, material, price, the fee split, seller and shipping were filled on all of them. Size appears on clothing and shoes, measurements on bags, and model only where the item has a named model.
What is the Vestiaire Collective API?▾
Vestiaire Collective API is a ReefAPI endpoint group for second-hand luxury in 23 countries: for-sale and sold listings with the price each country pays, split into seller price and buyer fee, as json. It returns live JSON through POST requests under /vestiaire/v1.
Is the Vestiaire Collective API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Vestiaire Collective calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Vestiaire Collective login or account?▾
No login to Vestiaire Collective is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Vestiaire Collective data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Vestiaire Collective API use?▾
Vestiaire Collective actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Vestiaire Collective from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call vestiaire actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Vestiaire Collective API a Vestiaire Collective scraper?▾
It is the managed alternative to a DIY Vestiaire Collective scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same second-hand luxury in 23 countries: for-sale and sold listings with the price each country pays, split into seller price and buyer fee, as json back as clean JSON.
91 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Vestiaire Collective, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-16.