Vinted APIvinted.fr ↗
Search Vinted.fr product listings by keyword, price range, and sort order. Returns pricing breakdown, seller info, photos, and pagination metadata.
What is the Vinted API?
The Vinted.fr API exposes one endpoint — search_items — that returns up to 96 secondhand listings per page with 10+ fields per item, including base price, service fee, total price, brand, size, seller details, and photo URL. You can filter by keyword, price range in EUR, sort order, and navigate results across pages using full pagination metadata.
curl -X GET 'https://api.parse.bot/scraper/36af9f94-6ab8-4b56-bd31-20dd8a02f0eb/search_items?page=1&order=relevance&query=jacket&per_page=5&price_to=500&price_from=10' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace vinted-fr-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Vinted SDK — search listings, filter by price, sort results."""
from parse_apis.vinted_product_search_api import Vinted, Order, InvalidOrder
client = Vinted()
# Search for jackets sorted by newest, capped at 5 items total.
for item in client.items.search(query="jacket", order=Order.NEWEST_FIRST, limit=5):
print(item.title, item.price, item.currency, item.brand)
# Drill into one budget-friendly item using price filters.
cheap = client.items.search(query="iphone", price_from=10, price_to=100, order=Order.PRICE_LOW_TO_HIGH, limit=1).first()
if cheap:
print(cheap.title, cheap.total_price, cheap.service_fee)
if cheap.seller:
print(cheap.seller.login, cheap.seller.profile_url)
# Handle a typed error for an invalid order value.
try:
client.items.search(query="shoes", order=Order.RELEVANCE, limit=3).first()
except InvalidOrder as exc:
print(f"Invalid order: {exc.order}")
print("exercised: items.search (multiple sorts, price filters, seller access)")
Full-text search over Vinted product listings. query matches title and description; order controls result sorting; price_from/price_to narrow by price range. Paginates via page number. Each item includes pricing breakdown (base price, service fee, total), seller info, photo URL, and engagement metrics (favourites, views). An empty query returns trending/popular items.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based) |
| order | string | Sort order for results |
| query | string | Search keyword to match against listing titles and descriptions |
| per_page | integer | Number of results per page, between 1 and 96 |
| price_to | number | Maximum price filter in EUR |
| price_from | number | Minimum price filter in EUR |
{
"type": "object",
"fields": {
"items": "array of Item objects with id, title, price, currency, total_price, service_fee, brand, size, url, photo_url, favourite_count, view_count, status, is_promoted, and seller info",
"per_page": "integer, items per page",
"total_pages": "integer, total number of pages",
"current_page": "integer, current page number",
"total_entries": "integer, total number of matching items"
},
"sample": {
"data": {
"items": [
{
"id": 9142371160,
"url": "https://www.vinted.fr/items/9142371160-ralph-lauren-track-bomber-jacket",
"size": "S",
"brand": "Ralph Lauren",
"price": "39.95",
"title": "Ralph Lauren Track Bomber Jacket",
"seller": {
"id": 3134280212,
"login": "lavintage_es",
"profile_url": "https://www.vinted.fr/member/3134280212-lavintagees"
},
"status": "Très bon état",
"currency": "EUR",
"photo_url": "https://images1.vinted.net/t/05_0179e_QEcoyLFSmw5ZUYpgDAdnSXoJ/f800/1781123612.webp",
"view_count": 0,
"is_promoted": true,
"service_fee": "2.7",
"total_price": "42.65",
"favourite_count": 15
}
],
"per_page": 5,
"total_pages": 192,
"current_page": 1,
"total_entries": 960
},
"status": "success"
}
}About the Vinted API
What the API Returns
The search_items endpoint searches Vinted.fr's secondhand marketplace and returns an array of Item objects. Each item includes id, title, price, currency, total_price, service_fee, brand, size, url, photo_url, and favourite_count. The response also carries pagination fields: current_page, per_page, total_pages, and total_entries, so you can determine exactly how many results match a query and navigate through them systematically.
Filtering and Sorting
The query parameter matches against listing titles and descriptions. Price filters price_from and price_to accept numeric values in EUR and can be combined or used independently. The order parameter controls how results are sorted — for example, by relevance or most recent. Page size is controlled by per_page, accepting values from 1 to 96. All parameters are optional, so an unparameterized call returns a default set of current listings.
Pricing Breakdown
Every item returns three price fields: price (the seller's asking price), service_fee (Vinted's buyer protection fee), and total_price (the sum the buyer pays). This breakdown lets you accurately compare the real cost of items without recalculating fees manually. All values are in the currency field, which reflects EUR for vinted.fr.
Scope and Coverage
This API covers the vinted.fr French marketplace only. It returns the listing-level data visible in search results: product metadata, pricing, and seller surface info. Individual seller profile pages, order history, and private messaging are not part of this endpoint.
The Vinted API is a managed, monitored endpoint for vinted.fr — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when vinted.fr changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official vinted.fr API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price trends for a specific brand or item type using
queryandprice_from/price_tofilters over time - Build a price comparison tool that shows
price,service_fee, andtotal_priceside by side across multiple searches - Monitor new listings for a keyword by sorting with
orderand checkingtotal_entriesfor changes - Aggregate
favourite_countdata to identify which secondhand items are most in demand on the French market - Paginate through
total_pagesto collect a full dataset of listings for a category or brand - Filter listings within a budget using
price_toto surface only affordable items in a given search
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Vinted have an official public developer API?+
What does the `search_items` endpoint return for each listing?+
id, title, price, currency, total_price, service_fee, brand, size, url, photo_url, and favourite_count. The response also returns pagination metadata: current_page, per_page, total_pages, and total_entries.Does the API cover seller profile pages or individual item detail pages beyond search results?+
search_items endpoint. You can fork it on Parse and revise to add an endpoint that returns full item detail pages or seller profile data.Is the API limited to vinted.fr, or does it cover other Vinted country domains?+
What is the maximum number of results I can retrieve per page?+
per_page parameter accepts values between 1 and 96. To retrieve more results, increment the page parameter and continue until current_page equals total_pages.