Vinted Products Crawler
Pricing
from $1.50 / 1,000 results
Vinted Products Crawler
Scrape Vinted listings from all 27 country sites — .fr, .de, .co.uk, .pl and more, mixable in one run. Get prices, brands, sizes, conditions, seller ratings and photos as clean JSON, CSV or Excel. Built for reselling, price tracking and market research. Not affiliated with Vinted Limited.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Alkausari M
Maintained by CommunityActor stats
1
Bookmarked
47
Total users
18
Monthly active users
a day ago
Last modified
Categories
Share
Get thousands of Vinted listings into a spreadsheet — from any of Vinted's 27 country sites. This fast, no-code scraper pulls prices, brands, sizes, conditions, seller ratings, and photos from any catalog, search, or listing page, and hands each listing back as one clean row you can open in Excel or Google Sheets — or pipe straight into your own app. Whether you're reselling, hunting bargains, or tracking the second-hand market, get the data you need in minutes instead of scrolling for hours.
Built and maintained by Alkausari M.
✦ Highlights
- 🌍 Every Vinted country —
.com,.co.uk,.fr,.de,.es,.it,.pland 20 more, mixable in one run - ⚡ Two speeds — blazing-fast mode grabs ~96 listings per request; full-detail mode digs into every listing page
- 🛍️ Full listing data — title, price, size, condition, brand, color, and description
- 👤 Seller insights — username, rating, location, trust badges, and last active time
- 🖼️ Product photos — up to 9 high-resolution image links per item
- 🔗 Flexible input — scrape whole catalogs/searches, single item links, or a mix
- 📊 Any format — JSON, CSV, Excel, XML, or live via the Apify API
- 🛡 Anti-blocking built-in — residential proxies and smart retries
💵 How much does it cost?
You pay per result, and the price depends on which mode you run:
| Mode | What you get | Price |
|---|---|---|
| Fast (default) | 15 core fields — title, price, currency, size, condition, brand, images, seller | $1.5 / 1,000 items |
| Full details | all 28 fields — adds description, colour, material, measurements, shipping, seller rating & location | $8.5 / 1,000 items |
Full-detail mode opens every listing's own page, which uses far more residential proxy bandwidth — that's the difference in price. The surcharge is only applied to pages that were fetched and read successfully. If a listing's page can't be opened, you are not charged the surcharge for it — the item is still saved with the details we already had from the catalog, and the item-page fields are left empty.
💡 Start in fast mode. It already covers price tracking, resale sourcing and market research — only switch on full details when you specifically need descriptions or materials.
⚙ How it works
▶️ In a hurry? Start from a ready-made task — a saved setup you can run as-is or tweak, so you don't have to build a URL at all. See Ready-made tasks below.
- Paste a URL — a catalog/search page (apply any filters you like first), a direct item link, or several of each.
- Choose how many pages — set the start and end page to control how much you scrape.
- Need descriptions too? — turn on Fetch full item details for descriptions, colours, materials, shipping and seller ratings (slower; the default fast mode is fine for price tracking).
- Click Start — proxies, retries, and parsing are handled for you.
- Download — get your results as JSON, CSV, or Excel, or pull them from the API.
Example input:
{"startUrls": [{ "url": "https://www.vinted.fr/catalog?catalog[]=1904&order=newest_first" },{ "url": "https://www.vinted.de/catalog?search_text=nike" }],"startPageNum": 1,"endPageNum": 5,"maxItems": 200,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
💡 Tip: Apply your filters on Vinted before copying the URL — the scraper keeps every filter (brand, size, category, price range, condition) you set.
▶️ Ready-made tasks
Don't want to build a URL? These are pre-configured setups — open one, hit Start, and you get results. Each is a normal task, so you can change the filters, page range or item limit and save it as your own.
| Task | What it does | Best for |
|---|---|---|
| Track new women's fashion listings on Vinted UK | Latest womenswear from vinted.co.uk, fast mode | Spotting new stock the moment it lands |
| Compare sneaker prices across Vinted France and Germany | Two countries in one run, with comparable priceAmount + currency | Cross-border bargain hunting |
| Research a brand's resale prices and descriptions | One brand with full details — descriptions, materials, seller ratings | Valuing stock before you buy |
Tasks remember their settings, so you can also put one on a schedule — see Integrations & scheduling.
📦 What you get back
Each product listing is one structured record. Here's a real one from vinted.fr, with Fetch full item details turned on:
{"itemId": 9627980284,"url": "https://www.vinted.fr/items/9627980284-pantalon-hugo-boss-beige-clair","domain": "vinted.fr","title": "pantalon Hugo Boss beige clair taille 50 coupe habillée","price": "€10.00","priceAmount": 10,"currency": "EUR","totalPrice": "€11.20","size": "W50 | FR 60","condition": "Très bon état","brand": "Hugo Boss","brandUrl": "https://www.vinted.fr/catalog/261-tailored-trousers/brand/120-hugo-boss","color": "Beige","description": "Pantalon homme Hugo Boss, coloris beige clair / écru…","uploaded": "Il y a 14 minutes","seller": "lysker","sellerProfileUrl": "https://www.vinted.fr/member/14081384-lysker","sellerRating": 5,"sellerRatingCount": 253,"sellerBadges": null,"sellerLocation": null,"sellerLastSeen": "Vu la dernière fois : il y a 41 minutes","favorites": 0,"images": ["https://images1.vinted.net/tc/05_02362_GTAwfUjrJ4XjL4aoiRA6v68Q/1786381468.jpeg","... up to 9 images"],"shippingPrice": "à partir de 2,83 €","freeShipping": false,"material": null,"measurements": null,"scrapedAt": "2026-08-10T17:19:09.234Z"}
📋 Every record in a run has the same columns. The default fast mode includes the core fields (title, price, size, condition, brand, images, seller username). Turning on Fetch full item details adds description, colour, material, measurements, shipping, and the seller's rating, location and last-seen. A
nullvalue always means the data genuinely wasn't available — never "not collected".
🌍 Scraping a non-English domain? Text written by Vinted —
condition("Very good" / "Sehr gut" / "Très bon état"),size,uploadedandsellerLastSeen— comes back in that site's own language, because that is how Vinted serves it. Numbers and codes are not: usepriceAmount+currency(rather than the formattedpricestring),sellerRating, anddomainwhen comparing listings across countries in one dataset. One known limitation:sellerBadgesis only available onvinted.comandvinted.co.ukand comes back empty on other domains.
Download as CSV or Excel and each listing becomes a row, each field a column.
📋 Input
| Field | Description | Required | Default |
|---|---|---|---|
| Start URLs | Vinted catalog/search pages, direct item URLs, or a mix — from any Vinted country domain. Direct item URLs are always scraped with full details | Yes | — |
| Start Page | First catalog page to scrape | No | 1 |
| End Page | Last catalog page to scrape (inclusive), up to Vinted's limit of 10. Scraping stops early if the catalog has fewer pages | No | 1 |
| Max items | Exact number of listings to save. Scraping stops as soon as it has this many. 0 means no limit. For multi-country runs, see the note below | No | 0 |
| Max Concurrency | How many pages to scrape in parallel. Lower it if you hit blocks; raise it for faster runs | No | 10 |
| Fetch full item details | OFF (default) is fast and cheap. Turn ON to also collect description, colour, material, measurements, shipping, and seller rating/location — much slower and uses far more data | No | false |
| Proxy Configuration | Proxy settings. Leave as default if unsure | No | Apify Proxy (Residential) |
Each catalog page holds about 96 listings, so pages 1–5 returns roughly 480 items. If you want a specific number instead, set Max items — the run stops the moment it has that many, and you're only billed for what you get.
📄 One search tops out at ~960 listings. That's Vinted's own limit, not ours — see Getting more than 960 listings for the way around it.
⚠️ Scraping more than one country in the same run? Leave Max items at
0and size the run with Start/End Page. Max items is a single budget shared across all your URLs and filled first-come-first-served, so it splits unevenly between domains — 300 items across France and Germany can land as 192/108, differently each run.
📄 Getting more than 960 listings
Vinted serves only 10 pages per search — on the website and through its API alike. At ~96 listings a page that's a hard ceiling of roughly 960 listings per URL, no matter how high you set End Page. Ask for 150 pages and you'll still get 10.
The limit applies to each search, not to each run. So the way past it is to split one broad search into several narrower ones — each gets its own 10-page window.
Instead of one broad URL (max ~960 results):
{"startUrls": [{ "url": "https://www.vinted.fr/catalog?catalog[]=2050&price_from=30&price_to=150" }],"endPageNum": 10}
Split it by price band (max ~2,880 results — three times the data, same filters):
{"startUrls": [{ "url": "https://www.vinted.fr/catalog?catalog[]=2050&price_from=30&price_to=60" },{ "url": "https://www.vinted.fr/catalog?catalog[]=2050&price_from=60&price_to=100" },{ "url": "https://www.vinted.fr/catalog?catalog[]=2050&price_from=100&price_to=150" }],"endPageNum": 10,"maxItems": 0}
Good ways to split
| Split by | When it works well | Example |
|---|---|---|
| Price band | Almost always — bands are easy to make non-overlapping | €30–60, €60–100, €100–150 |
| Brand | You're already filtering several brands | one URL per brand_ids[] |
| Size | Clothing and shoes, where buyers care about one size anyway | one URL per size_ids[] |
| Category | Broad searches spanning several categories | one URL per catalog[] |
| Country | You want the same search across markets | .fr, .de, .it — see the note below |
The quickest way to build them is on Vinted itself: apply one extra filter, copy the URL, change that filter, copy again. Every filter you set is preserved.
⚠️ Splitting into many URLs? Leave Max items at
0. It's a single budget shared by the whole run, so it would cut some URLs short while others take everything — control the size with End Page instead.
💡 Use cases
- Price research — track second-hand prices for specific brands or items over time.
- Resale sourcing — spot underpriced listings by comparing price, brand, and condition.
- Market analysis — understand what sells, at what price, and in what condition.
- Inventory feeds — build product lists for a category or brand to resell elsewhere.
- Data pipelines — feed a dashboard, a database, or your own app.
🔌 Integrations & scheduling
Results don't have to stay on Apify. Without writing any code you can:
- Send listings to Google Sheets, Airtable or Slack — pick the integration on the Actor's Integrations tab and every run appends its results automatically.
- Connect anything else via Zapier or Make — thousands of apps, triggered when a run finishes.
- Fire a webhook to your own server the moment a run completes, with a link to the fresh dataset.
- Pull the data over the API in JSON, CSV, Excel or XML — one URL, no auth juggling, ideal for a script or notebook.
Run it on a schedule. Point the Actor at a saved Vinted search, set it to run every morning, and send the output to a sheet — that's a working price tracker with no code at all. Combine it with Max items to keep each run's cost predictable.
Use it from an AI assistant
Connected Claude, ChatGPT or any MCP client to Apify? Paste this and it will know how to run the scraper for you:
Use alkausari_mujahid/vinted-products-crawler on Apify to scrape Vinted listings.Put Vinted catalog/search URLs or direct item URLs in startUrls — any of the 27 countrydomains work (.com, .co.uk, .fr, .de, .pl …) and they can be mixed in one run. It returnsitemId, url, domain, title, price, priceAmount, currency, totalPrice, size, condition,brand, seller, sellerProfileUrl, favorites and images. Set fetchItemDetails to true toalso get description, colour, material, measurements, shipping and the seller's rating,location and last-seen — slower and charged extra per item. Use maxItems to cap asingle-country run; for multi-country runs leave maxItems at 0 and use startPageNum /endPageNum instead, because the cap is shared across all URLs. Keep the residential proxyconfiguration from the input schema.
💡 Tracking prices over time? Schedule daily runs and keep every result. Every listing carries a stable
itemId, so you can match today's data against yesterday's to spot price drops and see which items disappeared — andscrapedAt+priceAmountare all you need to chart how a brand or category moves.
❓ FAQ
The scraper got blocked or returned nothing — what do I do? Make sure the proxy is enabled (it is by default). Residential proxies route requests through real IP addresses that Vinted is far less likely to block.
I got fewer results than expected — why? Three things to check, in order. Max items — if it's set, the run stops the moment it reaches that number. End Page — raise it to scrape more pages. And Vinted's own 10-page limit, which caps any single search at ~960 listings: see Getting more than 960 listings.
Can I scrape several countries in one run?
Yes — mix vinted.fr, vinted.de, vinted.co.uk and any others in Start URLs. Each record carries a domain field so you can tell them apart, and priceAmount + currency let you compare prices across them.
Scraping several countries? Use the page range, not Max items.
Max items is one budget shared by the whole run, not a quota per country — and it's filled first-come-first-served. Ask for 300 items across France and Germany and you might get 192 French and 108 German, with the split changing every run. If you want an even sample, set Max items to 0 and control the size with Start/End Page instead: two countries × 2 pages gives you 192 from each. Reserve Max items for single-country runs, where there's no split to unbalance.
Where are the description, colour and material columns? Those come from each item's own page, so they're only included when Fetch full item details is turned on. The default fast mode skips them to keep runs quick and cheap.
Why are some fields empty (null)?
Vinted sellers aren't required to fill in every detail. Optional fields like material or measurements appear as null when the seller left them blank.
Is it legal to scrape Vinted? This Actor collects only publicly visible listing data — the same information any visitor sees without logging in. Use responsibly and in accordance with Vinted's Terms of Service.
📮 Support
Bugs, feature requests, or custom scraping work — open an issue on Apify or email alkausarimujahid@gmail.com.