# Vinted API — second-hand fashion listings, item detail & seller profiles across 20 European Vinted sites

> keyword + filter search (brand/size/condition/category/color/material/price)
> ReefAPI engine `vinted` · 14 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/vinted/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /vinted/v1/catalog_search — 2 credits
keyword + filter search (brand/size/condition/category/color/material/price)

**Parameters:**
- `query` (string, optional) — What to search for (item keywords). Give query and/or at least one *_ids/price filter.
- `order` (enum, optional, default "newest_first") — Result ordering (the 4 Vinted UI orders, all live-verified; unknown values are ignored upstream). [one of: newest_first, relevance, price_low_to_high, price_high_to_low]
- `brand_ids` (array, optional) — Only these brands — numeric ids from the brand_search action (e.g. brand_search 'nike' → id).
- `catalog_ids` (array, optional) — Only these categories — ids from the categories action.
- `size_ids` (array, optional) — Only these sizes — ids from the sizes action.
- `status_ids` (array, optional) — Only these conditions — ids from the conditions action.
- `color_ids` (array, optional) — Only these colors — ids from the colors action.
- `material_ids` (array, optional) — Only these materials — ids from the catalog_filters action.
- `price_from` (number, optional) — Only items at or above this price.
- `price_to` (number, optional) — Only items at or below this price.
- `currency` (string, optional) — Currency code for price_from/price_to (defaults to the site's own currency).
- `filters` (object, optional) — Raw Vinted filter object (advanced — overrides all the individual *_ids/price params).
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]
- `page` (integer, optional, default 1) — Page number (1, 2, 3… — Vinted serves at most ~960 results per filter combination; narrow filters to go deeper).
- `per_page` (integer, optional, default 20) — Results per page (1–96; Vinted caps larger values at 96).

**Returns:** items[]{id, title, brand, brand_id, size, price{amount, currency}, url, photos, condition, seller{id}} + pagination{current_page, total_pages, total_entries} (meta.pagination for paging)

**Example request body:**
```json
{
  "query": "nike",
  "tld": "fr",
  "per_page": 20
}
```

### POST /vinted/v1/item_detail — 2 credits
Full Vinted item detail — title, price, photos, description, size, color, condition, material, category and a seller summary.

**Parameters:**
- `id` (string, optional) — Vinted item ID — the digits in the item URL (…/items/<id>-slug). Provide id OR url (one of the two is required).
- `url` (string, optional) — Full item URL — alternative to id.
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** item{id, url, title, description, brand, brand_id, category, catalog_id, color, size, material, price, availability, condition, photos[], breadcrumbs[], attributes[]{key, label, value}, seller{id, login*, rating, feedback_count, item_count, profile_url*}} (* redacted unless include_pii)

### POST /vinted/v1/seller — 1 credit
seller profile (login/rating/item_count/feedback breakdown) — PII redactable

**Parameters:**
- `id` (string, required) — Vinted user ID — take it from catalog_search items[].seller.id or from a member URL (vinted.fr/member/<id>).
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** seller{id, login*, rating, feedback_count, item_count, city*, country} (* redacted unless include_pii)

### POST /vinted/v1/seller_items — 1 credit
a seller's wardrobe items

**Parameters:**
- `id` (string, required) — Vinted user ID — take it from catalog_search items[].seller.id or from a member URL (vinted.fr/member/<id>).
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]
- `page` (integer, optional, default 1) — Page number (1, 2, 3… — Vinted serves at most ~960 results per filter combination; narrow filters to go deeper).
- `per_page` (integer, optional, default 20) — Results per page (1–96; Vinted caps larger values at 96).

**Returns:** items[] (catalog item shape) + pagination (meta.pagination for paging)

### POST /vinted/v1/seller_feedback — 1 credit
feedback left for a seller (text/rating/reviewer)

**Parameters:**
- `id` (string, required) — Vinted user ID — take it from catalog_search items[].seller.id or from a member URL (vinted.fr/member/<id>).
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]
- `page` (integer, optional, default 1) — Page number (1, 2, 3… — Vinted serves at most ~960 results per filter combination; narrow filters to go deeper).
- `per_page` (integer, optional, default 20) — Results per page (1–96; Vinted caps larger values at 96).

**Returns:** feedback[]{text, rating, reviewer*, created_at} + pagination (* redacted unless include_pii; meta.pagination for paging)

### POST /vinted/v1/brand_search — 1 credit
resolve a brand name -> brand_id (+ item/favourite counts)

**Parameters:**
- `query` (string, optional) — Brand name (or part of it) to look up (empty = the default brand list).
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]
- `page` (integer, optional, default 1) — Page number (1, 2, 3… — Vinted serves at most ~960 results per filter combination; narrow filters to go deeper).
- `per_page` (integer, optional, default 20) — Results per page (1–96; Vinted caps larger values at 96).

**Returns:** brands[]{id, title, item_count, favourite_count} + pagination — feed the id into catalog_search brand_ids

**Example request body:**
```json
{
  "query": "nike",
  "tld": "fr"
}
```

### POST /vinted/v1/autocomplete — 1 credit
search typeahead — partial query -> ranked Vinted search suggestions (localized per site)

**Parameters:**
- `query` (string, required) — Partial search text to complete (e.g. 'nik' -> 'nike homme', 'nike enfant'). Returns the localized suggestions for the chosen tld.
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** suggestions[]{title, score} — feed a title back into catalog_search query

**Example request body:**
```json
{
  "query": "nike",
  "tld": "fr"
}
```

### POST /vinted/v1/similar — 1 credit
items similar to a given item (items/{id}/more)

**Parameters:**
- `id` (string, required) — Vinted item ID to find lookalikes for.
- `content_source` (string, optional, default "similar_items") — Upstream recommendation source (advanced) — leave at the default.
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** items[] (catalog item shape) similar to the given item

### POST /vinted/v1/catalog_filters — 1 credit
dynamic facets (size/brand/status/color/price/material + option ids) for a query/category

**Parameters:**
- `query` (string, optional) — Keyword whose facets you want (optional — empty = global).
- `catalog_ids` (array, optional) — Narrow facets to these category ids (from the categories action).
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** filters[] — every facet (size/brand/condition/color/price/material) with its selectable option ids for the given query/category

### POST /vinted/v1/categories — 0 credits
Full Vinted category tree — id, title, code, URL and child categories for the selected country site.

**Parameters:**
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** categories[]{id, title, code, url, children[]} — ids feed catalog_search catalog_ids

**Example request body:**
```json
{
  "tld": "fr"
}
```

### POST /vinted/v1/colors — 0 credits
color enum (id/title/hex/code)

**Parameters:**
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** colors[]{id, title, hex, code} — ids feed catalog_search color_ids

**Example request body:**
```json
{
  "tld": "fr"
}
```

### POST /vinted/v1/conditions — 0 credits
item-condition enum (status id/title)

**Parameters:**
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** conditions[]{id, title} — ids feed catalog_search status_ids

### POST /vinted/v1/countries — 0 credits
country enum (id/iso/currency)

**Parameters:**
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** countries[]{id, iso, currency}

### POST /vinted/v1/sizes — 0 credits
size groups + size ids

**Parameters:**
- `tld` (enum, optional, default "fr") — Which Vinted site to query (sets currency and local listings). [one of: fr, de, es, it, nl, be, lt, lu, at, pt, sk, fi, co.uk, pl, cz, se, ro, hu, dk, com]

**Returns:** size_groups[]{id, title, sizes[]{id, title}} — ids feed catalog_search size_ids

## More
- Try it live, no code: https://reefapi.com/playground?engine=vinted
- Human docs page: https://reefapi.com/docs/vinted
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
