There is no public, documented Vinted API for listing data that we could confirm. Developers and resellers who want Vinted listings as data copy them by hand, write their own scraper, or call a hosted scraper through an API. This guide covers all three, with a working Python example, the fields you get back, and what a run costs.
Is there an official Vinted API?
Vinted does not publish an open API for searching listings, reading seller profiles or exporting prices. You will not find a developer portal with API keys and endpoint documentation for that kind of data. When people search for "vinted api documentation", what they usually find are unofficial projects that call the same endpoints the Vinted website uses in your browser.
Those internal endpoints exist because the site needs them, but they are not a product offered to developers. They can change without notice, they are not documented for outside use, and Vinted can challenge or block requests that do not look like normal browsing. Anything built on them should expect to break from time to time.
So when someone says "the Vinted API", they almost always mean one of two things:
- a script that reads Vinted's public pages or internal endpoints, or
- a third-party tool that does that work for you and returns clean JSON through its own API.
Neither is affiliated with Vinted.
Your options for getting Vinted data
1. By hand
Open Vinted, search, and copy titles, prices and links into a spreadsheet. This is fine for a dozen items. It does not scale to hundreds of listings, several countries, or a daily price check.
2. A DIY Python script
You can write your own Vinted scraper in Python with an HTTP library. It is a good learning project, and many open-source attempts exist. Expect to handle:
- session cookies and headers that the site expects,
- pagination across result pages,
- one domain per country (vinted.fr, vinted.de, vinted.co.uk and so on), each with its own currency,
- retries, rate limits and blocking,
- changes in the page or response format, which silently break your parser.
The script is free to run, but the maintenance is on you. A run that returns an empty list or a block page is easy to mistake for "no results".
3. A hosted scraper with an API
A hosted tool runs the scraper in the cloud and gives you an API endpoint, a dataset of rows and exports to JSON, CSV or Excel. You pay per result instead of maintaining code. KazKN publishes two of them on Apify:
| Tool | Best when you want to | Price per 1,000 results |
|---|---|---|
| Vinted Smart Scraper | search by keyword across 26 Vinted country sites, compare prices between markets, watch sellers | $2.50 |
| Vinted Turbo Scraper | paste the Vinted URLs you already have (searches, brand and category pages, seller wardrobes, single items) | $3.50 |
Smart starts from a keyword and the countries you pick. Turbo starts from a URL, so every filter you set on Vinted in your browser is kept as is.
Step by step: Vinted listings with Vinted Smart Scraper
Here is the shortest path from a keyword to a spreadsheet with the Vinted Smart Scraper for keyword searches.
- Create an Apify account and open the actor.
- Pick the Quick search preset (
QUICK_SEARCH). It returns listing rows for one keyword and is the cheapest way to start. - Type your keyword, for example
nike air force 1. - Choose one or more countries, for example
frfor vinted.fr. - Set Max items to a small number such as 20 for a first test.
- Click Start, then download the rows as JSON, CSV or Excel, or read them through the API.
The same run as JSON input:
{
"workflowPreset": "QUICK_SEARCH",
"query": "nike air force 1",
"countries": ["fr"],
"maxItems": 20
}Other presets cover other jobs: ARBITRAGE_SCANNER compares a product across several markets and adds a price-gap summary, DEAL_ALERTS is meant for scheduled checks of fresh listings, and SELLER_WATCHLIST reads seller profiles. Note that an API call with a query but no workflowPreset or mode runs the Arbitrage Scanner, so send QUICK_SEARCH explicitly when you only want listings.
Vinted API in Python: a working example
Install the official Apify client for Python:
pip install apify-clientThen call the actor with the input above and read the rows. Keep your token in an environment variable rather than in the code.
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_API_TOKEN"])
run = client.actor("kazkn/vinted-smart-scraper").call(run_input={
"workflowPreset": "QUICK_SEARCH",
"query": "nike air force 1",
"countries": ["fr"],
"maxItems": 20,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("price"), item.get("currency"), item.get("title"), item.get("url"))call() starts the run and waits for it to finish. The rows land in the run's default dataset, which you can page through with iterate_items() or export. The client's full reference is in the Apify API client for Python documentation.
If you already have Vinted URLs, the Vinted Turbo Scraper for Vinted URLs takes them directly. Its input is a list of links, one per line:
{
"startUrls": "https://www.vinted.fr/catalog?search_text=nike+dunk&order=newest_first"
}The Python code is the same, with kazkn/vinted-turbo-scraper as the actor name.
What data you get back
Each row is one listing. These are the main fields of Vinted Smart Scraper:
| Field | What it holds |
|---|---|
title | Listing title as written by the seller |
price | Asking price as a number |
currency | Currency of the listing, such as EUR, GBP or PLN |
brand | Brand name when Vinted shows one |
size | Size label of the item |
condition | Item condition shown on the listing |
url | Direct link to the Vinted listing |
country | Vinted market the row came from, such as fr or de |
favouriteCount | Number of users who saved the item |
seller | Seller id, username and profile link |
photos | Image URLs of the listing |
opportunityScore | Score for the price gap found in a cross-country run |
spread | Price difference between the cheapest and the dearest market |
soldItemCount | Number of items a seller has sold, from a seller profile run |
scrapedAt | Date and time the row was collected |
opportunityScore and spread only appear in cross-country runs, and soldItemCount only in seller profile runs. Here is part of a real row from a Quick search on vinted.fr:
{
"title": "Nike Roze Vintage-Style Crewneck Sweater met Groot Logo",
"brand": "Nike",
"price": 5,
"currency": "EUR",
"size": "S",
"condition": "Bon état",
"country": "fr",
"favouriteCount": 22
}Titles and conditions come back in the language the seller and the site used, so a vinted.fr row can have a Dutch title and a French condition label. Vinted Turbo Scraper returns similar fields, plus id, originalPrice when Vinted displays one, color and isSold.
Costs and limits
What a run costs
Both tools bill per result, so you pay for the rows you get:
- Vinted Smart Scraper: $2.50 per 1,000 results, so the 20-listing example above costs about $0.05 in results, and 1,000 listings about $2.50.
- Vinted Turbo Scraper: $3.50 per 1,000 results, so 1,000 listings cost about $3.50.
Each run also has a small start charge, and some Smart Scraper workflows (such as the cross-country Arbitrage Scanner) add a fixed workflow charge. Quick search does not. The Pricing tab of each actor shows the current rates by Apify plan. On a free Apify account, broad Smart Scraper searches are capped at 30 results, which is enough for a test.
Limits to know
- Not an official API. Both tools read public Vinted pages. If Vinted changes its site, a fix may be needed.
- Vinted can hide, remove or challenge listings. Results can differ by country, and a run can return fewer rows than you asked for. Start with a small run.
- Price comparison between euro markets only. Smart Scraper accepts 26 country sites, but its cross-country price comparison works between euro-zone markets.
- No sold-listing search. Vinted no longer shows sold listings in public search. For a seller's number of sales, use
soldItemCountfrom a seller profile run. - Treat price gaps as leads. Check shipping, fees, condition and demand on the live listing before you buy anything.
Is it legal?
This is not legal advice, but here are the points that matter.
- Public data. Both tools read publicly visible listing and seller pages. They do not buy or sell anything for you.
- The site's terms. Vinted has its own terms of use, and they can restrict automated access. Read them, and weigh your use case, volume and country before you start.
- Personal data and GDPR. Listings include seller usernames and profile links, which can be personal data. In the European Union, the GDPR applies to collecting and storing it. Only keep personal data you have a legitimate reason to process, store it safely, and drop seller fields you do not need. If you are unsure, ask a lawyer.
Price research on listings is a very different case from building a database of people. Keep your use on the first side.
FAQ
Does Vinted have a public API?
Not one we could confirm. There is no public, documented Vinted API for listing data. Tools like Vinted Smart Scraper and Vinted Turbo Scraper are independent and give you an API on top of public Vinted pages.
Can you scrape Vinted with Python?
Yes. You can write your own scraper, or call a hosted one with the apify-client package as shown above and read the rows from the dataset, without handling sessions, pagination or blocking yourself.
Which countries are supported?
Vinted Smart Scraper accepts 26 Vinted country sites, from vinted.fr and vinted.de to vinted.co.uk and vinted.com. Vinted Turbo Scraper works with the URLs of the same country sites.
Smart or Turbo: which one should I use?
Use Smart when you start from a keyword, want several countries or need seller profiles and price-gap scores. Use Turbo when you already have Vinted links, such as a saved search, a brand page or a seller's wardrobe.
How much does it cost to get 1,000 Vinted listings?
About $2.50 in results with Vinted Smart Scraper, or $3.50 with Vinted Turbo Scraper, plus the small per-run start charge shown on each actor's Pricing tab.

