Vinted Listings & Condition Scraper avatar

Vinted Listings & Condition Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Vinted Listings & Condition Scraper

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

DevilScrapes

Maintained by Community

Actor 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 fingerprintscurl-cffi impersonation 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 / 503 and network errors — up to 5 attempts, Retry-After honoured.
  • 🌐 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-start warm-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

  1. Click Try for free at the top of the page.
  2. Set keywords to one or more search terms (e.g. "nike jacket").
  3. Pick a domain — defaults to vinted.com.
  4. Optionally set brand, size, priceFrom, and priceTo to narrow the search.
  5. Set maxItems — the cap on rows emitted across all keywords combined.
  6. Click Start. Rows stream into the run's dataset as they're found.
  7. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
keywordsarrayyesOne or more free-text search terms, e.g. "nike jacket". Results merge, sharing the maxItems budget.
domainstringnovinted.comOne of vinted.com, vinted.co.uk, vinted.de, vinted.fr.
brandstringnoFolded into the search text.
sizestringnoFolded into the search text.
priceFrom / priceTonumbernoPassed through as catalog query parameters. priceTo must be ≥ priceFrom when both are set.
maxItemsintegerno50Cap on rows emitted across all keywords, 1-1000.
proxyConfigurationobjectno{"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:

FieldTypeNotes
item_idintegerVinted's own numeric item ID.
titlestringListing title.
brand / sizestring | nullSeller-set brand and size tags.
pricestringAsking price as a decimal string, e.g. "12.00".
currencystringISO 4217 currency code.
status_conditionstring | nullCondition label, e.g. "Good" — not a sold flag.
urlstringCanonical Vinted item URL.
photo_urlstring | nullPrimary listing photo.
seller_loginstring | nullSeller's Vinted username.
favourite_countintegerNumber of users who favourited the listing.
created_atstring | nullAlways null — no confirmed public source for listing creation time.
scraped_atstringISO-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:

EventUSDWhat it is
actor-start$0.01One-off warm-up charge per run
item-result$0.0025Per 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.