Vinted Scraper: Paste a URL, Search, Closets & Items
Pricing
from $1.00 / 1,000 results
Vinted Scraper: Paste a URL, Search, Closets & Items
Paste any Vinted search, category, seller or item link and get structured data back. Or search by keyword with brand, size, colour, condition and price filters. Seller closets, item detail and brand lookup too, across all 26 EU and US markets. JSON or CSV. $1 per 1,000 results.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Sourabh Kumar
Maintained by CommunityActor stats
0
Bookmarked
14
Total users
3
Monthly active users
6 days ago
Last modified
Categories
Share
Vinted scraper: search, seller closets, item detail & brand lookup
Paste a Vinted link and run it. Build the search you want in Vinted's own filters, copy the address bar, and the actor works out the rest: search pages, category pages, seller closets and item pages all just work. No login, no proxy setup, no browser.
$1 per 1,000 results, plus $0.002 per run. No monthly minimum.
Works on all 26 markets: ๐ฌ๐ง ๐ซ๐ท ๐ฉ๐ช ๐ฎ๐น ๐ช๐ธ ๐ณ๐ฑ ๐ต๐ฑ ๐ต๐น ๐ง๐ช ๐ฆ๐น ๐ฑ๐น ๐จ๐ฟ ๐ธ๐ฐ ๐ญ๐บ ๐ท๐ด ๐ญ๐ท ๐ซ๐ฎ ๐ฉ๐ฐ ๐ธ๐ช ๐ช๐ช ๐ฌ๐ท ๐ฎ๐ช ๐ฑ๐บ ๐ฑ๐ป ๐ธ๐ฎ ๐บ๐ธ
Why this scraper?
- ๐ Paste any Vinted URL. Search, category, seller or item links all work, and the filters already in the link are used as they are. No mode to pick, no numeric category id to hunt down.
- ๐ท The full price picture on every row. Asking price, Vinted's buyer-protection fee, and the total the buyer actually pays, split into three fields instead of one number you have to reverse-engineer.
- ๐ท๏ธ Type a brand name, not an ID. Enter
"yeezy"and the actor resolves it to the canonical brand for you. No diggingbrand_ids[]=numbers out of URLs. - ๐ Size and colour filters that actually filter. Type
MorBlackand the actor maps it to Vinted's own size and colour codes for that market, across every size group. - ๐ All 26 markets, one input change. Swap the country code; every mode behaves identically, in the local currency.
- ๐ฆ Tells you when a run is incomplete. If a page fails or Vinted's 960-per-query ceiling truncates your search, the run says so in its status instead of handing you a short dataset that looks complete.
- ๐งพ Bad input never bills you. A blank field, a brand that doesn't exist, or a minimum price above your maximum ends the run with a plain-English explanation and zero charges.
- ๐ The same link is never billed twice. Paste a URL twice by accident and it is scraped once.
- โก HTTP-only, pages fetched in parallel. No browser, no Playwright. A 100-row search finishes in about 20 seconds; a full 960-row search in about two minutes.
- ๐ฆ One record shape across all four modes. Every row carries a
recordTypediscriminator, so a single pipeline consumes the lot.
What data can you extract?
| ๐ท๏ธ Title & brand | ๐ท Price | ๐งพ Buyer-protection fee | ๐งฎ Total buyer pays |
| ๐ Size | โจ Condition | ๐ Description | ๐ธ Photos |
| โค๏ธ Favourites | ๐ Promoted flag | ๐ฆ Reserved / closed | ๐ฆ Heavy-bulky flag |
| ๐ค Seller login + URL | ๐ Seller ID | โญ Feedback count + score | ๐ Seller badges |
| ๐ผ Business-seller flag | ๐จ Colour | ๐ข Brand ID | ๐ Upload age |
| ๐ Market | ๐ฑ Currency | ๐ Item URL | ๐ Scraped timestamp |
Colour, brand ID and upload age come from item-detail mode. Reserved and closed flags come from item-detail and seller-closet modes. Vinted does not publish them on search results, and this actor leaves them null there rather than guessing.
Scraping modes
You can skip modes entirely by pasting links into startUrls. Everything below is the long form, for when you would rather build the query field by field.
๐ Paste Vinted URLs
Mix search, category, seller and item links in one run. Each link is routed to the right mode, and each keeps its own market, so a vinted.fr link is scraped on the French site even if the rest are British.
{"startUrls": ["https://www.vinted.co.uk/catalog?search_text=nike&brand_ids[]=53&price_to=50","https://www.vinted.co.uk/catalog/1049-boots","https://www.vinted.fr/member/3151368835-jacie7","https://www.vinted.co.uk/items/9784633922-nike-air-shoes"],"maxResults": 200}
maxResults caps the whole run, not each link, so give it enough room to cover every URL you paste. If it fills up first, the run says which links it did not 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": "nike air max","brand": "nike","size": "M","color": "Black","condition": ["very_good", "new_with_tags"],"priceFrom": 20,"priceTo": 80,"sortBy": "newest_first","maxResults": 200}
๐ค 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/3151368835-jacie7","maxResults": 0}
๐ฆ Item detail
Paste item URLs to get the full record: description, colour, brand ID, seller feedback and badges, reserved and closed flags, and the fee maths.
{"mode": "item-detail","country": "uk","itemUrls": ["https://www.vinted.co.uk/items/9026871059-nike-air-max-moto-2k-black-fire-pink"]}
๐ท๏ธ Brand lookup
Turn a brand name into Vinted's brand ID, with item count and whether Vinted runs authenticity checks on it. Useful before locking 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 the matching field by hand.
- Click Start. A 100-row search takes about 20 seconds.
- Export as JSON, CSV, or Excel, or pull the results through the API.
How much does Vinted Scraper cost?
$1.00 per 1,000 results, plus $0.002 per run (charged once per gigabyte of memory allocated, so $0.002 at the default 512 MB). No monthly minimum, no subscription lock-in.
The Free plan's $5 monthly credit covers roughly 5,000 results. The $29/month Starter plan covers about 29,000 results a month. You pay for rows written to the dataset, so a filter that narrows your search also narrows your bill, and rows the actor could not fetch are never billed.
Input examples
Pasted URLs
{"startUrls": ["https://www.vinted.co.uk/catalog?search_text=nike&brand_ids[]=53&price_to=50","https://www.vinted.fr/member/3151368835-jacie7"],"maxResults": 200}
Search mode
{"mode": "search","country": "fr","searchText": "sac cuir","priceFrom": 20,"priceTo": 100,"sortBy": "price_low_to_high","maxResults": 200}
Seller closet mode
{"mode": "user-listings","country": "uk","userUrl": "https://www.vinted.co.uk/member/3151368835-jacie7","maxResults": 0}
Item detail mode
{"mode": "item-detail","country": "uk","itemUrls": ["https://www.vinted.co.uk/items/9026871059-nike-air-max-moto-2k-black-fire-pink","https://www.vinted.co.uk/items/9784633922-nike-air-shoes"]}
Brand lookup mode
{"mode": "brand-catalog","country": "uk","brandKeyword": "yeezy"}
All input fields
| Field | Type | Default | Note |
|---|---|---|---|
startUrls | URL[] | none | Paste Vinted search, category, member 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 | 26 markets, e.g. uk, fr, de, it, es, nl, pl, us |
searchText | string | none | Keyword query (search mode) |
brand | string | none | Brand name, resolved to Vinted's ID for you (search mode) |
category | integer | none | Vinted category ID. Open the category on Vinted and take the number from the address bar: /catalog/1049-boots is 1049. Easier still, paste the whole link into startUrls |
size | string | none | Size label such as M, UK 9, EU 42 (search mode) |
color | string | none | Colour name such as Black, Cream, Burgundy (search mode) |
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 local currency |
sortBy | enum | relevance | relevance, price_low_to_high, price_high_to_low, newest_first |
userUrl | URL | none | Member URL (seller-closet mode) |
itemUrls | URL[] | none | Item URLs (item-detail mode) |
brandKeyword | string | none | Brand name to look up (brand-lookup mode) |
maxResults | integer | 100 | Cap on dataset rows. 0 means the whole closet, or Vinted's 960 ceiling on a search |
maxConcurrency | integer | 6 | Parallel requests, 1 to 10 |
Output examples
Every row carries recordType, country and scrapedAt. All rows below are real, captured from live runs.
Search mode, one row per listing:
{"recordType": "listing","id": 9794458921,"title": "Women sneakers","url": "https://www.vinted.co.uk/items/9794458921-women-sneakers","price": 34.75,"currency": "GBP","serviceFee": 2.44,"totalBuyerPrice": 37.19,"brand": "Nike Air","brandId": null,"size": "6","condition": "New without tags","color": null,"country": "uk","photos": ["https://images1.vinted.net/t/05_00801_J4TmewD8JJe4SWxXwMyStCq9/f800/1787828100.jpeg"],"sellerId": 3175585968,"sellerLogin": "shopofstyle24","sellerProfileUrl": "https://www.vinted.co.uk/member/3175585968-shopofstyle24","isBusinessSeller": false,"favouriteCount": 2,"promoted": false,"isClosed": null,"isReserved": null,"scrapedAt": "2026-08-27T16:31:12.402Z"}
Seller closet mode, same shape, with the availability flags Vinted publishes on a closet:
{"recordType": "listing","id": 9140235233,"title": "Cocktail dress","price": 32.76,"currency": "GBP","brand": "Nasty Gal","size": "M / UK 12-14","condition": "Very good","isReserved": false,"isClosed": false,"isHidden": false,"isHeavyBulky": false,"favouriteCount": 3,"country": "uk","scrapedAt": "2026-08-27T16:31:20.884Z"}
Item detail mode, everything above plus description, colour, brand ID and seller reputation:
{"recordType": "item_detail","id": 9784633922,"title": "Nike Air Shoes","url": "https://www.vinted.co.uk/items/9784633922-nike-air-shoes","price": 5.35,"currency": "GBP","serviceFee": 0.97,"totalBuyerPrice": 6.32,"brand": "Nike Air","brandId": 5977,"size": "5.5","condition": "Satisfactory","color": "White","description": "Good condition, well worn. Size 7.5","uploadedRelative": "a day ago","sellerId": 3164964426,"sellerLogin": "charlotteaksm","sellerFeedbackCount": 15,"sellerFeedbackReputation": 1,"sellerBadges": ["ACTIVE_LISTER", "SPEEDY_SHIPPING"],"isReserved": false,"isClosed": false,"country": "uk","scrapedAt": "2026-08-27T16:19:03.118Z"}
Item detail errors are pushed as their own row so you can see which URL failed and why. These are never billed:
{"recordType": "item_detail_error","url": "https://www.vinted.co.uk/items/1-dead-item","reason": "Vinted returned HTTP 404 for this item. It was probably sold, delisted or removed.","country": "uk","scrapedAt": "2026-08-27T16:19:01.556Z"}
Brand lookup mode:
{"recordType": "brand","id": 115490,"title": "Yeezy","slug": "yeezy","itemCount": 452681,"favouriteCount": 84057,"isLuxury": true,"requiresAuthenticityCheck": true,"country": "uk","scrapedAt": "2026-08-27T16:31:05.271Z"}
Use cases
- ๐๏ธ Cross-border resale arbitrage. Pull the same query on ๐ซ๐ท France and ๐ฉ๐ช Germany, sort by cheapest, and find the gap between markets.
- ๐ต Repricing and margin models. Asking price and the buyer's all-in total are separate fields, so you can price against either side of the fee.
- ๐ Brand-level market research. Lock a brand, pull its active inventory across markets, and aggregate by size, condition or price band.
- ๐ Brand protection and counterfeit monitoring. 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 research. Track
favouriteCounton a listing over repeated runs to see what is drawing attention before it sells. - ๐งต Sourcing feeds for resellers. Filter by size and condition, sort by newest, and run it on a schedule to catch fresh stock.
- ๐ค AI shopping and resale agents. One flat row shape with a
recordTypediscriminator drops straight into an agent loop.
Limitations
- Sold listings are not available. Vinted removes items from search and from closets once they sell, and publishes no sold-price history to logged-out visitors. This actor returns active listings only.
- 960 results per search query. Vinted caps any single search there, however many items exist. Narrow the query with a brand, category, size or price band and run it again. The run tells you when it hits this ceiling.
- View counts are not published. Vinted returns zero for every item in its listing feeds, so no scraper can report real view counts from a search or a closet.
- Colour, brand ID and upload age need item-detail mode. Vinted omits them from search results and closets.
- A minimum price above the maximum is rejected. Vinted quietly ignores an impossible minimum and returns cheaper items anyway, so the actor stops the run instead of billing you for results you did not ask for.
- A minimum price above the maximum is rejected. Vinted quietly ignores an impossible minimum and returns cheaper items anyway, so the actor stops the run instead of billing you for results you did not ask for.
- Brand lookup returns the top 10 fuzzy matches per keyword, ranked by Vinted's own item counts.
- Nothing behind a login. Messages, order history, drafts and seller statistics all require being the account owner, which this actor never is.
Frequently asked questions
How much does Vinted Scraper cost?
Vinted Scraper uses pay-per-result pricing. You pay $1.00 for 1,000 results, plus $0.002 per run. The Apify Free plan gives you $5 in usage credits a month, enough for around 5,000 results. If you run regularly, the $29/month Starter plan covers about 29,000 results.
No subscription lock-in. Pause whenever.
Do I need to log in or provide cookies?
No. The actor reads only what a logged-out visitor can see, and handles session setup on its own. There is nothing to configure.
Will I get blocked?
The actor manages bot protection and retries for you, including switching routes when Vinted refuses one. If a run genuinely cannot reach Vinted, it fails with a clear message and charges you nothing for the missing rows, rather than handing you an empty dataset that looks like a success.
What happens if an item URL is dead or a seller has no listings?
A dead item URL produces an item_detail_error row naming the URL and the reason, and it is not billed. A search or closet that genuinely matches nothing finishes successfully and tells you the filters returned no items.
How do I find a seller's member URL?
Open any listing on Vinted and click the seller's name. The address bar shows vinted.co.uk/member/<id>-<username>. Paste that whole URL into userUrl.
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 local currency.
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 on 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 push results into Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive and more. Apify treats every actor as a webhook source.
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 ships an MCP server that exposes every actor as a tool, so Claude, Cursor and any other MCP-capable client can call this one. Setup: Apify MCP docs.
To hand it to an assistant directly, paste this:
Use sourabhbgp/vinted-scraper on Apify. Pick one mode per run and wait for it 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={"mode": "search","country": "uk","searchText": "nike air max","maxResults": 100,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsModes: search, user-listings, item-detail, brand-catalog.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 behavior? Drop a note in the Issues tab. Reports go to a human and fixes usually ship the same week.