Vinted hides sold listings - this actor watches one bounded search on a schedule and emits likely-sold items with the last asking price, days listed, brand, size and condition. The sold-comps signal resellers need, with zero seller data by construction.
$1.69 / 1,000 · 100.0% success over 11 public runs in the last 30 days.
Run it on Apify → Free to try - runs bill per result on your own account.
Every field is optional unless marked; sensible defaults do the rest.
| Field | Type | What it does | Default |
|---|---|---|---|
searchQuery |
string | The market slice to watch, exactly as you would type it in Vinted's search box, e.g. "nike air max 90". Keep it narrow enough to fit one snapshot (~960 listings) - the run warns when it does not. | nike air max 90 |
domain |
string | Which national Vinted site to watch. | fr |
priceMin |
integer | Watch only listings at or above this price (site currency) - the standard way to narrow a broad query. | - |
priceMax |
integer | Watch only listings at or below this price (site currency). | - |
absenceThreshold |
integer | How many consecutive runs a listing must be missing before it counts as likely sold. 2 (default) absorbs single-run hiccups; 1 detects faster with more noise. | 2 |
maxPages |
integer | Catalog pages per snapshot (1-10; the site serves at most 10). Lower is cheaper but covers less of the query. | 10 |
stateStoreName |
string | Named store carrying the tracked-listings memory. Use a different name per watched query to keep detections independent. | vinted-sold-detector-state |
resetState |
boolean | Forget the tracked listings and re-seed the baseline on this run. | False |
maxItems |
integer | Upper bound on sold detections delivered per run. | 500 |
One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.
| Field | Type | Meaning |
|---|---|---|
listingId |
string | Vinted item ID of the disappeared listing. |
title |
string | Listing title as it was posted. |
url |
string | The listing's URL (may 404 after the sale - that is the point). |
lastPriceCents |
['integer', 'null'] | Last asking price observed before the listing disappeared, in minor units. |
currency |
['string', 'null'] | Currency of the price. |
brand |
['string', 'null'] | Brand line from the listing card. |
size |
['string', 'null'] | Size as displayed. |
condition |
['string', 'null'] | Condition as displayed, in the site's language. |
firstSeenAt |
string | When this actor first observed the listing live. |
lastSeenAt |
string | Last run that still saw the listing live. |
soldDetectedAt |
string | When the absence threshold was reached. |
daysListed |
integer | Days between first observation and detection - a sell-through speed signal. |
status |
string | Always likely_sold. A removed or relisted item is indistinguishable from a sale from outside - documented honestly. |
100.0% success over 11 public runs in the last 30 days. Live record, failures included: status page.
Full documentation, examples and the AI-assistant prompt live on the store page.