Vinted Universal Scraper avatar

Vinted Universal Scraper

Pricing

from $1.02 / 1,000 results

Go to Apify Store
Vinted Universal Scraper

Vinted Universal Scraper

⚡ Scrape Vinted by filters or just by pasting a URL! Search any keyword; filter by brand, category, size, colour, condition, price & currency on any Vinted country. Enrich items with the seller's profile, beat the 960-per-search cap with deep scrape, export clean data with photos — CSV/JSON/Excel.

Pricing

from $1.02 / 1,000 results

Rating

5.0

(1)

Developer

Scrapifier

Scrapifier

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Share

Vinted Scraper

Scrape second-hand fashion listings from Vinted by keyword, brand, category or Vinted URL and export them as JSON, CSV or Excel, or pull them straight from the API.

⚡ For every listing you get the title, price and total price with Buyer Protection, the brand, size and condition, favourites and views, swap and promoted flags, all photos in full size, the seller's login and profile link, and optionally the seller's full profile (feedback, city, country, items, followers, last seen). Server-side filters, any Vinted country site (23 domains), no login, no cookies, and you pay per listing.

Apify Actor

🎯 Why scrape Vinted listings?

  • Price monitoring and resale: follow the asking prices of a brand or a category across countries to spot underpriced items and set your own resale prices.
  • Market research: measure how many listings a brand has, in which condition and at which price points, and how favourites and views are spread.
  • Sourcing for second-hand shops: pull every listing under a price cap for a keyword or a category, newest first, and review them in a spreadsheet.
  • Seller analysis: with seller details on, rank sellers by feedback count, reputation, number of items or followers to find professional sellers.
  • Research and data science: build datasets of second-hand prices, photos and conditions for pricing models and trend analysis.

📊 What data does Vinted Scraper extract?

FieldDescription
idUnique Vinted item id
urlDirect link to the item on Vinted
titleListing title
price, currencySeller's asking price and ISO currency code
total_price, service_feeTotal price including the Buyer Protection fee, and the fee itself
brandBrand name
sizeSize label
conditionItem condition label
is_new_with_tagstrue when the item is brand new with tags
favourites, viewsNumber of favourites (likes) and view count
is_favouriteFavourited by the current session
is_for_swapSeller is open to swap
promotedPromoted (paid bump) listing
photo, photos[], photo_countMain photo URL, all photo URLs (full size) and their number
dominant_colorDominant colour of the main photo (hex)
seller.id, seller.login, seller.profile_url, seller.is_businessSeller identity, always present
seller.city, seller.country, seller.feedback_count, seller.feedback_reputation, seller.item_count, seller.given_item_count, seller.followers_count, seller.following_count, seller.last_logged_in, seller.is_verifiedSeller profile (location, feedback and reputation 0 to 1, items listed and sold, followers, last seen, verified), added with include_seller_details
scraped_atExtraction timestamp
search_urlCatalog URL of the Vinted domain the item was searched on

With flatten enabled, seller_login, seller_id and photo_url columns are added (plus seller_feedback_count and seller_feedback_reputation when seller details are on) so CSV and Excel exports stay flat.

🚀 How to scrape Vinted listings

  1. Open the Actor and type one or more keywords in search_text, one per line (nike air, robe zara), or paste Vinted catalog, brand or category URLs in urls. Simplest: set your filters on Vinted, copy the address bar and paste it.
  2. Pick the Vinted country in country (fr, com, de, it, es, co.uk and 17 more); it sets the domain and default currency.
  3. Refine with the filters: brand names, condition, colour, price range, sort order, swap-only items, or advanced numeric ids (category, brand, size, material).
  4. Set Max results per keyword or URL. Turn on Deep scrape to go past the 960 items a single Vinted search returns, and Include seller details for seller profiles.
  5. Click Start. Items are pushed to the dataset in batches of 200 while the run is going.
  6. Open the Storage tab to preview the listings and export them as JSON, CSV, Excel or XML, or read them from the dataset API.

The same run can be started from the Apify API, the Python or JavaScript client, or put on a schedule for daily price tracking.

📥 Input parameters

FieldKeyTypeDefaultDescription
Vinted URLsurlsarray of URLsnoneCatalog/search URLs (all filters kept), brand URLs (/brand/53-nike) or category URLs (/catalog/1904-women). Empty = build a search with the filters below.
Keywordssearch_textarray of strings["nike"]One keyword per line, each searched separately (bulk). Empty = the whole category.
Vinted countrycountryselect of 23 optionsfrMarketplace to search (fr, com, de, it, es, co.uk, be, nl, pl and 14 more). Sets the domain and default currency.
Brands (by name)brandsarray of stringsnoneBrand names (Nike, Zara, Levi's), resolved automatically to Vinted brand ids.
Conditionconditionsmulti-selectnone6 New with tags, 1 New without tags, 2 Very good, 3 Good, 4 Satisfactory, 7 Not fully functional. Empty = any.
Colourcolorsmulti-select of 29 optionsnoneOne or more Vinted colour ids (1 Black, 12 White, 9 Blue, 7 Red...). Empty = any.
Min priceprice_fromintegernoneLowest price to include, in the selected country's currency.
Max priceprice_tointegernoneHighest price to include.
Sort byorderselectnewest_firstnewest_first, relevance, price_low_to_high or price_high_to_low.
Swap-only itemsonly_swappablebooleanfalseOnly items the seller is open to swapping.
Category IDs (advanced)catalog_idsarray of stringsnoneVinted category ids (1904 = Women, 5 = Men). Empty = all categories.
Brand IDs (advanced)brand_idsarray of stringsnoneExact Vinted brand ids (53 = Nike, 2703 = Jordan). Combined with brands.
Size IDs (advanced)sizesarray of stringsnoneVinted size ids. They depend on the category, get them from a filtered catalog URL.
Material IDs (advanced)material_idsarray of stringsnoneVinted material ids (cotton, leather...), from a filtered catalog URL.
Currency override (advanced)currencystringnoneISO currency code (EUR, GBP). Defaults to the selected country's currency.
Max resultsmax_resultsinteger100Items to collect per keyword or per URL. 0 = as many as possible. A single search reaches up to 960.
Deep scrape (beyond 960)deep_scrapebooleanfalseSplit each search into price windows to collect far more than the 960-item cap.
Include seller details (slower)include_seller_detailsbooleanfalseAdd each seller's profile (feedback, city, country, items, followers, last seen) to every item.
Flat columns (CSV-friendly)flattenbooleanfalseAdd flat seller_login, seller_id and photo_url columns for CSV and Excel.
Report empty searchesemit_input_statusbooleantrueAdd an input_status report to the run's OUTPUT record.
ProxyproxyConfigurationobject{"useApifyProxy": true}Apify Proxy is on by default. Residential proxies are recommended for large runs and let you pick the country.

Example input:

{
"search_text": ["nike"],
"country": "fr",
"brands": ["Nike"],
"conditions": ["6"],
"price_from": 10,
"price_to": 60,
"order": "newest_first",
"max_results": 200,
"include_seller_details": true
}

Pasted URLs are parsed for their query filters (keyword, category, brand, colour, size, condition, material, price, currency, order, swap) and for /brand/<id> and /catalog/<id> paths; the search itself runs on the domain selected in country, so set it to match the URL you paste. Brand names Vinted does not recognise are skipped with a warning; use brand_ids for exact control.

📤 Output example

Each listing is one dataset item, exportable as JSON, CSV, Excel or via the API.

{
"id": 9453626155,
"url": "https://www.vinted.fr/items/9453626155-nike-w-ld1000",
"title": "Nike W LD_1000",
"price": 45.0,
"currency": "EUR",
"total_price": 46.85,
"service_fee": 1.85,
"brand": "Nike",
"size": "39",
"condition": "New with tags",
"is_new_with_tags": true,
"favourites": 3,
"views": 41,
"is_for_swap": false,
"photo": "https://images1.vinted.net/.../f800/....jpeg",
"photos": ["https://images1.vinted.net/...", "..."],
"dominant_color": "#1467B7",
"seller": {
"login": "jornas59",
"profile_url": "https://www.vinted.fr/member/26154389-jornas59",
"is_business": false,
"city": "Napoli",
"country": "Italia",
"feedback_count": 23,
"feedback_reputation": 1.0,
"item_count": 60,
"followers_count": 12
},
"scraped_at": "2026-07-21 14:58:00"
}

The run's OUTPUT record also holds the run statistics (searches, unique items, duplicates, pages, errors, sellers enriched) and, per keyword or URL, an input_status entry (ok or empty with the item count) so you can see at a glance which search produced nothing.

💡 Ready-to-run examples

New-with-tags Nike items between 10 and 60 EUR, with seller profiles

{ "search_text": ["nike"], "country": "fr", "brands": ["Nike"], "conditions": ["6"], "price_from": 10, "price_to": 60, "order": "newest_first", "max_results": 200, "include_seller_details": true }

A whole brand page from its URL, beyond the 960 cap

{ "urls": ["https://www.vinted.fr/brand/53-nike"], "country": "fr", "deep_scrape": true, "max_results": 0 }

A whole category with no keyword

{ "country": "fr", "catalog_ids": ["1904"], "deep_scrape": true, "max_results": 0 }

Cheapest vintage jackets on the international site (USD)

{ "search_text": ["vintage jacket"], "country": "com", "order": "price_low_to_high", "max_results": 100 }

💰 Pricing: how much does it cost to scrape Vinted?

From $1.50 per 1,000 listings on the free plan, with automatic volume discounts down to $1.02 per 1,000 on higher Apify plans. You pay only for the results you receive, there is no subscription and no start fee. New Apify accounts get free monthly platform credits to try it.

Cost is driven purely by the number of listings returned: max_results caps each keyword or URL (five keywords at 100 can return up to 500 items), and price, condition, colour or brand filters narrow the set on Vinted's side before you pay for it. Seller enrichment adds runtime, not billed items.

⚙️ Performance, proxies and limits

  • How it works: the Actor opens an anonymous session on the selected Vinted domain, then reads Vinted's public JSON API (api/v2/catalog/items), 96 items per page. No login, no cookies to paste.
  • Proxy: Apify Proxy is on by default. For large or frequent runs, Apify Residential proxies work best and let you pick the country. On an HTTP 401, 403, 419, 429 or 5xx response the Actor opens a fresh session (rotating the proxy IP) and retries, up to 5 attempts per request.
  • The 960 cap: Vinted returns at most 10 pages of 96 items per query. Deep scrape splits each search into 15 ascending price windows (0 to 5, 5 to 10, up to 500 to 1000 and above 1000, clipped to your price_from and price_to), each fetching up to 960 items.
  • Max results per search: max_results applies to each keyword or URL separately. 0 collects everything reachable.
  • Deduplication: items are deduplicated by id within a run, across keywords and price windows. Duplicates are counted in the OUTPUT stats.
  • Seller details: one extra API call per distinct seller (cached within the run), so enriched runs are slower.
  • Streaming: items are pushed to the dataset in batches of 200, so partial results are available during the run.
  • Empty searches: a keyword or URL that matches nothing yields status: "empty" in the input_status report.

🔌 Integrations and API

Run Vinted Scraper from the Apify API, the Python or JavaScript client, or on a schedule. Connect it to Make, Zapier, n8n, Google Sheets, Slack or any webhook through Apify integrations. Every run's dataset is available as JSON, CSV, Excel or XML from the dataset API.

curl -X POST "https://api.apify.com/v2/acts/scrapifier~vinted-universal-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "search_text": ["nike"], "country": "fr", "conditions": ["6"], "price_to": 60, "max_results": 100 }'

❓ FAQ

Is it legal to scrape Vinted?

The Actor only reads listings that Vinted shows to anyone without logging in. Seller profiles contain personal data (login, city, country), so process them in line with GDPR and other privacy laws, respect Vinted's terms of use, and stay responsible for how you use the data. This is not legal advice.

Do I need a Vinted account, login or cookies?

No. The Actor creates its own anonymous session on the Vinted domain you select. Nothing to log in to and no cookies to paste.

Can I export Vinted listings to Excel or Google Sheets?

Yes. Every run's dataset downloads as CSV, XLSX, JSON or XML from the Storage tab, and the Google Sheets integration can push new listings to a sheet. Turn on flatten for flat seller and photo columns.

How many listings can I scrape?

One Vinted search stops at 960 items. With deep_scrape the query is split into price windows, each capped at 960, so a brand or a category can return thousands of listings. Set max_results to 0 for everything reachable, or keep a cap to control cost.

Does it work for Vinted in Germany, the UK, Italy or the US?

Yes. Pick the marketplace in country: 23 domains are supported, including de, co.uk, it, es, pl and com (the international site in USD). Prices come back in that country's currency unless you override currency.

How do I find category, size or material ids?

Filter on Vinted in your browser, copy the URL from the address bar and paste it in urls: the Actor reads the category, size, material, brand, colour and condition ids from it. Category 1904 is Women and 5 is Men; brand 53 is Nike.

Do I need a proxy, and what if a run is blocked?

Apify Proxy is enabled by default. For large or frequent runs, switch to Apify Residential proxies and pick the country of the marketplace. When Vinted answers with an anti-bot or rate-limit status, the Actor renews its session and retries up to 5 times before logging an error.

How fresh is the data?

Every run queries Vinted live and scraped_at records the extraction time. Schedule the Actor with order set to newest_first for a rolling feed of new listings.

💬 Support

Questions, bugs or a feature request? Open an issue in the Issues tab of this Actor, I answer quickly. If Vinted Scraper saves you time, a rating on the Store helps others find it.