Vinted Scraper: Paste a URL, Search, Closets & Item Details avatar

Vinted Scraper: Paste a URL, Search, Closets & Item Details

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Vinted Scraper: Paste a URL, Search, Closets & Item Details

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

Sourabh Kumar

Maintained by Community

Actor stats

0

Bookmarked

34

Total users

8

Monthly active users

6 days ago

Last modified

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 yeezy and the actor finds Vinted's brand for you.
  • ๐Ÿ“ Size and colour filters that actually filter. Type M or Black; 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.

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

  1. Create a free Apify account. Takes 30 seconds, no card needed.
  2. Open Vinted Scraper in the Apify Console.
  3. Paste your Vinted links into Vinted URLs, or pick a mode and fill in its fields.
  4. Tick Include full item details if you want complete item records.
  5. Click Start. A 100-row search finishes in under a minute.
  6. 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:

RowPriceFree plan ($5 credit)Starter plan ($29)
Listing (search, closet, brand)$1.00 per 1,000about 5,000 rowsabout 29,000 rows
Full item record (Include full item details, or Item detail mode)$5.00 per 1,000about 1,000 rowsabout 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

FieldTypeDefaultNote
startUrlsURL[]noneVinted search, category, seller or item links. Overrides mode and the filter fields
modeenumsearchsearch, user-listings, item-detail, brand-catalog. Ignored when startUrls is set
countryenumukOne of the 26 markets, for example uk, fr, de, pl, us
searchTextstringnoneKeyword query (search)
brandstringnoneBrand name, matched to Vinted's brand for you (search)
categoryintegernoneVinted 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
sizestringnoneSize label such as M, UK 9 or EU 42 (search)
colorstringnoneColour name such as Black, Cream or Burgundy (search)
conditionarraynoneAny of new_with_tags, new_without_tags, very_good, good, satisfactory
priceFrom / priceTonumbernonePrice range in the market's currency
sortByenumrelevancerelevance, price_low_to_high, price_high_to_low, newest_first
userUrlURLnoneSeller member URL (seller closet)
itemUrlsURL[]noneItem URLs (item detail)
brandKeywordstringnoneBrand name to look up (brand lookup)
includeDetailsbooleanfalseReturn full item records instead of listing rows (search, pasted search or seller links, seller closet)
maxResultsinteger100Cap on rows for the whole run. 0 means the whole closet, or Vinted's 960-result ceiling on a search
maxConcurrencyinteger6Parallel 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 favouriteCount across scheduled runs to see what draws attention before it sells.
  • ๐Ÿค– AI shopping and resale agents. One flat row shape with a recordType field 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 viewCount is always null.
  • 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.

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 ApifyClient
import os
client = 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().items
Paste 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.