# Vinted API

> Vinted returns public second-hand listings and item details as a workflow and API.

Vinted searches public listings in one country using required search words and optional filters for brand, size, condition, price, and sorting. Search listings returns up to 96 available items with titles, prices, sizes, brands, conditions, seller usernames, and favourite counts.

- Page: https://fous.com/workflows/vinted
- Handle: `@vinted`
- Category: [Commerce](https://fous.com/workflows/category/commerce)
- Source website: https://vinted.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Vinted.

## Methods

### Search listings

Operation `search_listings`, version 1. 1 credit per call.

Search public Vinted listings in one country, with brand, size, condition, price, and sorting filters. Returns up to 96 available items; seller names may be missing when a public profile is unavailable.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `size` | string | no | `"M"` | Size as shown on listings, for example M or 38. |
| `sort` | string | no | `"price_low_to_high"` | Listing order, for example newest. |
| `brand` | string | no | `"Levi's"` | Brand name, for example Levi's. |
| `query` | string | yes | `"Nike shoes"` | Words to search for, for example Levi's 501 jeans. |
| `country` | string | no | `"United Kingdom"` | Country name or two-letter code, for example France or FR. |
| `condition` | string | no | `"very_good"` | Item condition, for example very_good. |
| `max_price` | number | no | `35` | Highest item price in the country’s currency, for example 80. |
| `min_price` | number | no | `5` | Lowest item price in the country’s currency, for example 15. |
| `max_results` | integer | no | `4` | Maximum listings to return, for example 20. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "size": {
      "type": "string",
      "description": "Size as shown on listings, for example M or 38.",
      "examples": [
        "M"
      ]
    },
    "sort": {
      "enum": [
        "relevance",
        "newest",
        "price_low_to_high",
        "price_high_to_low"
      ],
      "type": "string",
      "default": "relevance",
      "description": "Listing order, for example newest.",
      "examples": [
        "price_low_to_high"
      ]
    },
    "brand": {
      "type": "string",
      "description": "Brand name, for example Levi's.",
      "examples": [
        "Levi's"
      ]
    },
    "query": {
      "type": "string",
      "description": "Words to search for, for example Levi's 501 jeans.",
      "examples": [
        "Nike shoes",
        "Levi's 501 jeans",
        "zzqqxxyyzz-no-real-item-9287"
      ]
    },
    "country": {
      "type": "string",
      "default": "France",
      "description": "Country name or two-letter code, for example France or FR.",
      "examples": [
        "United Kingdom",
        "France"
      ]
    },
    "condition": {
      "enum": [
        "any",
        "new_with_tags",
        "new_without_tags",
        "very_good",
        "good",
        "satisfactory"
      ],
      "type": "string",
      "default": "any",
      "description": "Item condition, for example very_good.",
      "examples": [
        "very_good",
        "good"
      ]
    },
    "max_price": {
      "type": "number",
      "minimum": 0,
      "description": "Highest item price in the country’s currency, for example 80.",
      "examples": [
        35
      ]
    },
    "min_price": {
      "type": "number",
      "minimum": 0,
      "description": "Lowest item price in the country’s currency, for example 15.",
      "examples": [
        5
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 96,
      "minimum": 1,
      "description": "Maximum listings to return, for example 20.",
      "x-fous-developer": true,
      "examples": [
        4,
        5,
        3
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "sort": "price_low_to_high",
      "query": "Nike shoes",
      "country": "United Kingdom",
      "max_price": 35,
      "min_price": 5,
      "max_results": 4
    },
    {
      "brand": "Levi's",
      "query": "Levi's 501 jeans",
      "country": "France",
      "condition": "very_good",
      "max_results": 5
    },
    {
      "query": "zzqqxxyyzz-no-real-item-9287",
      "max_results": 3
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `items` | array |  | Listings in the requested order. |
| `items[].size` | string or null | `"9 child \| EU 27"` | Size shown on the listing. |
| `items[].brand` | string or null | `"Nike"` | Brand shown on the listing. |
| `items[].price` | number | `5` | Listed item price. |
| `items[].title` | string | `"Boys Nike sandles 9.5"` | Item title. |
| `items[].currency` | string | `"GBP"` | Currency code, for example EUR. |
| `items[].condition` | string or null | `"Very good"` | Condition shown on the listing. |
| `items[].item_link` | string | `"https://www.vinted.co.uk/items/10172864804-boys-nike-sandles-95"` | Public item page. |
| `items[].image_link` | string or null | `"https://images1.vinted.net/t/03_0165f_xhnV1iLa1ca8gDM5aKF2vQc7/310x430/8568e577.webp?s=bcb8ed45f3835c814381c30b9d135bac` | Listing image link. |
| `items[].total_price` | number or null | `5.7` | Item price including buyer protection when shown; excludes shipping. |
| `items[].vinted_item_id` | string | `"10172864804"` | Vinted item identifier. |
| `items[].seller_username` | string or null | `"hpsauce21"` | Seller account username. |
| `items[].favourites_count` | integer or null | `1` | Number of favourites. |

**Example input**

```json
{
  "sort": "price_low_to_high",
  "query": "Nike shoes",
  "country": "United Kingdom",
  "max_price": 35,
  "min_price": 5,
  "max_results": 4
}
```

**Example output**

```json
{
  "items": [
    {
      "size": "9 child | EU 27",
      "brand": "Nike",
      "price": 5,
      "title": "Boys Nike sandles 9.5",
      "currency": "GBP",
      "condition": "Very good",
      "item_link": "https://www.vinted.co.uk/items/10172864804-boys-nike-sandles-95",
      "image_link": "https://images1.vinted.net/t/03_0165f_xhnV1iLa1ca8gDM5aKF2vQc7/310x430/8568e577.webp?s=bcb8ed45f3835c814381c30b9d135baca132d2b9",
      "total_price": 5.7,
      "vinted_item_id": "10172864804",
      "seller_username": "hpsauce21",
      "favourites_count": 1
    },
    {
      "size": "5",
      "brand": "Nike",
      "price": 5,
      "title": "White Nike Air trainers size 5",
      "currency": "GBP",
      "condition": "Good",
      "item_link": "https://www.vinted.co.uk/items/10165501345-white-nike-air-trainers-size-5",
      "image_link": "https://images1.vinted.net/t/05_00d26_MGCgWKTdUngnkZBWHazUHJJm/310x430/c11640a2.webp?s=7c9b17b5f1bbc014262bf39ffea9eec59319cbbb",
      "total_price": 5.95,
      "vinted_item_id": "10165501345",
      "seller_username": "oliveswardrobe12345",
      "favourites_count": 6
    },
    {
      "size": "6 baby | EU 23",
      "brand": "Nike",
      "price": 5,
      "title": "Nike charcoal grey & white trainers. UK 6.5",
      "currency": "GBP",
      "condition": "Very good",
      "item_link": "https://www.vinted.co.uk/items/10161713780-nike-charcoal-grey-white-trainers-uk-65",
      "image_link": "https://images1.vinted.net/t/02_01f12_KLA4uWnvmCxsweTsKCeNTHP4/310x430/24bfc43b.webp?s=a4e22bead6deda2c0db47ca972703abff27eff23",
      "total_price": 5.7,
      "vinted_item_id": "10161713780",
      "seller_username": "adventurefunds",
      "favourites_count": 0
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@vinted",
  "visibility": "public",
  "operation": "search_listings",
  "version": 1,
  "input": {
    "sort": "price_low_to_high",
    "query": "Nike shoes",
    "country": "United Kingdom",
    "max_price": 35,
    "min_price": 5,
    "max_results": 4
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@vinted\",\n  \"visibility\": \"public\",\n  \"operation\": \"search_listings\",\n  \"version\": 1,\n  \"input\": {\n    \"sort\": \"price_low_to_high\",\n    \"query\": \"Nike shoes\",\n    \"country\": \"United Kingdom\",\n    \"max_price\": 35,\n    \"min_price\": 5,\n    \"max_results\": 4\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@vinted",
  "visibility": "public",
  "operation": "search_listings",
  "version": 1,
  "input": {
    "sort": "price_low_to_high",
    "query": "Nike shoes",
    "country": "United Kingdom",
    "max_price": 35,
    "min_price": 5,
    "max_results": 4
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@vinted","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Find second-hand items by brand, size, condition, and price.
- Compare listed prices for items in a chosen country.
- Review listing titles, item pages, and images.
- Track favourite counts across matching listings.

## FAQ

### Is Fous affiliated with Vinted?

No. Fous is not affiliated with Vinted. This workflow reads the public vinted.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Vinted account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from vinted.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What listings match my search and filters?

Search listings returns matching public Vinted items using required search words and optional country, brand, size, condition, price, and sorting filters.

### What is the price of a listed item?

Search listings returns the listed item price and currency. It may also include a total price with buyer protection, excluding shipping.

### Can I find an item's size and condition?

Search listings returns the size and condition shown on each matching listing.

## Related

- [Zalando API](https://fous.com/workflows/zalando.md): Search clothes and shoes on Zalando country shops.
- [Mercado Libre API](https://fous.com/workflows/mercado-libre.md): Search public marketplace listings in Latin America.
- [Mercari API](https://fous.com/workflows/mercari.md): Search secondhand and sold listings on Mercari US.
- [eBay API](https://fous.com/workflows/ebay.md): eBay provides listings, listing details, seller reputation and newest feedback; shipping varies by destination, and some details or counts may be missing or approximate.
- [H&M API](https://fous.com/workflows/hm.md): H&M offers clothing and home shopping, with country-specific prices and online size stock; product details reflect current catalog information.
- [Nike API](https://fous.com/workflows/nike.md): Nike returns country-specific listings and details, including prices, sizes, availability and reviews, plus publicly shown upcoming or recently stocked SNKRS releases with local launch times.
- [Zara API](https://fous.com/workflows/zara.md): Zara offers fashion and clothing, with product searches and item details including current prices, colours, sizes, materials and images; care instructions may be unavailable.
- [Amazon API](https://fous.com/workflows/amazon.md): Amazon returns publicly shown product listings, prices, details, ratings, reviews, current best sellers, and Today's Deals; availability and content vary by store, location, and access.
- [All Commerce workflows](https://fous.com/workflows/category/commerce)
