How every number on this site is calculated
You are being asked to make buying decisions with our data. That is only reasonable if you can check how it is produced — so here is the whole method, including the parts that are unflattering.
On this page
Where the data comes from
We continuously read public live listings, and watch which ones leave the shelf, across all five main EU Vinted domains — Spain, France, Germany, Italy and Portugal. Nothing is bought from a third party. Prices and counts trace back to listings that actually existed; momentum and sell-through are ratios computed from them, not predictions.
We anchor on listings that left the shelf, not active ones. Active listings tell you what sellers hope to get. Here is the honest version of what a departure tells you: we do not see a receipt. We see a listing disappear from a Vinted search shelf, and we record its last asking price as the departure price. A departure can be a sale; it is also consistent with the seller delisting it, an account ban, an offline sale at a different price, or the seller relisting the same item under a new id — which we cannot always tell apart from a genuine sale. That last case matters more than it sounds: a seller relists what is not selling, so the items most likely to generate a fabricated “sale” are exactly the slow-moving ones a reseller most needs an honest warning about. We have not yet measured how often this happens. The price shown is therefore an asking price at the moment of departure — a real, useful proxy, and the closest honest signal Vinted's public data supports — but not an observed sale price. Most tools quote active-listing asking prices because they are far easier to collect; we go one step further and track departures, but we do not claim to have watched money change hands.
A departure on this site means we watched a listing go from active to gone. Listings we first saw already gone are in the catalogue count, not in weekly departures. That is why listings tracked can be millions while weekly watched departures are in the hundreds or thousands — not because the market died, and not because a refresh zeroed the table.
Right now
How fresh it is
| Listing collection | scheduled every 30 min/market, skips if busy | measured 2026-09-02 from the scraper run log: 83% of gaps under 1h over the trailing 7 days (n=1,157); 58% under 1h over the last 48h during a current backlog |
| Signal recomputation | ~every 2 hours | scores, sell-through, buy-below — a slower cycle than collection; 0 skips observed in the same window |
| Departure verification | every 60 minutes | confirms a listing left the shelf — not that it sold; 0 skips observed |
| Public page refresh | no page cache — live per request | each request renders from the current database; not a 15-minute cache |
So right now a new listing is usually in the dataset within an hour — worse than our 30-minute target while a scraper backlog clears (see the measured cadence above). The signal computed from it — buy-below, sell-through, confidence — can lag up to about 2 hours behind that. We publish the measured cadence rather than a rounder number that sounds better, and this table is the one we correct first if the schedule changes.
Sell-through rate — the formula
Sell-through is the share of the universe we actually watched: items we saw listed and then saw leave the shelf, versus items still listed. It is not weekly turns (departures ÷ active × 100), which can exceed 100% and must never be labelled sell-through.
str = sold_observed / (sold_observed + active_listings) × 100The numerator is only transitions we watched (sold_observed=1) — a listing leaving the shelf, never a discovery-stamped sold_at. Null, not 0 or 100, when watched departures are below 30 or still-listed is 0 (active≤0 is the only way this share hits 100%). Raw departure and listed counts still show.
Why this matters
Buy-below price — the formula
buy_below = typical_asking_price × 0.70typical_asking_price is the p30 (lower third) of the de-duplicated live asking prices for that model on Vinted, and the typical range runs from p25 to p50. Departures do not set the price: they back the confidence band and the counts. There is no fee factor: Vinted charges private sellers no selling fee, and the percentage-based charge on its fee card is the buyer's Vinted fee, paid on top of the item price. The 0.70 is 70% of the typical resale price. Business accounts and other platforms can differ, so check their own fee pages. The profit calculator applies current per-platform rates across Vinted, Depop, eBay, Poshmark, StockX and GOAT.
Typical resale price: based on current asking prices for this model on Vinted (lower third of the market). The range shown is the typical range.
The buy-below price for 50 individual models, with observed departures and sample sizes, is in the Buy-Below Sheet.
Verdict confidence — HIGH / MEDIUM / LOW
Every BUY / WATCH / SKIP carries a confidence band from the data we actually have: data-quality score, comparable watched departures, and snapshot recency. It is not a model guessing how sure it is.
| HIGH | ≥ 30 comparable departures and quality ≥ 70 | snapshot younger than 48 hours |
| MEDIUM | ≥ 10 comparable departures and quality ≥ 40 | or HIGH but the snapshot is stale |
| MEDIUM provisional | ≥ 200 active asking comparables, spread ≤ 0.6 | no departures needed. Priced from active asking prices, not watched departures. Spread = (p75 − p25) ÷ median. Always marked provisional. |
| LOW | thinner than that | always paired with “Only N comparable departures” |
What LOW means
The authenticity check is a confidence score, not a verdict
This one needs stating plainly because the downside of a misunderstanding is someone buying a fake. The check never sees the physical item. It reads a listing and weighs three things: how far the price sits below the real market for that model, seller trust signals, and patterns in how the listing is written and photographed. It returns a 0–100 confidence score in one of four bands.
| 75–100 | High confidence | nothing unusual found |
| 50–74 | Moderate — verify | some signals worth checking |
| 25–49 | Low confidence | several unusual signals |
| 0–24 | Very low | multiple red flags |
What it is not
What this data cannot tell you
Every dataset has edges. Ours are these, and we would rather you learn them here than discover them after a bad buy.
- "Sold" timestamps are when our tracker first saw a listing leave the shelf — not a sale timestamp, and not necessarily a sale at all. Vinted does not publish transaction data, so a departure can also be a delisting, a removal, an offline sale at a different price, or a relist under a new id.
- A seller who cannot sell an item tends to relist it, which reads to us as the old listing departing. We have not yet measured how often this happens, but the direction is not neutral: it means the slowest-moving items are the ones most likely to show a fabricated "sale," not a random sample of all items.
- Days-to-sell measures time to departure, not time to sale, and is only directly observed for a very small fraction of items, because most departed items are first seen already gone. Speed is therefore inferred from weekly momentum against a monthly baseline for nearly all models, not measured per item.
- Momentum needs roughly 30 days of history to rank models against each other. Before that the board collapses onto STABLE — and we now say so in the product rather than showing confident labels we cannot support.
- Around 30–45% of listings fall into an 'Other' category because our multilingual keyword matching did not hit a term. That is a real bucket, not a discard bin, but it means category volumes understate reality.
- We track a fixed set of brands. A brand we do not track has no data here — that is coverage, not a market signal.
- For some of the tracked brands we have no per-model breakdown, either because the brand genuinely does not name its products (for example Zara, Pull&Bear, Bershka, Mango) or because our model catalogue has not been extended to them yet.
What we will not do
- Show an accuracy figure without its method. The figure on the accuracy page compares our typical price with the median asking price of the listings we then watched leave the shelf: asking prices, not receipts. It is re-run every Monday and the misses are listed. How accurate we were
- Overstate the dataset. We publish two counts and name both: 4M+ listing records (one row per listing per Vinted domain, so an item listed on several domains counts once per domain) and 2,792,350 distinct items (COUNT(DISTINCT external_id), each item counted once). We never present the records figure as unique items, and we never add up per-country volumes. We previously said 30M+, which came from a development database that does not serve this site; that was corrected.
- Count the same listing five times. Vinted's five domains are largely one shared catalogue — most listings appear on several at an identical price. Summing per-country volumes inflates the total by roughly 2.5–3.5×. We publish one aggregated figure.
Check the data yourself
The aggregate market data is public and free to cite with attribution. You get 10 free checks a day, no account, no card. Starter at €9 gives 100 checks a month. Cancel anytime.
Questions
How fresh is Resale IQ's Vinted data?
The scraper is scheduled every 30 minutes per market across all five EU Vinted domains, but a run is skipped if the previous one is still in progress. Measured on production over the trailing 7 days (2026-08-26 to 2026-09-02, from the scraper run log): 83% of gaps land under an hour — median 34 minutes, mean 43 minutes, n=1,157 gaps across the 5 domains. The most recent 48 hours ran slower, 58% under an hour (n=242), while a backlog of skipped runs clears. Signals are recomputed on a slower cycle, roughly every 2 hours, and that cycle has run on schedule with no skips in the same window. Departure verification — checking which listings have left the shelf — runs every 60 minutes, also with no skips observed. Public pages carry no page-level cache; each one renders from the live database on every request. So right now a new listing is usually in the dataset within an hour, worse than our 30-minute target while the backlog clears; the score built from it can lag up to about 2 hours behind that.
How is sell-through rate calculated?
Watched departures divided by watched departures plus still-listed items. Only transitions we observed (sold_observed) — a listing leaving the shelf, not a confirmed sale. We withhold the percentage (null, not 0) when watched departures are below 30 or still-listed is 0 — that last case is the 100% hole, not a rate. Raw counts stay. We never label weekly turns as sell-through.
How is the buy-below price calculated?
The typical resale price is based on current asking prices for this model on Vinted (the lower third of the market, with each listing counted once across the Vinted sites we track), multiplied by 0.70. There is no fee step: Vinted charges private sellers no selling fee. These are asking prices; we do not observe the price an item finally changes hands at.
What does HIGH / MEDIUM / LOW confidence mean?
It is a band from data-quality score, comparable watched departures and snapshot recency — not a model guessing. HIGH needs at least 30 comparable departures. LOW always says how many comparables we have. LOW is not a SKIP. A provisional MEDIUM can also come from at least 200 active asking-price comparables with a narrow price spread and no departures; it is always marked provisional.
Is the authenticity check a guarantee?
No. It is a confidence score, not a verification, and it never sees the physical item. It weighs how far the price sits below market, seller trust signals and listing patterns, then returns a 0-100 score with a band. It cannot authenticate anything and must not be treated as a guarantee. For anything valuable, use a professional authentication service.