Vinted Scraper - Listings, Prices & New-Item Monitor
Pricing
from $0.48 / 1,000 items
Vinted Scraper - Listings, Prices & New-Item Monitor
Scrape Vinted listings from search URLs or search text on all 26 Vinted country sites: title, brand, size, condition, price with buyer protection, favourites, photos, item URL, business sellers' names. Only-new mode for resellers. Optional item details. $0.60 per 1,000 items on Bronze.
Pricing
from $0.48 / 1,000 items
Rating
0.0
(0)
Developer
Amit Aviv
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Vinted Scraper: listings, prices and new-item monitor
Returns Vinted listings from any search or catalogue URL, or from search text with filters, on all 26 Vinted country sites (vinted.fr, .de, .es, .it, .nl, .be, .pl, .co.uk, .com and the others). Plain HTTP with no browser: 100 items take from about 4 seconds to about 15, depending on how many come from business sellers (see "Speed"). Apart from the start fee you pay only for delivered items, and a run that delivers nothing because of an error ends as Failed, never as a green empty run.
What you get
- Title, brand, size, condition (as the site shows it, plus a code that is the same on every site), item URL and id
- Price, currency, discounted price where shown, the buyer protection fee and the total the buyer pays before shipping
- Favourites count, promoted flag, main photo and thumbnail
- Seller type (
businessorprivate); for business sellers their Vinted seller id and the business name they trade under, legal name, legal form and country, read from one of the seller's item pages at no extra charge (once per seller per run; can be switched off for speed) - With Item details on (extra charge): description, category and category path, colours, all photos, how long ago the item was uploaded as Vinted words it ("Il y a 2 heures"), availability, reserved flag
- The country site, the search that found the item, and when it was read
- One record per item, as JSON, CSV or Excel, or through the API
- A run summary (
OUTPUT_SUMMARYin the run's key-value store): what was requested, delivered and charged, which inputs failed or were ignored, warnings, and why the run stopped
What it does not return: private sellers' ids, usernames, profile photos, locations or ratings (not by default, and usernames never); member pages (a person's wardrobe); sold items; shipping prices; view counts; an exact upload time (Vinted shows only "2 hours ago"); anything behind a login.
How to use
- Open Vinted in your country, search, set the filters you want (brand, size, condition, price, category, colour) and copy the URL from the browser.
- Paste it into Vinted search or catalogue URLs. Several entries are fine, from different country sites too. Or type search text into Search text and use the filter fields.
- Set Max items per search and press Start.
- Download the results from the Output tab, or read them from the API.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
startUrls | list of URLs | none | Vinted search URLs (/catalog?search_text=…), catalogue pages (/catalog/1231-shoes) and brand pages (/brand/53-nike) from any Vinted country site. Each URL keeps all its filters. Results come newest first unless the URL sets another order. Enter full URLs starting with https:// (the input form rejects others); duplicates, other sites, member pages and single item pages are ignored and listed in the summary. |
searchQueries | list of text | none | Instead of URLs: one search per line, newest first, on the site chosen in country. |
country | choice | fr | Site for searchQueries: fr de es it nl be pl uk us at pt lu ie cz sk hu ro lt lv ee fi se dk gr hr si. |
priceMin, priceMax | number | none | For searchQueries, in the site's currency; decimals allowed (9.99). A minimum above the maximum fails the run before any request. |
conditions | list | all | For searchQueries: new_with_tags, new_without_tags, very_good, good, satisfactory. |
brandIds, sizeIds, categoryIds, colorIds | list of numbers | none | For searchQueries: Vinted's own ids, as they appear in a Vinted URL after you pick the filter (brand_ids[]=53 is Nike, /catalog/1231-… is category 1231). With no search text, the filters alone make one search of the whole site. |
maxItemsPerQuery | number | 100 | Stop after this many items for each URL or search text (1 to 960). Vinted shows at most 960 per search. |
onlyNew | yes/no | no | Monitoring: return and charge only items that earlier runs have not delivered. See "Monitoring". |
monitorKey | text | empty | Name of the monitor memory, to keep two schedules apart. |
includeDetails | yes/no | no | Read each item's page for the details listed above; charged per item whose page was read. Slower (see "Limits"). |
includeBusinessNames | yes/no | yes | Fill business sellers' names from one item page per seller (free). Turn off for the fastest runs; sellerType and the business seller's id are still returned. |
includePrivateSellerData | yes/no | no | Adds private sellers' numeric Vinted ids and keeps phone numbers and e-mail addresses that sellers wrote into descriptions. Turn on only if you have a lawful basis under the GDPR to process this personal data. |
proxyConfiguration | proxy | off | Not needed. Vinted often refuses Apify's datacenter proxy addresses (HTTP 403); refused requests are retried on a new proxy session, which got through in one test run and stalled in another, so it does not cure a block. Residential proxy was not tested. |
Yes/no fields also accept the text "true" and "false" from the API; any other value is treated as the default and named in the run's warnings.
{"searchQueries": ["zara"],"country": "pl","priceMax": 50,"conditions": ["new_with_tags"],"startUrls": [{ "url": "https://www.vinted.it/catalog?search_text=gucci&order=newest_first" },{ "url": "https://www.vinted.es/brand/53-nike" }],"maxItemsPerQuery": 60}
This input was run as 7cYd35VWdGrx7vufh on 2026-10-14: 180 items in 8 seconds, 60 per search; the Polish items all cost 50 PLN or less and are all "new with tags", the Spanish ones are all Nike.
Example result
A business seller's item with Item details on, from run vmEmgucOFvfcjftHo (2026-10-14, build 0.1.9). The description and the photo list (8 URLs) are shortened here; nothing else is edited.
{"id": "10368164503","url": "https://www.vinted.fr/items/10368164503-jean-levis-510-skinny-w28-l28-bleu-tres-bon-etat-n809","title": "Jean Levi's 510 | Skinny | W28 l28 | bleu | Très bon état | N809","brand": "Levi's","size": "W28 | FR 38","condition": "Très bon état","conditionCode": "very_good","price": 19.9,"currency": "EUR","discountedPrice": null,"buyerProtectionFee": 1.7,"totalPrice": 21.6,"favouritesCount": 0,"isPromoted": false,"photoUrl": "https://images1.vinted.net/t/06_0007c_7v6UCrFhX9rtzU3k7UHfw4JU/f800/4aa3ef9b.webp?s=600e28f4ff9aeb8226b7aaeb236cd8b669445ac9","photoUrls": ["https://images1.vinted.net/t/06_0007c_7v6UCrFhX9rtzU3k7UHfw4JU/f800/4aa3ef9b.webp?s=600e28f4ff9aeb8226b7aaeb236cd8b669445ac9","https://images1.vinted.net/t/06_001f2_WiZniTZD7daf4bNCz9uWiLLD/f800/cec6a25f.webp?s=c4526b4134e66eb775d5be96dc7b80c43d792c82","… 6 more"],"thumbnailUrl": "https://images1.vinted.net/t/06_0007c_7v6UCrFhX9rtzU3k7UHfw4JU/310x430/4aa3ef9b.webp?s=8a8a5dae57051bb8aac60be5e46418ab2f470240","sellerType": "business","sellerId": "3130790208","businessName": "FreePrix","privateDataRedacted": false,"detailsFetched": true,"description": "Bonjour,\n\n🎁 -10% pour les abonnés!\n\nModèle 510 → Jean Levi's coupe : \"Skinny\"\nCatégorie : Homme\nTaille : \"W28 L28\"\nCouleur :Jean \"Bleu\" traditionnelle Lévis\nEta …","category": "Hommes Jeans skinny","categoryId": "1817","categoryPath": ["Hommes","Vêtements","Jeans","Jeans skinny"],"color": "Bleu","uploadedAgo": "Il y a une minute","availability": "InStock","isReserved": false,"businessLegalName": "FRIPRIX","businessLegalForm": "legal_business","businessCountry": "FR","country": "fr","query": "https://www.vinted.fr/catalog?search_text=levis%20501&order=newest_first","searchUrl": "https://www.vinted.fr/catalog?search_text=levis%20501&order=newest_first","scrapedAt": "2026-10-14T15:34:48.343Z"}
| Field | Meaning |
|---|---|
id | Vinted's item id; stable between runs. |
brand | null when the seller gave no brand. |
condition, conditionCode | Condition in the site's language, and the same condition as new_with_tags, new_without_tags, very_good, good or satisfactory on every site. |
price, currency | The asking price in the site's currency (items from another country are shown converted, as Vinted shows them). |
discountedPrice | Set when Vinted shows a reduced price, else null. |
buyerProtectionFee, totalPrice | Vinted's buyer protection fee and price + fee, as the site shows them. Shipping is not included. |
isPromoted | A promoted listing Vinted inserted into the results. |
sellerType | business (a professional seller registered as such on Vinted) or private. |
sellerId | The business seller's Vinted id; null for private sellers unless includePrivateSellerData is on. |
businessName, businessLegalName, businessLegalForm, businessCountry | From the business's legal information on an item page of that seller, read once per seller per run and copied to all the seller's items. They are null when includeBusinessNames is off, or when Vinted refused that seller's item pages twice; the status message then says for how many items. A sole trader's business name can be a person's name. |
privateDataRedacted | true for a private seller whose id was left out. |
detailsFetched | true when the item page was read for the details (includeDetails). |
uploadedAgo | Vinted's own words, in the site's language. |
query, searchUrl | The search as you gave it, and the URL that was read. |
Fields Vinted does not provide for an item are null, never missing.
Pricing
Pay per event.
| Event | Free | Bronze | Silver | Gold and above |
|---|---|---|---|---|
| Actor start (once per run at the default 512 MB) | $0.0036 | $0.003 | $0.0027 | $0.0024 |
| Item delivered | $0.00072 | $0.0006 | $0.00054 | $0.00048 |
Item details read (includeDetails), per item | $0.0012 | $0.001 | $0.0009 | $0.0008 |
Worked examples on Bronze: one search of 1,000 items costs $0.003 + 1,000 × $0.0006 = $0.603; with item details, + 1,000 × $0.001 = $1.603. A scheduled monitoring run that finds 20 new items costs $0.003 + 20 × $0.0006 = $0.015; a run that finds nothing new costs $0.003.
- Items that could not be delivered are not charged. An item found twice in one run (by two searches, or on two result pages) is delivered and charged once; an item another search of the same run already delivered does not count against this search's maximum. Item details are charged only for items whose page was read.
- The start event is charged by Apify once per GB of run memory: once at the default 512 MB, more if you raise the memory.
- The maximum total charge you set for a run is respected: the actor stops before it would go over, keeps what was delivered, and says so in the status message (run
4zP2uYnq2f2VhASg2: a $0.0072 limit gave exactly 7 items).
Reliability and failure behaviour
| What happened | Run status | Status message |
|---|---|---|
| Items delivered | Succeeded | Scraped 180 items from 3 queries |
| Items delivered, some business names not read | Succeeded | Scraped 2880 items from 3 queries — business name not read for 2 items (Vinted refused the item pages; businessName: null); … |
| A full search read, but some of its items never appeared | Succeeded | Scraped … — Vinted moved items between its result pages while they were read, so N items of the M it counts for … never appeared |
| Vinted has no items for your search | Succeeded | 0 results: Vinted has no items for this query |
| Some searches worked, some failed | Succeeded | Scraped 197 items from 2 queries — 1 of 2 queries failed ("…": …) |
| Nothing delivered because of errors or blocking | Failed | No items delivered: Vinted blocked every attempt; try again later. No items were charged (the start fee applies). |
| Input the actor cannot use | Failed, within 2 seconds | Nothing to do: … Add at least one entry to "startUrls", e.g. … No items were charged (the start fee applies). |
| Maximum charge reached | Succeeded | Scraped 7 items from 1 query — stopped at the maximum charge set for this run |
| Run timeout close | Succeeded | … — stopped just before the run timeout; raise the timeout to get the rest |
| Vinted's page no longer holds the data this actor reads | Failed | No items delivered: Vinted's page did not contain the catalogue data this actor reads (layout change?) … |
- Requests are retried with increasing pauses on network errors, HTTP 429 and 5xx; refusals are named in the log as they happen.
- Results are saved page by page. A run that is aborted, times out or is resurrected keeps what was delivered and never delivers or charges the same item twice.
- Measured on 2026-10-14 (41 test runs in all; the last 16 on the current code): every run delivered what was asked or ended with the right status (normal, multi-country, 3 × 960, details, monitoring, empty search, bad input, charge limit), and in every run the items charged equal the items delivered. No run met a block on result pages; item pages answered HTTP 429 (rate limit) at times and were waited out (
bhlYsmve9e691FUPG: 5 refusals, 40 of 40 details read). The blocked and layout-change paths were verified in offline simulations only.
Limits
- 960 items per search. Vinted shows at most 10 pages of 96 for any search. When Vinted's count for a search reaches 960, the status message says so: narrow it with filters (price bands, sizes, categories) to reach the rest. Splitting a search automatically is not built.
- Result pages move while they are read. Newest first, new listings push older ones down, and even on quiet searches Vinted's pages overlap from one request to the next: a reading of "barbour bedale olive 46" on vinted.ie (600 items by Vinted's count) once showed only 575 distinct items (
oXfdr6LqezaDNZ6Oz, previous build). So the pages a run needs are requested together, and when a search read to its end showed repeated items, all its pages are read a second time and the items not seen before are added: the same search then gave 686 distinct items (QkQfKbQ71mJvaCK1r; Vinted's pages vary between requests, so a full reading can return more items than Vinted counts). If fewer distinct items than Vinted's count still came, the status message says how many never appeared. Nothing is charged twice. - Speed. Without details, result pages take a few seconds each and the rest depends on business sellers, whose names need one item page per seller, paced at about one a second because Vinted rate-limits item pages: 100 items with no business seller in 3.7 s (
LlR2xdOWZH46hUQyT); 300 items from 25 business sellers in 35 s (SrrF6p5ZVKExy3L9W); 6 searches × 96 on six sites in 30 s (di9blT85Zrehyew60); 3 × 960 with 58 business sellers in 175 s (Nvd4E9ZODnNeW4dVs, about 1,000 items a minute). Turn offincludeBusinessNamesfor the fastest runs. With Item details on, every item needs its page: about 25 to 50 items a minute, depending on how often Vinted rate-limits item pages (40 in 86 s,bhlYsmve9e691FUPG; 100 in 260 s,bhMk8UVNAna8Pd2Sp; 30 in 37 s,KdkEn0fWhaiLuIYQF). - Order. Searches are read newest first unless the URL you paste sets another order; with Only new items they are always read newest first.
- Upload time is only Vinted's relative wording, and only with item details.
- Category of an item comes only with item details (the search results do not carry it; a category filter in the search also matches its sub-categories, so it is not the item's own category).
- Countries: the 26 Vinted sites listed under
country. The condition codes were checked on all 26.
Monitoring: only new items
- Turn on Only new items and save the input as a task.
- Schedule the task (every 10 minutes, hourly, daily).
- The first run delivers what it finds (up to the maximum). Every later run reads newest first and delivers and charges only items it has not delivered before for the same search; a run with nothing new ends as Succeeded with
0 new items…and charges only the start event.
Tested on 2026-10-14: a quiet search on vinted.ie ("longchamp pliage") delivered 200, then 1, then 1, then 0 items in four runs (fc7qDM9FXphCKrkte, wYadaLyqlxx8deaPr, Amu0k5M37XcMXOsxF, rnkGVUCK5WMn4GOZi), no item twice. On the current build, a new monitor on the same search delivered 200, then 0 (hiYJM0ZuC9IQnVeOn, 0CBWxSghrBDyKIY7V), and one on "nike" (vinted.de) delivered 300, then a few minutes later 126 others with no overlap, reading 2 pages (5Qdl8lC9ssxpQf7gO, npXdVp0CnwMSb4XzF). A busy one ("nike" on vinted.de) delivered 200 and, 25 minutes later, 200 others with no overlap (QFAfU8azhI4HIVkLH, 2FE3RnNnezFib2OjM); the second run said that more than 200 new items had arrived, so raise the maximum or run more often for such searches.
"New" means "not delivered before by this monitor". Vinted's newest-first order also brings back some older listings that sellers have bumped to the top: if this actor has not delivered them before, they come as new. A later run reads down to the first page where at least a quarter of the items are known, so a few bumped items do not stop it early.
The memory is a key-value store named vinted-scraper-monitor in your own account (one record per search and monitor name, at most 10,000 ids each, oldest forgotten first). Delete the store or change Monitor name to start over. Items cut off by the maximum or by your charge limit in a later run are not delivered by the next one (the status message warns you), so set the maximum above what arrives between two runs. To be notified, add an integration to the task (email, Slack, webhook) on "run succeeded" and check that the dataset is not empty.
FAQ
Do I need a proxy or a Vinted account? No. The actor does not log in and reads only public pages, without a proxy. Apify's datacenter proxy addresses are often refused by Vinted.
Why did I get fewer items than Vinted shows? Vinted shows at most 960 per search, and its result pages move while they are read; the actor reads them a second time when that happens, and the status message says how many items never appeared (see "Limits"). The run summary lists per search how many items were found, delivered, repeated and recovered (pageShift).
Why do I get items for a word that makes no sense? Vinted matches search text loosely, so an unusual word can still return loosely related items (17 items for "qxzvjkwpl zzyqmb", VpGmXkdg2eJ3Alm3s); the actor returns what Vinted returns. 0 results comes only when Vinted itself finds nothing, e.g. with a narrow price band. Use filters or a pasted URL to narrow.
How do I find a brand, size or category id? Pick the filter on Vinted and look at the URL: brand_ids[]=53, size_ids[]=207, catalog[]=1231. Or simply paste that URL into startUrls.
Can I run it from code? Yes: the API, the Apify clients for JavaScript and Python, Make, Zapier, n8n. The Output tab shows the URLs.
What happens when Vinted changes its pages? Runs fail with a message that names the problem instead of returning empty data; report the run id under Issues.
Legal and responsible use
This actor collects listing data that Vinted shows publicly without a login: item, price and condition data, and the legal information Vinted publishes about business sellers (for a sole trader, the business and legal name can be a person's name; it is returned because Vinted publishes it as trader information, and includeBusinessNames: false without item details leaves it out). Most Vinted sellers are private individuals. By default the actor does not return their ids, usernames, profile photos, locations or ratings, and it removes phone numbers and e-mail addresses that sellers write into descriptions; records carry sellerType and privateDataRedacted. Item photos are returned as Vinted shows them and can show people. The optional includePrivateSellerData adds private sellers' numeric ids; use it only with a lawful basis under the GDPR.
Vinted's terms are reported to forbid bots and automated collection (we could not read the clause ourselves); treat use of this actor as against those terms. You are responsible for how you use the data: respect Vinted's terms, copyright and database rights, and data-protection law (GDPR and others) in your country and the country of the data. Do not use the output to contact, profile or track individual sellers, or for unsolicited marketing. If you are unsure, ask a lawyer before you build on it.
Related actors
Other actors by the same developer:
- Listing Status Checker: paste Vinted item URLs you already have and get, per item, whether it is still online, reserved or sold (
saleConfirmed: truefor a sale through Vinted's checkout) and its current price against the last check. Useful for measuring how fast items sell after you collect them with this actor. - Leboncoin Scraper: ads from leboncoin.fr, France's largest classifieds site, in every category including clothing and accessories, to compare second-hand prices in France beyond Vinted.
- Kleinanzeigen Scraper: ads from kleinanzeigen.de, Germany's largest classifieds site, in every category, to compare second-hand prices in Germany beyond Vinted.
Changelog
- 2026-10-14 0.1: first release.
Support
Open an issue on the actor's Issues tab with the run id.