Vinted Scraper

Vinted is Europe's largest fashion resale marketplace, and pricing on it means seeing the whole shelf: every live listing for a brand and size across all...

Vinted is Europe's largest fashion resale marketplace, and pricing on it means seeing the whole shelf: every live listing for a brand and size across all 23 national sites. Rows give brand, size, condition, asking price and the buyer-protection total a buyer pays. No seller usernames collected.

$3.00 / 1,000 · 100.0% success over 30 public runs in the last 30 days.

Run it on Apify → Free to try - runs bill per result on your own account.

What you give it

Every field is optional unless marked; sensible defaults do the rest.

FieldTypeWhat it doesDefault
searchQuery string What to search for on Vinted, exactly as you would type it in the site's search box, e.g. "nike air max" or "zara dress". Leave it out when you only re-check items through listingIds. nike
listingIds array Re-check items you already know instead of searching: one item ID per line (the number after /items/ in every Vinted address, and the itemId of every dataset item), or the item's full address. Each one is read from its own page on the national site chosen in Domain - title, brand, size, condition, colour, price, every photo, the full description, the favourite count and the site's own status (active, reserved, hidden). An item that is gone from the site (sold, deleted) is skipped, named in the log and not billed. When given, the search fields of this form are ignored and the run status says which. Up to 50. []
domain string Which national Vinted site to search. Prices come in that site's currency. fr
priceMin integer Only include items costing at least this much, in the selected site's currency. -
priceMax integer Only include items costing at most this much, in the selected site's currency. -
sortBy string Order of results: newest (best for monitoring), price_asc, price_desc, or relevance. newest
aiAnalysis boolean Add AI-computed fields to every item: normalizedBrand, normalizedCategory, conditionScore (1-5) and listingQuality - directly comparable across sellers' free-form listings. Billed $0.50 per 1,000 analyzed items on top of the result price. Paid Apify plans only. False
scrapeDetails boolean Read each item's own page for the seller's full description and the item colour, neither of which the search results carry. This makes one extra request per item, so a run is slower and costs one more page fetch each. Seller identity is never read - only the description text and colour reach the output. Leave off for a fast search-only sweep. False
maxItems integer Stop after this many items. Free-plan runs are capped at 5 items. The form starts at 25 for a cheap first run - that is the form's prefill, not a cap on your plan; clear it to use the default of 500. 500
reportFailures boolean When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. Your input itself, your results and your identity are never sent, and successful runs send nothing at all. Switch this off and the actor behaves exactly the same. True

What you get back

One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.

A real result row from a recent run:

{
  "brand": "Nike",
  "businessSeller": false,
  "condition": "Neuf avec étiquette",
  "currency": "EUR",
  "favouriteCount": 0,
  "imageUrls": [
    "https://images1.vinted.net/t/03_001a3_KwDsmyZ3BGFybcicNpYScBvE/f800/c663e2c9.webp?s=5ac39d05ae95ad9514adebb2c6a344b38844bdd4"
  ],
  "itemId": "10395995903",
  "priceCents": 2500,
  "promoted": false,
  "serviceFeeCents": 195,
  "size": "38.5",
  "title": "Nike killshot 2",
  "totalPriceCents": 2695,
  "url": "https://www.vinted.fr/items/10395995903-nike-killshot-2",
  "viewCount": 0
}
FieldTypeMeaning
itemId string Vinted item ID.
url string Direct link to the item.
title string Item title as posted.
brand ['string', 'null'] Brand shown on the item card.
size ['string', 'null'] Size as displayed, e.g. "M" or "12 ans / 152 cm".
condition ['string', 'null'] Condition as displayed, in the site's language.
priceCents ['integer', 'null'] Item price in minor units (cents/pence) of the currency.
currency ['string', 'null'] Currency of the selected site, e.g. EUR, GBP, PLN.
serviceFeeCents ['integer', 'null'] Buyer protection fee in minor units.
totalPriceCents ['integer', 'null'] Total buyer price including the fee, in minor units.
businessSeller boolean True when sold by a professional seller. Seller identity is never collected.
promoted boolean True for paid promoted placements.
favouriteCount integer How many users favourited the item - a demand signal.
viewCount integer View count when reported by the site.
imageUrls array Item photo URLs (up to 8).
description string The seller's free-text description. Only present when Fetch descriptions is on; read from the item's own page. Seller identity is never read.
color string The item colour as Vinted records it. Only present when Fetch descriptions is on.
normalizedBrand string AI analysis (aiAnalysis: true): canonical brand name, "unbranded" when none. Absent on standard runs.
normalizedCategory string AI analysis: one of a fixed category set (tops, shoes, bags, ...) for cross-seller comparison. Absent on standard runs.
conditionScore integer AI analysis: condition normalized to 1 (heavily worn) - 5 (new), language-independent. Absent on standard runs.
listingQuality string AI analysis: excellent, good, fair or poor - completeness and consistency of the listing. Absent on standard runs.
status string The site's own state of the item: up for sale, reserved for a buyer, or hidden by the seller. Present on items read through listingIds; the search card does not carry it (a sold or deleted item is not served at all).

Health

100.0% success over 30 public runs in the last 30 days. Live record, failures included: status page.

Full documentation, examples and the AI-assistant prompt live on the store page.

The history behind this tool

This tool answers what a source shows today. Its output also feeds a series recorded every day and kept: Resale sold comps, recovered by observation. A run gives you the current market; the series is the part that cannot be reconstructed afterwards, because the source overwrites it.