Vinted Scraper — search & extract listings
Pricing
from $2.00 / 1,000 some-events
Vinted Scraper — search & extract listings
Scrape Vinted marketplace listings across 14 countries. Extract prices, brands, seller data, images, and more from the second-hand fashion platform.
Pricing
from $2.00 / 1,000 some-events
Rating
0.0
(0)
Developer
Steven Bennett
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Vinted Scraper
Extract listings from Vinted — Europe's largest second-hand fashion marketplace with 80M+ members across 16 countries.
No existing Vinted scraper on Apify Store. First-mover advantage in this niche.

Features
- 🔍 Search anything — keyword, brand, size, price range, condition filters
- 🌍 14 country domains — UK, France, Germany, Netherlands, Italy, Spain, Poland, US, Czechia, Austria, Lithuania, Luxembourg, Portugal, Belgium
- 📊 Rich data — price (incl. buyer protection fee), brand, size, condition, photos, seller info, favourites, view count, promoted status
- 🔄 Smart sorting — newest, price low→high, price high→low, relevance
- 🛡️ Anti-bot resistant — headless browser with session rotation handles Cloudflare
- 📦 No full detail needed — catalog pages already contain all item data
- 💰 Pay-per-event — you only pay for what you use
Pricing
| Event | Price |
|---|---|
| Start | $0.50 per run |
| Per item | $0.0015 per listing ($1.50 / 1,000 items) |
A typical search for "jeans" (960 results) would cost ~$1.94. A small search (50 results) costs ~$0.58.
Quick Start
Via Apify Console
- Go to Vinted Scraper in Apify Console
- Click Run and fill in the fields:
search— what to look for (e.g. "Levi's 501")country— Vinted domain (e.g.co.uk,fr,de)maxItems— how many listings to scrape
- Wait for the run to complete
- Download results as JSON, CSV, or Excel
Via API
curl -X POST "https://api.apify.com/v2/acts/~vinted-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"search": "Levi's 501","country": "co.uk","maxItems": 100,"order": "price_low_to_high"}'
Via Apify SDK (Node.js)
import { Actor } from 'apify';const run = await Actor.call('~vinted-scraper', {search: 'Levi\'s 501',country: 'co.uk',maxItems: 100,});const { items } = await Actor.openDataset(run.defaultDatasetId);console.log(items);
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
search | string | required | Search keyword or phrase |
country | string | co.uk | Vinted domain: co.uk, fr, de, nl, it, es, pl, com, cz, at, lt, lu, pt, be |
maxItems | number | 100 | Max listings to scrape (1–100,000) |
order | string | newest_first | Sort: newest_first, price_low_to_high, price_high_to_low, relevance |
brand | string | — | Filter by brand name |
size | string | — | Filter by size ID |
minPrice | number | — | Minimum price |
maxPrice | number | — | Maximum price |
condition | string | — | new_with_tags, new_without_tags, very_good, good, satisfactory |
scrapeFullDetails | boolean | false | Visit each item's detail page for descriptions |
proxyConfiguration | object | Apify proxy | Proxy configuration (recommended) |
Output Schema
Each scraped listing returns the following fields:
Basic Fields (all modes)
| # | Field | Type | Description |
|---|---|---|---|
| 1 | id | number | Unique Vinted item ID |
| 2 | title | string | null | Listing title |
| 3 | brand | string | null | Brand name (e.g. Levi's, Zara) |
| 4 | price | number | null | Item price |
| 5 | currency | string | null | Currency code (GBP, EUR, USD) |
| 6 | totalPrice | number | null | Price + buyer protection fee |
| 7 | serviceFee | number | null | Vinted's buyer protection fee |
| 8 | size | string | null | Size label (e.g. "M / UK 12-14") |
| 9 | condition | string | null | Item condition (New, Very good, Good, Satisfactory) |
| 10 | image | string | null | Main photo URL |
| 11 | images | string[] | All photo URLs (up to 20) |
| 12 | url | string | null | Direct link to the listing on Vinted |
| 13 | favouriteCount | number | Number of favourites/likes |
| 14 | viewCount | number | Number of views |
| 15 | promoted | boolean | Whether the item is promoted (boosted) |
| 16 | sellerId | number | null | Vinted user ID of the seller |
| 17 | sellerUsername | string | null | Seller's username |
| 18 | sellerAvatar | string | null | Seller's profile picture URL |
| 19 | sellerBusiness | boolean | Whether seller has a business account |
| 20 | country | string | Country domain scraped (e.g. co.uk, fr) |
| 21 | scrapedAt | string | ISO 8601 timestamp of when the item was scraped |
Detail Fields (when scrapeFullDetails: true)
| # | Field | Type | Description |
|---|---|---|---|
| 22 | description | string | null | Full item description text |
| 23 | material | string | null | Material composition (if available) |
| 24 | colour | string | null | Item colour (if available) |
| 25 | brandSize | string | null | Brand-specific size label |
| 26 | specificFields | object | null | Key-value pairs from item specifics table |
Sample Output
{"id": 9316064421,"title": "Nike Pro Fit Orange Activewear Tank Top Size XXL","brand": "Nike","price": 7.0,"currency": "GBP","totalPrice": 8.05,"serviceFee": 1.05,"size": "XXL","condition": "Very good","image": "https://images1.vinted.net/t/06_012fc_.../f800/1783154961.webp","images": ["https://images1.vinted.net/t/06_012fc_...1/f800/1783154961.webp","https://images1.vinted.net/t/03_00f7f_...2/f800/1783154961.webp"],"url": "https://www.vinted.co.uk/items/9316064421-nike-tank-top","favouriteCount": 0,"viewCount": 0,"promoted": false,"sellerId": 189006959,"sellerUsername": "louisloftus","sellerAvatar": "https://images1.vinted.net/t/01_00cb7_.../f800/1779568859.webp","sellerBusiness": false,"country": "co.uk","scrapedAt": "2026-07-04T11:30:18.220Z"}
Use Cases
- Reseller research — find underpriced items, track trends
- Brand monitoring — track how much your brand trades for second-hand
- Market analysis — fashion economics, price distribution studies
- Competitive intelligence — monitor competitor products
- Data collection — AI/ML training datasets for fashion models
Rate Limits & Anti-Bot
Vinted uses Cloudflare protection. This Actor handles it with:
- ✅ Headless Playwright browser (full JS rendering)
- ✅ Session rotation with Apify proxy
- ✅ Retry logic with backoff
- ✅ Stealth plugin to avoid detection
Using the Actor without Apify proxy may result in blocking.
Technical Details
The scraper extracts data from Vinted's React Server Components (RSC) streaming payload — the same data the frontend renders. This means:
- No fragile CSS selector dependency
- No DOM parsing errors
- Clean, structured JSON extraction
- Fast page-level data collection (no per-item requests unless
scrapeFullDetailsis enabled)
Stack: Crawlee (PlaywrightCrawler) · Node.js 20 · Apify SDK
Changelog
v1.0 — 2026-07-04
- Initial release
- 14 country domain support
- Full search/filter pipeline
- RSC payload extraction
- Detail page scraping (optional)
Built with 🛠️ by Meester Bot · Not affiliated with Vinted