Vinted API
The Vinted API returns second-hand fashion listings, item and seller data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary catalog_search endpoint returns items with id, title, brand, size, price, URL, photos, condition and seller, with pagination, and you can pull an item_detail, a seller, their items and feedback, search brands, get similar items, filters and categories. It is built for resale-price intelligence, fashion apps and reselling tools that need Vinted data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, catalog_search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/vinted/v1/catalog_search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "nike",
"tld": "fr",
"per_page": 20
}
}{
"ok": true,
"meta": {
"api": "vinted",
"endpoint": "catalog_search",
"mode": "live",
"latency_ms": 2038.8,
"record_count": 20,
"bytes": 285318,
"cache_hit": false,
"completeness_pct": 100,
"stop_reason": "cap_reached",
"tld": "fr",
"total_entries": 960,
"window_cap": 960,
"pagination": {
"page": 1,
"has_more": true
}
},
"data": {
"items": [
{
"id": 9423313905,
"title": "Nike zwart cropped T-shirt logo Plus Size 2X EU 50/52",
"url": "https://www.vinted.fr/items/[redacted-phone]-nike-zwart-cropped-t-shirt-logo-plus-size-2x-eu-5052",
"price": {
"amount": 15,
"currency": "EUR"
},
"total_item_price": {
"amount": 16.45,
"currency": "EUR"
},
"service_fee": {
"amount": 1.45,
"currency": "EUR"
},
"brand": "Nike",
"size": "5XL / 50 / 22",
"condition": "Très bon état",
"is_visible": true,
"favourite_count": 0,
"view_count": 0,
"promoted": false,
"uploaded_ts": 1784317650,
"photos": [
{
"url": "[trimmed-depth]",
"full_size_url": "[trimmed-depth]",
"dominant_color": "[trimmed-depth]",
"is_main": "[trimmed-depth]",
"width": "[trimmed-depth]",
"height": "[trimmed-depth]",
"uploaded_ts": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"full_size_url": "[trimmed-depth]",
"dominant_color": "[trimmed-depth]",
"is_main": "[trimmed-depth]",
"width": "[trimmed-depth]",
"height": "[trimmed-depth]",
"uploaded_ts": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"full_size_url": "[trimmed-depth]",
"dominant_color": "[trimmed-depth]",
"is_main": "[trimmed-depth]",
"width": "[trimmed-depth]",
"height": "[trimmed-depth]",
"uploaded_ts": "[trimmed-depth]"
}
],
"seller": {
"id": 28651912,
"login": "[redacted]",
"business": false,
"profile_url": "[redacted]"
}
},
{
"id": 9274294548,
"title": "Pull Nike sans capuche",
"url": "https://www.vinted.fr/items/[redacted-phone]-pull-nike-sans-capuche",
"price": {
"amount": 10,
"currency": "EUR"
},
"total_item_price": {
"amount": 11.2,
"currency": "EUR"
},
"service_fee": {
"amount": 1.2,
"currency": "EUR"
},
"brand": "Nike",
"size": "M / 38 / 10",
"condition": "Très bon état",
"is_visible": true,
"favourite_count": 0,
"view_count": 0,
"promoted": false,
"uploaded_ts": 1782662212,
"photos": [
{
"url": "[trimmed-depth]",
"full_size_url": "[trimmed-depth]",
"dominant_color": "[trimmed-depth]",
"is_main": "[trimmed-depth]",
"width": "[trimmed-depth]",
"height": "[trimmed-depth]",
"uploaded_ts": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"full_size_url": "[trimmed-depth]",
"dominant_color": "[trimmed-depth]",
"is_main": "[trimmed-depth]",
"width": "[trimmed-depth]",
"height": "[trimmed-depth]",
"uploaded_ts": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"full_size_url": "[trimmed-depth]",
"dominant_color": "[trimmed-depth]",
"is_main": "[trimmed-depth]",
"width": "[trimmed-depth]",
"height": "[trimmed-depth]",
"uploaded_ts": "[trimmed-depth]"
}
],
"seller": {
"id": 17200761,
"login": "[redacted]",
"business": false,
"profile_url": "[redacted]"
}
},
{
"id": 9430052246,
"title": "Nike Air Sport Dry Fit Leggings mit Mesh XS",
"url": "https://www.vinted.fr/items/[redacted-phone]-nike-air-sport-dry-fit-leggings-mit-mesh-xs",
"price": {
"amount": 15,
"currency": "EUR"
},
"total_item_price": {
"amount": 16.45,
"currency": "EUR"
},
"service_fee": {
"amount": 1.45,
"currency": "EUR"
},
"brand": "Nike",
"size": "XS / 34 / 6",
"condition": "Très bon état",
"is_visible": true,
"favourite_count": 0,
"view_count": 0,
"promoted": false,
"uploaded_ts": 1784395199,
"photos": [
{
"url": "[trimmed-depth]",
"full_size_url": "[trimmed-depth]",
"dominant_color": "[trimmed-depth]",
"is_main": "[trimmed-depth]",
"width": "[trimmed-depth]",
"height": "[trimmed-depth]",
"uploaded_ts": "[trimmed-depth]"
},
{
"url": "[trimmed-depth]",
"full_size_url": "[trimmed-depth]",
"dominant_color": "[trimmed-depth]",
"is_main": "[trimmed-depth]",
"width": "[trimmed-depth]",
"height": "[trimmed-depth]",
"uploaded_ts": "[trimmed-depth]"
}
],
"seller": {
"id": 3169529605,
"login": "[redacted]",
"business": false,
"profile_url": "[redacted]"
}
}
],
"pagination": {
"current_page": 1,
"total_pages": 48,
"total_entries": 960,
"per_page": 20,
"time": 1784395244
},
"query": "nike",
"filters": {},
"tld": "fr"
}
}What the Vinted API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| catalog_search | keyword + filter search (brand/size/condition/category/color/material/price) | Pricing teams call catalog_search to get keyword + filter search (brand/size/condition/category/color/material/price). | query, search_text, filters, brand_ids, size_ids, ... |
| item_detail | Full Vinted item detail — title, price, photos, description, size, color, condition, material, category and a seller summary. | Marketplace operators call item_detail to get full Vinted item detail. | id, item_id, url, path, tld |
| seller | seller profile (login/rating/item_count/feedback breakdown) — PII redactable | Catalog enrichment teams call seller to get seller profile (login/rating/item_count/feedback breakdown). | id, user_id, seller_id, tld |
| seller_items | a seller's wardrobe items | Retail analysts call seller_items to get a seller's wardrobe items. | id, user_id, seller_id, page, per_page, ... |
| seller_feedback | feedback left for a seller (text/rating/reviewer) | Pricing teams call seller_feedback to get feedback left for a seller (text/rating/reviewer). | id, user_id, seller_id, page, per_page, ... |
| brand_search | resolve a brand name -> brand_id (+ item/favourite counts) | Marketplace operators call brand_search to resolve a brand name -> brand_id (+ item/favourite counts). | query, search_text, page, per_page, tld |
| autocomplete | search typeahead — partial query -> ranked Vinted search suggestions (localized per site) | Catalog enrichment teams call autocomplete to search typeahead. | query, search_text, q, tld |
| similar | items similar to a given item (items/{id}/more) | Retail analysts call similar to get items similar to a given item (items/{id}/more). | id, item_id, content_source, tld |
| catalog_filters | dynamic facets (size/brand/status/color/price/material + option ids) for a query/category | Pricing teams call catalog_filters to get dynamic facets (size/brand/status/color/price/material + option ids) for a query/category. | query, search_text, catalog_ids, tld |
| categories | Full Vinted category tree — id, title, code, URL and child categories for the selected country site. | Marketplace operators call categories to get full Vinted category tree. | tld |
| colors | color enum (id/title/hex/code) | Catalog enrichment teams call colors to get color enum (id/title/hex/code). | tld |
| conditions | item-condition enum (status id/title) | Retail analysts call conditions to get item-condition enum (status id/title). | tld |
| countries | country enum (id/iso/currency) | Pricing teams call countries to get country enum (id/iso/currency). | tld |
| sizes | size groups + size ids | Marketplace operators call sizes to get size groups + size ids. | tld |
Call catalog_search from your stack
curl -X POST https://api.reefapi.com/vinted/v1/catalog_search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"nike","tld":"fr","per_page":20}'import requests
r = requests.post(
"https://api.reefapi.com/vinted/v1/catalog_search",
headers={"x-api-key": REEF_KEY},
json={
"query": "nike",
"tld": "fr",
"per_page": 20
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/vinted/v1/catalog_search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "nike",
"tld": "fr",
"per_page": 20
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.vinted.catalog_search with {"query":"nike","tld":"fr","per_page":20}.Who uses this API and why
- Resale-price tools call catalog_search to track second-hand prices for a brand and size.
- Reselling products use seller_items and seller_feedback to study a competitor's shop.
- Fashion apps use brand_search and similar to surface comparable second-hand listings.
Questions developers ask before integrating
What is the Vinted API?
Vinted API is a ReefAPI endpoint group for second-hand fashion listings and prices. It returns live JSON through POST requests under /vinted/v1.
Is the Vinted API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Vinted calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Vinted login or account?
No login to Vinted 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 Vinted data?
The page example is captured from a live catalog_search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Vinted API use?
Vinted 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 Vinted from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call vinted actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Vinted API a Vinted scraper?
It is the managed alternative to a DIY Vinted 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 fashion listings and prices back as clean JSON.
Why does my Vinted scraper keep getting blocked?
Most Vinted scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.