Vinted France — Listings, Sold & Removed Status
Pricing
from $1.50 / 1,000 listings
Vinted France — Listings, Sold & Removed Status
Scrape vinted.fr listings for a keyword: itemId, title, brand, size, lastPrice and status (active, sold or removed). Try it returns live catalog matches. Sold/removed only when the item page or a scheduled snapshot says so — no dummy IDs. RESIDENTIAL FR recommended.
Pricing
from $1.50 / 1,000 listings
Rating
0.0
(0)
Developer
Noah Adler
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
vinted.fr listings for a keyword: itemId, title, brand, size, lastPrice and status (active, sold, removed). Try it with Nike (or any query) returns live catalog matches. vinted sold / removed only when the item page or a scheduled snapshot says so — never dummy IDs.
Vinted has no public sold archive. Official Vinted Pro allowlist is broken. This Actor searches the public catalog HTML. Sold/removed is a status on a real listing (SoldOut, 404, or gone vs last snapshot), not a historical sold feed.
Table of contents
- What you get
- How it works
- Input
- Output
- Example input
- Use cases
- Proxy
- API quick start
- FAQ
- Limitations
- Racimo
- Keywords
What you get
One row per listing (or sold/removed event)
itemId,url(vinted.fr / .es / .de)title,brand,sizestatus:active|sold|removedlastPrice,soldPrice(only when status is sold and a price is still on the page or snapshot),currency(EUR)lastSeenAt,daysListedwhen the item page exposes a created datesellerId,country,scrapedAt
Default Try it (includeActive: true) is a vinted france catalog for your keyword. It is not a fake sold dump.
How it works
| Step | Action |
|---|---|
| 1 | Open vinted.fr (or .es / .de) and load catalog HTML for your keyword or catalogUrl. |
| 2 | With includeActive on (default), push those cards as active rows. |
| 3 | Save the universe in Actor storage for the next run. |
| 4 | Probe only real itemIds / watchItems and IDs that vanished since the last snapshot. |
| 5 | Item page: InStock = active. JSON-LD SoldOut = sold. HTTP 404 = removed. Invented IDs are ignored as comps. |
The internal /api/v2/catalog/items route is gone (404). v0.2 uses public catalog HTML + item pages over HTTP. No Playwright.
Input
| Field | Required | Default | Notes |
|---|---|---|---|
keyword | One of keyword / URL / IDs | nike air force | Brand query as on Vinted |
catalogUrl | One of keyword / URL / IDs | — | Full catalog or /vetements URL |
itemIds | One of keyword / URL / IDs | — | Real IDs or item URLs only |
watchItems | No | — | Last-known cards (itemId, title, lastPrice, …) |
country | No | fr | fr / es / de |
maxItems | No | 20 | 1–80 |
lookbackHours | No | 168 | Keep IDs between scheduled runs |
includeActive | No | true | On = usable Try it catalog; off = sold/removed diffs only |
proxyConfiguration | No | RESIDENTIAL + market CC | Keep country aligned to the site |
Output
One row per listing (or sold/removed). A hard block pushes one row with error: true and a message that names RESIDENTIAL + FR/ES/DE.
{"itemId": "10121328475","url": "https://www.vinted.fr/items/10121328475-basket-nike","title": "Basket nike","brand": "Nike Air","size": "36","status": "active","lastPrice": 10.0,"soldPrice": null,"currency": "EUR","sellerId": "222058101","country": "fr","scrapedAt": "2026-09-24T16:00:00Z"}
Example input
Use this as Try it. It must return Nike (or your keyword) catalog rows, not dummy tombstone IDs.
{"keyword": "nike air force","country": "fr","maxItems": 12,"lookbackHours": 168,"includeActive": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "FR"}}
To watch sold/removed only, set includeActive to false and run on a Schedule every 6–12 hours. The first of those runs seeds watch state; later runs emit comps when items leave the catalog.
To check IDs you already have (must be real listings):
{"keyword": "nike air force","country": "fr","itemIds": ["10121328475"],"includeActive": true,"maxItems": 12}
Use cases
- Pull a Nike / Zara / Sézane catalog from vinted france with last asking price.
- Schedule the same keyword with
includeActiveoff to catch vinted sold / vinted removed inside that universe. - Feed a repricer: last asking price vs sold price when the page still shows it.
Proxy
Vinted sits behind Cloudflare / DataDome on some JSON routes. This Actor stays on public HTML. Default proxy is Apify RESIDENTIAL with country FR for vinted.fr. Use ES / DE when you change country.
API quick start
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("noahadler/vinted-sold-comps").call(run_input={"keyword": "nike air force","country": "fr","maxItems": 12,"includeActive": True,})items = client.dataset(run["defaultDatasetId"]).list_items().items
curl "https://api.apify.com/v2/acts/noahadler~vinted-sold-comps/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"keyword":"nike air force","country":"fr","maxItems":12,"includeActive":true}'
FAQ
Why did Try it used to return two nonsense IDs? Old examples used dummy tombstones (1000000000). Those are gone. Try it is keyword catalog.
Will the first Schedule with includeActive off be empty? Yes, honestly. There is no public sold feed. The next run compares the snapshot.
Is this another Vinted search scraper? Search is what Try it delivers. Sold/removed is optional status / schedule, not invented comps.
Can I use Spain or Germany? Yes. country=es or de. Default is France.
Do I need Vinted Pro? No.
Will I get every sale on Vinted? No. Only sales/removals inside the universe you watch.
Limitations
- France is the default market (
vinted.fr). ES/DE via input. - Cap 80 items per run.
- Sold price equals last asking price when Vinted hides the close price.
- No invented neighbor IDs. Dummy tombstones are not comps.
includeActivefalse without a prior snapshot is a seed, not a sold archive.
Racimo
Hero: vinted listings + status. Later (only if this one gets runs): Vinted search FR/ES, then seller wardrobe.
Keywords
vinted sold · vinted sold items · vinted france sold · vinted listings · vinted removed · vinted scraper