Vinted Scraper: Paste a URL, Search, Closets & Item Details
Pricing
from $1.00 / 1,000 results
Vinted Scraper: Paste a URL, Search, Closets & Item Details
Paste any Vinted search, category, seller or item link, or search by keyword with brand, size, colour and price filters. Add full item details: description, colour, category, seller rating and shipping. All 26 markets. Listings $1 per 1,000, full item records $5 per 1,000.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Sourabh Kumar
Maintained by CommunityActor stats
0
Bookmarked
34
Total users
8
Monthly active users
6 days ago
Last modified
Categories
Share
Vinted scraper: search, seller closets, item details & brand lookup
Vinted has no public API. This actor turns any Vinted search, category, seller or item link into clean rows: price, fees, brand, size, condition, photos and seller. Switch on full item details and every row also gets the description, colour, category, seller rating and shipping price.
Listings $1 per 1,000. Full item records $5 per 1,000. Plus $0.002 per run.
Works on all 26 markets: ๐ฌ๐ง ๐ซ๐ท ๐ฉ๐ช ๐ฎ๐น ๐ช๐ธ ๐ณ๐ฑ ๐ต๐ฑ ๐ต๐น ๐ง๐ช ๐ฆ๐น ๐ฑ๐น ๐จ๐ฟ ๐ธ๐ฐ ๐ญ๐บ ๐ท๐ด ๐ญ๐ท ๐ซ๐ฎ ๐ฉ๐ฐ ๐ธ๐ช ๐ช๐ช ๐ฌ๐ท ๐ฎ๐ช ๐ฑ๐บ ๐ฑ๐ป ๐ธ๐ฎ ๐บ๐ธ
Why this scraper?
- ๐ Paste any Vinted link. Search, category, seller and item links all work, with the filters already in the link.
- ๐ฆ Full item details in the same run. Turn on one switch and search results come back as complete item records.
- ๐ท The full price picture on every row. Asking price, buyer-protection fee and the total the buyer pays, as three fields.
- ๐ท๏ธ Type a brand name, not an ID. Enter
yeezyand the actor finds Vinted's brand for you. - ๐ Size and colour filters that actually filter. Type
MorBlack; a label that doesn't exist stops the run and lists the valid ones. - ๐ All 26 markets, one input change. Swap the country code and every mode works the same, in the local currency.
- ๐ฆ Honest run status. If anything is missing, the status says what and why, instead of a short dataset that looks complete.
- ๐ No double billing. A link pasted twice is scraped once, and listings Vinted repeats across pages are removed and never charged.
What data can you extract?
| ๐ท๏ธ Title & brand | ๐ท Price | ๐งพ Buyer-protection fee | ๐งฎ Total buyer pays |
| ๐ Size | โจ Condition | ๐ธ Photos | โค๏ธ Favourites |
| ๐ค Seller login + URL | ๐ Seller ID | ๐ผ Business-seller flag | ๐ Promoted flag |
| ๐ Description * | ๐จ Colour * | ๐๏ธ Category path * | ๐ข Brand ID * |
| โญ Seller feedback + score * | ๐ Seller badges * | ๐ Shipping price * | ๐ Upload age * |
| ๐ฆ Sold / reserved / hidden * | ๐ Market & currency | ๐ Item URL | ๐ Scraped timestamp |
* Full item record only: turn on Include full item details, or use Item detail mode. Search rows carry one photo; full records carry every photo.
Scraping modes
You can skip modes entirely by pasting links into startUrls. Everything below is the long form, for when you'd rather build the query field by field.
๐ Paste Vinted links
Mix search, category, seller and item links in one run. Each link goes to the right mode and keeps its own market, so a vinted.fr link is scraped on the French site even when the rest are British.
{"startUrls": ["https://www.vinted.pl/catalog?search_text=kurtka&brand_ids[]=53&status_ids[]=6","https://www.vinted.cz/catalog/1049-boots?price_to=1500"],"maxResults": 200}
maxResults caps the whole run, not each link. If it fills up first, the run status says which links it didn't reach.
๐ Search by keyword
Search any market by keyword, then narrow with brand, category, size, colour, condition, price range and sort.
{"mode": "search","country": "uk","searchText": "jumper","brand": "nike","size": "M","color": "Black","maxResults": 120}
๐ฆ Full item details on every row
Add "includeDetails": true to a search, a pasted search or seller link, or a seller closet. Each listing then comes back as a full item record instead of the shorter listing row. It opens one extra page per row, so runs take longer: about 6 minutes for 300 rows.
{"mode": "search","country": "fr","searchText": "robe","includeDetails": true,"maxResults": 150}
๐ค Seller closet
Every active item from one seller, by member URL. Set maxResults to 0 for the whole closet.
{"mode": "user-listings","country": "uk","userUrl": "https://www.vinted.co.uk/member/3134438601","maxResults": 0}
๐งพ Item detail
Paste item URLs to get the full record for each one. A sold item still returns its record, marked isClosed: true.
{"mode": "item-detail","country": "uk","itemUrls": ["https://www.vinted.co.uk/items/10282786945-levis-501-sky-jeans-w-32"]}
๐ท๏ธ Brand lookup
Turn a brand name into Vinted's brand ID, with its item count and whether Vinted runs authenticity checks on it. Useful before you lock a brand into a scheduled search.
{"mode": "brand-catalog","country": "uk","brandKeyword": "yeezy"}
How to scrape Vinted: step by step
- Create a free Apify account. Takes 30 seconds, no card needed.
- Open Vinted Scraper in the Apify Console.
- Paste your Vinted links into Vinted URLs, or pick a mode and fill in its fields.
- Tick Include full item details if you want complete item records.
- Click Start. A 100-row search finishes in under a minute.
- Export as JSON, CSV or Excel, or pull the results through the API.
How much does Vinted Scraper cost?
You pay per row, and the price depends on what the row is:
| Row | Price | Free plan ($5 credit) | Starter plan ($29) |
|---|---|---|---|
| Listing (search, closet, brand) | $1.00 per 1,000 | about 5,000 rows | about 29,000 rows |
| Full item record (Include full item details, or Item detail mode) | $5.00 per 1,000 | about 1,000 rows | about 5,800 rows |
Each row is charged once, at one of the two prices. Every run also costs $0.002 (once per GB of memory; the default is 512 MB). There's no monthly minimum.
Rows the actor couldn't fetch are never billed. A row whose item page couldn't be read ships as a listing and is billed as a listing.
Input
| Field | Type | Default | Note |
|---|---|---|---|
startUrls | URL[] | none | Vinted search, category, seller or item links. Overrides mode and the filter fields |
mode | enum | search | search, user-listings, item-detail, brand-catalog. Ignored when startUrls is set |
country | enum | uk | One of the 26 markets, for example uk, fr, de, pl, us |
searchText | string | none | Keyword query (search) |
brand | string | none | Brand name, matched to Vinted's brand for you (search) |
category | integer | none | Vinted category ID: open a category on Vinted and take the number from the address bar, so /catalog/1049-boots is 1049. Easier still, paste the whole link into startUrls |
size | string | none | Size label such as M, UK 9 or EU 42 (search) |
color | string | none | Colour name such as Black, Cream or Burgundy (search) |
condition | array | none | Any of new_with_tags, new_without_tags, very_good, good, satisfactory |
priceFrom / priceTo | number | none | Price range in the market's currency |
sortBy | enum | relevance | relevance, price_low_to_high, price_high_to_low, newest_first |
userUrl | URL | none | Seller member URL (seller closet) |
itemUrls | URL[] | none | Item URLs (item detail) |
brandKeyword | string | none | Brand name to look up (brand lookup) |
includeDetails | boolean | false | Return full item records instead of listing rows (search, pasted search or seller links, seller closet) |
maxResults | integer | 100 | Cap on rows for the whole run. 0 means the whole closet, or Vinted's 960-result ceiling on a search |
maxConcurrency | integer | 6 | Parallel requests, 1 to 10 |
Output examples
Every row carries recordType, country and scrapedAt, so one pipeline can take every mode. These rows are real, copied from live runs; long photo lists are shortened to one URL.
Search row (listing):
{"recordType": "listing","id": 10253428614,"title": "Levis Jeans","url": "https://www.vinted.co.uk/items/10253428614-levis-jeans","price": 13.31,"currency": "GBP","serviceFee": 1.37,"totalBuyerPrice": 14.68,"brand": "Levi's","brandId": null,"size": "W32","condition": "Good","color": null,"country": "uk","photos": ["https://images1.vinted.net/t/02_01fb8_hG9iGx3BxgWQSjxJYu5TFdHL/f800/fc92f869.webp?s=f335efff3a5ec89a9579fbc17229202175d6f9a0"],"sellerId": 3168216467,"sellerLogin": "tomdeakin01","sellerProfileUrl": "https://www.vinted.co.uk/member/3168216467","isBusinessSeller": false,"favouriteCount": 3,"viewCount": null,"promoted": false,"isClosed": null,"isReserved": null,"isHidden": null,"isHeavyBulky": null,"scrapedAt": "2026-10-07T17:40:44.466Z"}
Seller closet row (listing): same shape, plus the availability flags Vinted shows on a closet.
{"recordType": "listing","id": 10272011815,"title": "Adidas Women's Cropped Piquรฉ Polo Shirt In Light Pink","price": 5,"currency": "GBP","serviceFee": 0.95,"totalBuyerPrice": 5.95,"brand": "adidas","size": "M / UK 12-14","condition": "New with tags","sellerLogin": "vintagevibezzz","favouriteCount": 4,"isClosed": false,"isReserved": false,"isHidden": false,"isHeavyBulky": false,"country": "uk","scrapedAt": "2026-10-07T18:14:08.482Z"}
Full item record (item_detail), from Include full item details or Item detail mode:
{"recordType": "item_detail","id": 10282786945,"title": "Levis 501 sky jeans W 32","url": "https://www.vinted.co.uk/items/10282786945-levis-501-sky-jeans-w-32","price": 20,"currency": "GBP","serviceFee": 1.7,"totalBuyerPrice": 21.7,"brand": "Levi's","brandId": 10,"size": "W32","condition": "New with tags","color": "Light blue","category": "Men > Clothing > Jeans > Straight fit jeans","description": "True to size\nunworn\nfast delivery","uploadedRelative": "an hour ago","photos": ["https://images1.vinted.net/t/01_000d1_qzhWWYsVu8pGxBZxzvSsAuBt/f800/78ebcce7.webp?s=b6020914f06110e34ad47e0db141fa7bace083c2"],"sellerId": 3164080708,"sellerLogin": "katiejenkie","sellerFeedbackCount": 58,"sellerFeedbackReputation": 0.86,"sellerBadges": ["ACTIVE_LISTER"],"shippingPrices": { "all": 0 },"favouriteCount": 2,"promoted": true,"isClosed": false,"isReserved": false,"isHidden": false,"country": "uk","scrapedAt": "2026-10-07T17:40:52.432Z"}
Item link that failed (item_detail_error). Never billed. code starting with U_ means the link; E_ means our side, so try again later.
{"recordType": "item_detail_error","url": "https://www.vinted.co.uk/items/100","code": "U_NOT_FOUND","reason": "Vinted returned HTTP 404 for this item. It was deleted or never existed (a sold item still has a page).","country": "uk","scrapedAt": "2026-10-07T18:08:34.303Z"}
Brand lookup row (brand):
{"recordType": "brand","id": 53,"title": "Nike","slug": "nike","itemCount": 61007346,"favouriteCount": 8682423,"isLuxury": true,"requiresAuthenticityCheck": true,"country": "fr","scrapedAt": "2026-10-07T18:14:09.876Z"}
Use cases
- ๐๏ธ Cross-border resale arbitrage. Run the same query on France and Germany, sort by price, and find the gap between markets.
- ๐งต Sourcing feeds for resellers. Filter by size and condition, sort by newest, and schedule it to catch fresh stock.
- ๐ต Repricing and margin models. Asking price and the buyer's all-in total are separate fields, so you can price against either.
- ๐ Brand market research. Pull a brand's active stock across markets and group it by size, condition, category or price band.
- ๐ Brand protection. Watch a brand's live listings and a flagged seller's whole closet on a schedule.
- ๐ค Competitor closet tracking. Paste a member URL and get every active item with price, size, condition and photos.
- ๐ Demand signals. Track
favouriteCountacross scheduled runs to see what draws attention before it sells. - ๐ค AI shopping and resale agents. One flat row shape with a
recordTypefield drops straight into an agent loop.
Limitations
- 960 results per search query. Vinted caps every search there and repeats some listings across its pages, so a full search usually yields 800 to 950 unique rows. Narrow the query with a brand, category, size or price band to reach more.
- No sold-price history. Sold items drop out of search and closets. An item link you already have still returns its record, marked
isClosed: true. - View counts aren't published. Vinted returns zero for every item, so
viewCountis alwaysnull. - Search rows carry one photo. Full item records carry every photo.
- Item text is in the market's language. On a full item record, condition, colour, category and upload age read the way Vinted shows them on that site, for example "Bon รฉtat" on vinted.fr. Search rows use English labels everywhere.
- Fees can be blank on full records. When a seller lists in a different currency from the market, Vinted shows fees in two currencies, so the actor leaves them out rather than mix them.
- Business sellers show no login on full records. Vinted shows the shop's display name there instead.
- A minimum price above the maximum is rejected. Vinted would quietly ignore the minimum and return cheaper items, so the run stops with an explanation.
- Brand lookup returns the top 10 matches per keyword, ranked by Vinted's own item counts.
- Nothing behind a login. Messages, orders, drafts and seller statistics need the account owner.
Frequently asked questions
How much does Vinted Scraper cost?
Listings cost $1.00 per 1,000 and full item records $5.00 per 1,000, plus $0.002 per run. The Apify Free plan's $5 monthly credit covers about 5,000 listings or 1,000 full records. No subscription lock-in.
Is there an official Vinted API?
No. Vinted has no public API. This actor reads what a logged-out visitor sees on Vinted and returns it as structured rows.
What does Include full item details add?
The description, colour, category path, seller feedback count and score, seller badges, shipping price, sold, reserved and hidden flags, and every photo. Turn it on when you need to judge or compare items; leave it off for fast, cheap price and stock tracking.
Do I need a Vinted account, cookies or proxies?
No. There's nothing to configure. The actor handles sessions and bot protection on its own.
Why did I get fewer results than I asked for?
Usually Vinted's 960-result ceiling, or a search that simply holds fewer items. Listings Vinted repeats across pages are removed and not charged. With several links, maxResults covers the whole run. The run status always says which of these happened.
What does the run status mean?
A clean run says how many rows it delivered. A message starting with U_ points at the input, for example a size that doesn't exist; it tells you what to fix. A message starting with E_ means something failed on our side; the run is marked failed if it delivered nothing. Partial means rows you asked for are missing, and says why. Each run also saves a RUN_SUMMARY record with the outcome of every input.
Can I filter by brand, size, colour, condition and category?
Yes. Type them into the matching fields, or build the search in Vinted's own filters and paste the link.
Which countries are supported?
All 26 Vinted markets: United Kingdom, France, Germany, Italy, Spain, Netherlands, Poland, Portugal, Belgium, Austria, Lithuania, Czech Republic, Slovakia, Hungary, Romania, Croatia, Finland, Denmark, Sweden, Estonia, Greece, Ireland, Luxembourg, Latvia, Slovenia and the United States. Prices come back in each market's currency.
Can I track new listings or price changes?
Schedule a search sorted by newest_first and compare runs. There's no built-in alert yet, but a scheduled run plus a webhook covers most monitoring jobs.
Is it legal to scrape Vinted?
Scraping public data is generally allowed in the US and most of the EU, as long as you don't collect personal data covered by GDPR or CCPA without a lawful basis. This actor only touches publicly accessible pages, but how you use the output is up to you.
Apify's full breakdown: Is web scraping legal?
Does it support scheduled runs and integrations?
Yes. Schedule it hourly or daily in the Apify Console, and send results to Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive and more.
Full list: Apify integrations
Can I use Vinted Scraper with the Apify API?
Yes. Every run is available through the Apify REST API:
curl -X POST "https://api.apify.com/v2/acts/sourabhbgp~vinted-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"search","country":"uk","searchText":"nike air max","maxResults":50}'
Docs: Apify API reference
Can I use Vinted Scraper through an MCP server or an AI assistant?
Yes. Apify's MCP server exposes every actor as a tool, so Claude, Cursor and other MCP clients can call this one. Setup: Apify MCP docs
To hand it to an assistant directly, paste this:
Use sourabhbgp/vinted-scraper on Apify. Wait for each run to finish, then read its dataset.Never paste an API token into chat. Load APIFY_API_TOKEN from the environment.from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_API_TOKEN"])run = client.actor("sourabhbgp/vinted-scraper").call(run_input={"startUrls": ["https://www.vinted.co.uk/catalog?search_text=nike%20air%20max"],"includeDetails": False,"maxResults": 100,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsPaste any Vinted search, category, seller or item link into startUrls, or use mode: search, user-listings, item-detail, brand-catalog.includeDetails: true returns full item records ($5 per 1,000 instead of $1).Countries: uk, fr, de, it, es, nl, pl, pt, be, at, lt, cz, sk, hu, ro, hr, fi, dk, se, ee, gr, ie, lu, lv, si, us.Search caps at 960 results per query; narrow with brand, size, colour or price to go deeper.
Your feedback
Bug, missing field, or odd behaviour? Drop a note in the Issues tab. Reports go to a human, and fixes usually ship the same week.