Vinted Underpriced Listings — Cheap and Most Favourited
Pricing
from $20.00 / 1,000 search scanned for deals
Vinted Underpriced Listings — Cheap and Most Favourited
Type a keyword and get the Vinted listings in the cheapest slice of that search, ranked by how many people favourited them. Returns the search's median asking price, the deal cutoff, and each deal's price, brand, condition and favourites. $0.02 per search; too few or too mixed = free. Unofficial.
Pricing
from $20.00 / 1,000 search scanned for deals
Rating
0.0
(0)
Developer
h ichi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What it does: Works out the asking-price spread of your Vinted search on one country site, then returns the cheapest slice ranked by favourites (Vinted has no sold prices).
You enter: Keywords, e.g. nike air max, a country site (default fr) and what counts as cheap (cheapest 20%).
You get: One row per search: listings sampled (300 by default, promoted ones dropped), median asking price and range, deal cutoff price, deals found. One row per deal: price, buyer total, brand, size, condition, favourites, demand rank.
Price: $0.02 per search, and every keyword in your list is charged. +$0.002 per deal found (on by default; turn "Include individual deals" off for the summary only). A search with too few or too mixed listings = no charge.
Unofficial — not affiliated with Vinted. Reads public pages only.
Read this before you read the numbers
Vinted has no sold data. Its catalog serves live, unsold listings only — Vinted publishes no sold prices anywhere, so nobody can give you them. So the basis here is the asking-price distribution of the search itself, exactly as our AutoScout24 deal finder does for cars.
That means every number in the output answers "cheap relative to what else is being asked right now" and not "cheap relative to what things sell for". discountBasis says so on the summary and on every single deal record. If you need realized sale prices, this is the wrong marketplace, not the wrong Actor.
How a deal is picked
- Page the catalog for your search term with
order=relevance, pushingpriceMin/priceMaxto Vinted so the basis and the candidates are the same sample. - Drop the promoted placements, the duplicates and the priceless rows (see below) — what is left is the basis.
dealCutoffPrice= the price that marks off the cheap end of that basis, set bydealPercentile.20means "in the cheapest fifth of what is on offer".- Everything at or below the cutoff is a deal — then ranked by
favouriteCount, not by how cheap it is.
Cheap alone is worthless. The cheapest listing in a fashion search is usually the least wanted one. Measured on nike air max / vinted.fr: the five cheapest "deals" in an unbounded search were a sports bra, a sweatshirt, a pair of shorts and two pairs of shoes; the five most favourited deals were all shoes. Demand is what separates a bargain from a thing nobody wants at any price.
The ranking is auditable, not asserted: demand.favouriteCountBasis and demand.favouriteCountDeals ship with every summary, and every deal carries its own favouriteCount, favouritePercentile and demandRank.
view_countis returned by Vinted's catalog endpoint and is always 0 — measured over ~1,800 items across seven searches and two country sites. It is therefore not part of the ranking, anddemand.viewCountAvailableisfalserather than the Actor quietly ranking on a field of zeroes.
Two prices, and which one the cutoff is measured on
Vinted quotes price (what the seller asks) and total_item_price (what the buyer pays, i.e. asking + Buyer Protection — measured affine, about 0.70 + 5%). The cutoff and the spread guard are both worked out on the asking price, which is what the search page shows and what "underpriced" means. Both are emitted on every deal, together with buyerProtectionFee, so you can see the difference before you commit.
Two guards, because a basis can lie in two ways
Too thin. minComps (default 30) refuses a search whose cutoff would rest on a handful of prices.
Too many kinds of thing. maxCompSpread (default 12x) compares the dear end with the cheap end — the price 90% of listings are under, divided by the price 10% are under — and refuses a search that is mixing product tiers rather than describing one market. That pair rather than the middle 50% because a fashion keyword is a wide market by nature and the mixing shows up at the ends. Measured on vinted.fr, 2026-08-10:
| search | p90 / p10 | what it is |
|---|---|---|
levis 501 | 3.3x | one product |
nike air max, priceMin: 30 | 2.5x | one product, tier-bounded |
nike air max, unbounded | 5.3x | shoes plus tracksuits, leggings and bags |
zara robe | 5.7x | many dress tiers |
chanel | 15.0x | a keychain and a handbag in one median |
leica m6 | 204x | a lens cap and a camera in one median |
The fix is named in the refusal itself:
{ "keywords": ["nike air max"], "domain": "fr", "priceMin": 30 }
The band is pushed to Vinted, so it bounds the basis and the candidates together.
In both cases the run returns basisUsable: false with the reason, the ratio and the input that fixes it — and is not charged.
What the guards cannot fix is printed, not hidden
Every summary carries a limitations array. It will tell you, in the run's own numbers:
totalFoundsaturates at 960. Vinted stops counting and paging at 10 pages of 96 (page 11 is an HTTP 400).nike air maxreports 960 and so doeschanel, whileleica m6reports 218. 960 is a ceiling, not a count —totalFoundCapped: truemeans the real supply is unknown and larger, and your sample is the first pages by relevance rather than a random draw.- Promoted listings are excluded, and how many. Measured over all 880 distinct
nike air maxlistings on vinted.fr: promoted median EUR 40 (n=281) against organic median EUR 20 (n=599) — and 66% of the first three relevance pages were promoted, against 32% over all ten. Sampling paid placements into the basis lifts the median and manufactures discounts out of nothing, so they are dropped from both sides and counted inexcluded.promoted. The sampler pages deeper to make the shortfall up. - Duplicates, malformed rows and priceless rows, each counted separately in
excluded. A filter whose count you cannot see makes the remainder look like the whole. - A price band you send cuts the basis off, so listings sitting on the floor of the band read as the cheapest thing in the search.
- A keyword is not a product.
sampleMixshows the brands and conditions the cutoff was actually built on.
Output
One deal_summary per search term — the basis (price with the median, the middle 50% and the 10–90% range, plus totalItemPrice), the guards and their verdict, the sample and everything left out of it, the cutoff, the deal count, the demand figures behind the ranking, bestDeal (most wanted) and cheapestDeal (lowest price — deliberately a different field). Deals are on by default: one deal row per listing at or under the cutoff, ranked by demand.
One deal row, measured on 2026-08-10 (real run) — nike air max on vinted.fr with priceMin: 30, basis median EUR 45.00, cutoff EUR 34.00, 41 deals:
{"type": "deal","keyword": "nike air max","domain": "vinted.fr","id": 9610906687,"title": "Nike air max","price": 30.0,"totalItemPrice": 32.2,"buyerProtectionFee": 2.2,"currency": "EUR","brand": "Nike","size": "37.5","condition": "Bon état","favouriteCount": 74,"favouritePercentile": 99.5,"pricePercentile": 0.0,"dealCutoffPrice": 34.0,"basisMedianPrice": 45.0,"discountVsMedianPct": 33.3,"pctOfBasisMedian": 66.7,"priceBasis": "asking","discountBasis": "asking-price distribution of this search itself — Vinted publishes no sold data, so this is 'cheap relative to what else is being asked right now', not 'cheap relative to what things sell for'","url": "https://www.vinted.fr/items/9610906687-nike-air-max","thumbnail": "https://images1.vinted.net/t/02_0068a_8k69BKYNwukq5bQEzoJExTwF/f800/1786222433.jpeg?s=d8df60649949e5fb97a74c7b0a62b015485a2e5f","priceUsd": 34.64,"totalItemPriceUsd": 37.19,"demandRank": 1}
Country sites: vinted.com (USD), .fr .de .es .it .nl (EUR), .co.uk (GBP), .pl (PLN). The domain decides both the market and the currency, so a basis is never built across countries. USD figures are added alongside the native currency.
Pricing
$0.02 per search term, plus $0.002 per deal returned (deals are on by default; turn "Include individual deals" off for the summary only). A search with an unusable basis is never charged. You pay per search term, not per month.
Read-only public catalog data over HTTP/JSON — no login, no browser, throttled to one page per 1.5 s. No seller name, id or profile link appears in any row. Nothing is stored between runs.
If something goes wrong
- Wrong number or a failed run? Open a ticket on the Issues tab. I read every one and reply within 2 business days (Japan time).
- You never get a fake "empty" result. If the site can't be read, the run fails and says so.
- A keyword that can't be measured = no charge. Too few or too mixed listings and the keyword costs nothing. A keyword that could be measured costs $0.02 even when nothing is underpriced right now — that is the answer you asked for.
- Checked every week. An automatic test runs this tool weekly; if the site changes, I fix it.
- Public pages only. No login, no personal data, and it goes easy on the site.
More tools by the same author
- Vinted Prices by Country — Cheapest vs Priciest Site
- Vinted Listings — One Row per Item, $0.0008 Each
- Vinted Asking Prices — Median, Range & Favourites
- AutoScout24 Listings — One Row per Car, $0.0006 Each
- AutoScout24 Used Car Prices by Model — Median & Range
- AutoScout24 Underpriced Cars — Discount vs Model Median
All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): https://apify.com/jpmarketdata
Disclaimer
Unofficial, independent tool — not affiliated with, endorsed by, or sponsored by Vinted. Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.