Vinted Prices by Country — Cheapest vs Priciest Site avatar

Vinted Prices by Country — Cheapest vs Priciest Site

Pricing

from $20.00 / 1,000 cross-country price gaps

Go to Apify Store
Vinted Prices by Country — Cheapest vs Priciest Site

Vinted Prices by Country — Cheapest vs Priciest Site

Type a keyword and get its asking price on up to 8 Vinted country sites in USD. Returns each country's median from ~96 listings, the cheapest and priciest, the gap %, and a buy-here/sell-there margin before shipping and duty. $0.02 per keyword, charged only when two countries answer. Unofficial.

Pricing

from $20.00 / 1,000 cross-country price gaps

Rating

0.0

(0)

Developer

h ichi

h ichi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What it does: Prices a keyword on up to 8 Vinted country sites (US, UK, DE, FR, ES, IT, NL, PL), converts every median to USD, and shows where it is cheapest and priciest.

You enter: Keywords, e.g. nike air max 90, and the countries to compare (default: com, de, co.uk, pl).

You get: One row per keyword: median asking price per country (local and USD) from ~96 listings each, cheapest and priciest country, gap %, which countries share the same listings, and a buy-here/sell-there margin that counts the buyer fee but not shipping or duty.

Price: $0.02 per keyword, however many countries, and every keyword in your list is charged. +$0.002 per listing if you also want the listings themselves (off by default). Charged only when at least two countries return a usable median (or the single country, if that is all you picked).

Example: enter nike air max 90 (com, de, co.uk, pl) → cheapest GB $43.56 · priciest DE $80.67 · gap 85.2% · buy in GB for $46.69 with fee, sell in DE at $80.67 = 72.8% before shipping and duty (real run, 2026-08-07)

Unofficial — not affiliated with Vinted. Reads public pages only.

Why a Vinted "price gap" is often not a gap at all

The eight marketplaces are not eight inventories. Measured on 2026-08-07 with leica m6 across all eight: the five euro sites served 58–87% literally the same listing ids — same item, same price, same currency, five hostnames — while .com, .co.uk and .pl overlapped everything by 0.0%.

US FR DE GB ES IT NL PL
FR 0% - 62% 0% 64% 78% 78% 0%
IT 0% 78% 71% 0% 71% - 81% 0%

So a "price gap" between France and Italy is mostly one pool sampled twice. You cannot buy an item in Italy and sell it in France when it is the same listing. This Actor therefore:

  1. measures the overlap from the sampled listing ids and groups the countries into inventoryOverlap.inventoryPools;
  2. still ranks every country by price, because "where is it listed lowest" is a real question;
  3. computes gap.arbitrage only across different pools — and says available: false when every selected country turns out to be one pool.

Measured example of the trap (levis 501 vintage, 8 countries): cheapest ES $38.59 → priciest DE $44.97 looks like a 16.5% opportunity. ES and DE cross-list one inventory, so it is worth nothing. The honest cross-pool deal that run was buy US $42.70 → sell DE $44.97 = 5.3%.

The other three numbers that keep it honest

  • Buyer Protection is priced in. The buyer pays asking + fee, and the fee is not the same everywhere — measured on 2026-08-07 (nike air max 90): GB 7.22% · PL 6.53% · US 6.08% · DE 6.00%. gap.arbitrage.buyCostUsd is the buyer's real total, and excludes lists what is still missing (shipping, duty, seller fees, FX spread).
  • totalFoundCapped. Vinted stops counting at 960 hits (10 pages × 96). A totalFound of 960 is a ceiling, not supply, and says so instead of pretending to be a market size.
  • thinSample. A country with fewer than minSampleSize priced listings is reported in full but is excluded from the cheapest/priciest selection. A median over four listings is not an arbitrage case.

Pricing — $0.02 per keyword

EventPriceWhen
Keyword analyzed across countries$0.02Per keyword, whatever the number of countries
Individual listing$0.002Only if you enable Include individual listings

You pay per keyword, not per month. A default run (1 keyword, 4 countries, summary only) costs $0.02 and took 8 seconds measured. All 8 countries cost the same $0.02.

A keyword is only charged when at least two countries returned a usable median (or the single one, if you selected only one). A "cross-country" record with one country in it is not a comparison, so it is free.

Input

FieldExampleNotes
keywords["nike air max 90"]Narrow keywords give a real gap; broad ones compare product mixes. $0.02 each
countries["com","de","co.uk","pl"]Default = one market per currency, which is also the four pools that measurably do not cross-list. Add fr/es/it/nl for the full euro picture
maxItemsPerCountry9630–288. 96 = one result page and is usually enough
minSampleSize10Below this a country is flagged thinSample and cannot be cheapest/priciest. 0 disables the gate
priceMinUsd / priceMaxUsd30Optional window in USD, applied after conversion, identically in every country
includeIndividualItemsfalseEnable to also get every sampled listing, +$0.002 each

Output example (type: "cross_country_price_gap", abridged)

Measured on 2026-08-07 (real run):

{
"type": "cross_country_price_gap",
"keyword": "nike air max 90",
"priceBasis": "asking",
"quoteCurrency": "USD",
"countriesRequested": ["US", "DE", "GB", "PL"],
"countriesWithData": ["US", "DE", "GB", "PL"],
"countries": {
"co.uk": {
"domain": "vinted.co.uk", "country": "GB", "currency": "GBP",
"available": true,
"totalFound": 960, "totalFoundCapped": true,
"sampleSize": 96, "pricedListings": 96, "thinSample": false,
"listingPrice": {"min": 6.0, "p25": 20.0, "median": 32.37, "p75": 68.5, "max": 180.0, "average": 49.01},
"buyerTotalPrice": {"median": 34.69},
"buyerProtectionFeePctMedian": 7.22,
"exchangeRateToUsd": 1.345818,
"listingPriceUsd": {"median": 43.56},
"buyerTotalPriceUsd": {"median": 46.69},
"signals": {"favouriteCount": {"median": 11},
"topBrands": [{"brand": "Nike Air", "listings": 59, "sharePct": 61.5}],
"conditionBreakdown": {"Very good": 58, "Good": 15, "New with tags": 13}},
"sourceUrl": "https://www.vinted.co.uk/catalog?search_text=nike+air+max+90"
},
"de": {"country": "DE", "currency": "EUR", "listingPrice": {"median": 69.97},
"listingPriceUsd": {"median": 80.67}, "buyerProtectionFeePctMedian": 6.0},
"com": {"country": "US", "listingPriceUsd": {"median": 65.0}},
"pl": {"country": "PL", "currency": "PLN", "listingPrice": {"median": 189.5},
"listingPriceUsd": {"median": 50.81}}
},
"inventoryOverlap": {
"thresholdPct": 20.0, "sampledPairs": 6, "maxOverlapPct": 0.0,
"independentMarkets": 4,
"inventoryPools": [["US"], ["DE"], ["GB"], ["PL"]],
"pairs": [{"countries": ["US","DE"], "sharedListings": 0, "overlapPct": 0.0, "sharedInventory": false}],
"note": "Every compared country serves its own inventory …"
},
"gap": {
"quoteCurrency": "USD",
"ranking": [
{"country": "GB", "medianListingPriceUsd": 43.56, "medianBuyerTotalUsd": 46.69, "medianListingPriceNative": 32.37, "pricedListings": 96, "totalFound": 960, "totalFoundCapped": true, "thinSample": false, "vsCheapestPct": 0.0},
{"country": "PL", "medianListingPriceUsd": 50.81, "vsCheapestPct": 16.6},
{"country": "US", "medianListingPriceUsd": 65.0, "vsCheapestPct": 49.2},
{"country": "DE", "medianListingPriceUsd": 80.67, "vsCheapestPct": 85.2}
],
"comparable": true,
"cheapestCountry": "GB", "cheapestMedianUsd": 43.56,
"priciestCountry": "DE", "priciestMedianUsd": 80.67,
"gapUsd": 37.11, "gapPct": 85.2,
"cheapestAndPriciestShareInventory": false,
"arbitrage": {
"available": true, "crossPool": true,
"buyCountry": "GB", "buyCostUsd": 46.69, "buyCostIncludesBuyerProtection": true,
"sellCountry": "DE", "sellProceedsUsd": 80.67,
"grossMarginUsd": 33.98, "grossMarginPct": 72.8,
"excludes": ["cross-border shipping", "customs duty and import VAT",
"the destination marketplace's seller fees", "FX spread on the actual transfer"]
},
"note": "Both sides are asking prices, not sold prices …"
},
"mixDiagnostics": {
"topBrandByCountry": {"US": "Nike", "DE": "Nike Air", "GB": "Nike Air", "PL": "Nike Air"},
"topBrandSharePct": {"US": 52.1, "DE": 68.8, "GB": 61.5, "PL": 67.7},
"sameTopBrandEverywhere": false, "itemLevelMatching": false,
"note": "The countries did not sample the same product mix …"
},
"checkedAt": "2026-08-07T06:57:13+00:00"
}

With includeIndividualItems: true you additionally get one record per listing (type: "listing"), each tagged with country, domain and priceBasis, carrying both listingPrice and buyerTotalPrice in native currency and USD.

Use cases

  • Cross-border sourcinggap.arbitrage is the only line that pairs two genuinely separate inventories, with the buyer's fee already inside the buy cost
  • Deciding which country to list inranking plus totalFound is price against the supply you would compete with
  • Repricing — schedule the Actor and watch a country's median move; signals.favouriteCount is the demand heat
  • Market research — how much cheaper is Poland than Germany for a category, and is the euro zone one market or five
  • Reality-checking a supplier's "EU arbitrage" pitchinventoryOverlap answers it in one field

Notes & limits

  • Asking prices only. Vinted does not serve sold listings. A high median means sellers ask more there, not that buyers pay it
  • A broad keyword compares product mixes, not countries. mixDiagnostics is the tell — check topBrandByCountry and topBrandSharePct before believing a large gapPct, and narrow the keyword or set priceMinUsd/priceMaxUsd
  • Vinted's own brand labels differ per market (Nike on .com vs Nike Air on .de for the same shoe), so sameTopBrandEverywhere is conservative — a false is a prompt to look, not a verdict
  • totalFound saturates at 960. Above that the field is a ceiling; totalFoundCapped tells you which it is
  • Condition labels are localized (Very good / Sehr gut / Bardzo dobry) and are deliberately not translated into a shared scale — that would be a claim this Actor cannot back
  • The price window is USD. A bound in native currency would mean EUR 20 in Germany and PLN 20 in Poland; totalFound is never rewritten by it
  • Exchange rates come from open.er-api.com, once per currency per run. A country whose rate is unavailable is reported with fxUnavailable: true and excluded from the gap rather than converted at 1.0
  • A country that fails does not fail the run: it comes back as available: false with an error, and the rest are still compared. The run fails only when no country could be read at all
  • A keyword no country stocks is not a failure: every site answered, each block shows sampleSize: 0, the gap is reported as comparable: false, the run finishes green and nothing is charged
  • Read-only public catalog data, no login, no browser. Each country opens its own proxy session (random per run, rotated up to 4×) and pages are throttled to one per 1.5 s
  • No seller personal data is collected

日本語: Vinted 8カ国の同一キーワード相場を比較し、USD 換算の中央値ランキング・国別サンプル数・価格差(%)、および「実際に取引できる国の組み合わせだけ」で計算した裁定利ざやを返します(ユーロ圏5サイトは同一在庫を共有しているため自動判定して除外します)。料金はキーワード1件ごとの従量課金です。

中文: 比较 Vinted 八国同一关键词的行情,返回按美元折算的中位价排名、各国样本量与价差百分比,以及仅在真正独立库存之间计算的套利空间(欧元区五站共享同一库存,会被自动识别并排除)。按关键词计费。

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.
  • No results = no charge. You only pay for results you actually get.
  • 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

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.