← Blog

Vinted

Vinted Scraper: How to Scrape Vinted Listings in 26 Countries

Scrape Vinted search results into JSON, CSV or Excel: titles, prices, brands, sizes, condition, views and sellers. No code, no account, 26 countries.

Epic Scrapers

A Vinted scraper turns a Vinted search into a spreadsheet. Instead of scrolling through the catalog and copying prices by hand, you give it a keyword or a filtered search URL and get back one row per listing: title, asking price, brand, size, condition, photos, favourites, views and seller.

This guide shows how to scrape Vinted with the Vinted Scraper on Apify: what data you get, how to set up your first run in a few minutes, how to search several countries at once, and what resellers and analysts actually use the data for.

What data can you scrape from Vinted?

Each row in the output is one active listing from Vinted’s search or catalog results.

Group Fields
Listing id, title, url, brand_title, size_title, status (condition, e.g. Very good)
Price price (amount, currency_code), service_fee, total_item_price
Interest favourite_count, view_count
Media photo, photos (image URLs)
Seller user (ID, login, profile URL, photo, business flag)
Search vinted_country (the country site the listing was found on)

Optional features add more fields: price tracking adds is_new_listing, previous_price, price_change and price_dropped, and AI filtering adds an ai_filter result. The catalog doesn’t include full item descriptions, seller ratings or shipping costs, so neither does the output.

Here is a trimmed record:

{
  "id": 1234567890,
  "title": "Vintage denim jacket",
  "url": "https://www.vinted.it/items/1234567890-vintage-denim-jacket",
  "price": { "amount": "25.00", "currency_code": "EUR" },
  "brand_title": "Levi's",
  "size_title": "M",
  "status": "Very good",
  "user": {
    "id": 123456,
    "login": "example_seller",
    "profile_url": "https://www.vinted.it/member/123456-example-seller",
    "business": false
  },
  "favourite_count": 12,
  "view_count": 48,
  "vinted_country": "it"
}

How to scrape Vinted in 5 minutes (no code)

  1. Open the Vinted Scraper and click Try for free.
  2. Add a search term under Keywords, for example nike air max, and pick a Main country.
  3. Leave Products per search at 20 for the first run.
  4. Click Start. When the run finishes, open the Output tab and export to JSON, CSV, Excel or Google Sheets.

The same run as JSON input:

{
  "keywords": ["nike air max"],
  "country": "it",
  "maxProducts": 20
}

You don’t need a Vinted account, cookies or proxies. The actor handles access and uses a local connection in each country, so you see what shoppers there see.

Keyword search or filtered Vinted URL?

There are two ways to tell the scraper what to search.

Keywords are quickest. Each keyword is a separate search on the Main country site (country), and you can add a price range with minPrice and maxPrice in that country’s currency.

Vinted URLs (startUrls) give you every filter Vinted has. Set brand, size, condition, category and sort order on the Vinted website, copy the URL from your browser, and paste it in. The actor keeps all of its filters.

{
  "startUrls": [
    { "url": "https://www.vinted.fr/catalog?search_text=vintage%20jacket&price_to=40&order=newest_first" }
  ],
  "maxProducts": 50
}

You can mix both in one run. Country and price options apply only to keywords, never to URLs. maxProducts applies to each URL, keyword and country separately, up to 960, which is Vinted’s own limit per search. To collect more than 960 listings, split the search by price range, size or category.

Scrape several Vinted countries at once

Vinted runs separate sites for 26 countries, including France, Germany, Italy, Spain, Poland, the Netherlands, the UK (gb) and the US (us). Add countries to Also search in (compareCountries) and every keyword runs in each of them:

{
  "keywords": ["arc'teryx jacket"],
  "country": "de",
  "compareCountries": ["fr", "it", "pl", "es", "nl"],
  "maxProducts": 100
}

Every listing gets a vinted_country field, and the run saves a COUNTRY_PRICE_SUMMARY record in its key-value store with the count, minimum, median, average and maximum price per country, converted to EUR, plus cheapest_country and most_expensive_country. That answers “where is this brand cheapest on Vinted?” in one run. The comparison uses asking prices without buyer fees or shipping, so factor those in before you buy across borders.

Filter listings with plain-language rules

Vinted’s filters can’t express “only ThinkPads with 16 GB RAM that aren’t broken”. The AI filter can. Turn on aiFilteringEnabled, describe what you want in aiFilterPrompt, and only matching listings are saved:

{
  "keywords": ["thinkpad"],
  "country": "it",
  "maxProducts": 50,
  "aiFilteringEnabled": true,
  "aiFilterPrompt": "Include only ThinkPads with at least 16 GB RAM. Exclude broken devices and listings for parts.",
  "aiMatchThreshold": "0.7"
}

aiMatchThreshold runs from "0.1" (broad) to "0.9" (strict). The AI reads each listing’s text and fields, not its photos.

What people use Vinted data for

  • Resellers pricing stock. Search a brand and model, filter by condition with a Vinted URL, and look at the spread of asking prices before you list your own.
  • Sourcing across borders. Run your best-selling brands in five or six countries and buy where the median is lowest.
  • Deal hunting. Schedule a newest-first search and get pinged when something new or cheaper appears. See Vinted new-listing alerts.
  • Price monitoring. Re-run the same search daily and build a price history per listing or per brand. See Vinted price tracking.
  • Market research and datasets. Collect thousands of listings per category to measure supply by brand, size or condition, or to train product-matching models. favourite_count and view_count are a useful demand signal.
  • Apps and dashboards. Pull results into your own code through the Apify API. See Vinted API and export options.

Getting the data out

Every run saves to an Apify dataset. Export from the Output tab as JSON, CSV, Excel, XML or HTML, or connect Google Sheets in the Integrations tab. JSON keeps nested objects like price and user intact; CSV and Excel flatten them into columns. price.amount is a string in the listing’s currency, so convert it before doing math and don’t average across currencies.

For cURL, Python and JavaScript examples, plus how to pull CSV or Excel straight from the API, read the Vinted API export guide.

Pricing

The actor is pay-per-event with no subscription: a small charge per run start and per listing saved, plus per tracked search or AI-checked listing if you use those features. Check the Pricing tab for current rates, and set a maximum cost per run if you want a hard ceiling.

FAQ

Does Vinted have an official API?

Vinted doesn’t offer a public API for searching listings. A scraper that reads the public catalog, exposed through the Apify API, is the practical way to get Vinted search data into code.

The actor collects publicly visible listing data. It doesn’t log in, buy items, message sellers or read private data. Public data can still be personal data (seller usernames, for example), so use it in line with Vinted’s terms and privacy laws such as GDPR. This isn’t legal advice.

Can I scrape sold items or sold prices?

No. This scraper covers active listings from search and catalog pages. A listing that disappears may have sold, or it may have been hidden or deleted.

Can I scrape a seller’s wardrobe or a single item page?

No. Paste search or catalog URLs only. Item (/items/...) and member (/member/...) URLs aren’t supported.

How many listings can I scrape?

Up to 960 per URL, keyword and country. Split broad searches into narrower ones to go beyond that.

Start scraping Vinted

Pick one keyword or filtered URL, keep the limit at 20, and look at the rows. Once the search returns what you expect, raise the limit, add countries, or schedule it. Run the Vinted Scraper on Apify or read more on the Vinted Scraper page.