Vinted Listings & Condition Scraper
Pricing
from $2.50 / 1,000 results
Vinted Listings & Condition Scraper
Search Vinted (vinted.com/.co.uk/.de/.fr) catalog listings by keyword — one row per item with price, condition, brand, size, seller, and photo. Built for resale-arbitrage comps. No login; we handle the retries.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🎯 What this scrapes
Vinted is Europe's largest resale marketplace, and it doesn't publish a clean price-comps export — resellers checking what an item is actually worth are stuck scrolling active listings by hand across four separate country domains. This Actor queries Vinted's own catalog search by keyword — optionally narrowed by brand, size, and price band — across vinted.com, vinted.co.uk, vinted.de, and vinted.fr, and hands back one clean row per active listing: price, condition, brand, size, seller, favourite count, and photo.
Honesty note: this Actor returns Vinted's public catalog of active, visible listings — price and condition intel for what's currently for sale — not a closed-sale "sold comps" transaction history. Vinted's public API doesn't expose a sold flag; see Limitations below.
🔥 What we handle for you
- 🛡️ We rotate browser fingerprints —
curl-cffiimpersonation replays a real Chrome TLS handshake, rotating profiles between retries so Vinted sees a browser, not Python. - 🔁 We retry with exponential backoff on
408 / 429 / 503and network errors — up to 5 attempts,Retry-Afterhonoured. - 🌐 We rotate proxies through Apify Proxy on every retry — fresh session, fresh exit IP.
- 🧱 We back off when the target rate-limits. Partial successes surface with a clear status message; we never silently return an empty dataset.
- 🧊 We keep the dataset clean — Pydantic-validated rows, ISO-8601 timestamps, stable item IDs.
- 💰 You pay only for results that land. No data → no charge, beyond the small
actor-startwarm-up fee.
💡 Use cases
- Resale-arbitrage comps — check what similar items are currently priced at before buying stock to flip.
- Sourcing research — see which brands, sizes, and condition bands are actually listed and at what price.
- Cross-market pricing — compare the same keyword's asking prices across the US, UK, German, and French Vinted domains.
- Demand tracking — monitor favourite counts as a proxy for listing interest over time.
⚙️ How to use it
- Click Try for free at the top of the page.
- Set
keywordsto one or more search terms (e.g."nike jacket"). - Pick a
domain— defaults tovinted.com. - Optionally set
brand,size,priceFrom, andpriceToto narrow the search. - Set
maxItems— the cap on rows emitted across all keywords combined. - Click Start. Rows stream into the run's dataset as they're found.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
keywords | array | yes | — | One or more free-text search terms, e.g. "nike jacket". Results merge, sharing the maxItems budget. |
domain | string | no | vinted.com | One of vinted.com, vinted.co.uk, vinted.de, vinted.fr. |
brand | string | no | — | Folded into the search text. |
size | string | no | — | Folded into the search text. |
priceFrom / priceTo | number | no | — | Passed through as catalog query parameters. priceTo must be ≥ priceFrom when both are set. |
maxItems | integer | no | 50 | Cap on rows emitted across all keywords, 1-1000. |
proxyConfiguration | object | no | {"useApifyProxy": true} | Standard Apify Proxy input. |
Example input
{"keywords": ["nike jacket"],"domain": "vinted.com","maxItems": 50,"proxyConfiguration": { "useApifyProxy": true }}
📤 Output
One dataset row per matched, visible listing:
| Field | Type | Notes |
|---|---|---|
item_id | integer | Vinted's own numeric item ID. |
title | string | Listing title. |
brand / size | string | null | Seller-set brand and size tags. |
price | string | Asking price as a decimal string, e.g. "12.00". |
currency | string | ISO 4217 currency code. |
status_condition | string | null | Condition label, e.g. "Good" — not a sold flag. |
url | string | Canonical Vinted item URL. |
photo_url | string | null | Primary listing photo. |
seller_login | string | null | Seller's Vinted username. |
favourite_count | integer | Number of users who favourited the listing. |
created_at | string | null | Always null — no confirmed public source for listing creation time. |
scraped_at | string | ISO-8601 UTC timestamp for this row. |
Example output
{"item_id": 9518825280,"title": "Free Country jacket","brand": "Free Country","size": "M","price": "12.00","currency": "USD","status_condition": "Good","seller_login": "jane_doe123","favourite_count": 3,"created_at": null,"url": "https://www.vinted.com/items/9518825280-free-country-jacket","photo_url": "https://images1.vinted.net/t/...","scraped_at": "2026-07-29T12:00:00.000Z"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.01 | One-off warm-up charge per run |
item-result | $0.0025 | Per listing row written to the dataset |
Example: 1 000 results ≈ $2.51. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
This Actor returns active, visible listings only — Vinted's public catalog API exposes no sold boolean, so this is price and condition intel for current inventory, not a closed-sale transaction history. created_at is always null in v1 — no confirmed public source exists for listing creation time. brand and size filters are folded into the free-text search rather than a dedicated facet lookup, so a narrow combination can under-match versus Vinted's own UI.
❓ FAQ
Does this return sold listings?
No — Vinted's public catalog API only exposes active/visible listings. There's no sold flag in the public wire format, so this Actor returns current asking prices and condition, not closed-sale history.
Do I need a proxy?
proxyConfiguration defaults to Apify Proxy on. We rotate sessions on every retry to stay ahead of rate limits.
Which domains are supported?
vinted.com, vinted.co.uk, vinted.de, and vinted.fr — all share the same catalog wire format.
Why is created_at always null?
No public endpoint reliably returns a per-item creation timestamp for this target. We'd rather ship null than fabricate a value.
💬 Your feedback
Spotted a bug, a field that doesn't match reality, or a Vinted domain we're missing? Open an issue on the Actor's Issues tab on Apify Console — the devil's in the data, and we'd rather fix it than let it slide.