Skip to content

Releases: MolnarMario/vinted-country-flags

v2.2.0: back on the grid

Choose a tag to compare

@MolnarMario MolnarMario released this 09 Oct 11:53
a5c872b

Shows the seller's country flag in the corner of every Vinted listing. Vinted never tells a buyer where a seller is, anywhere on the site.

Download vinted-country-flags-2.2.0.zip below, unpack it somewhere you will keep it, then in Chrome go to chrome://extensions, turn on Developer mode, click "Load unpacked" and pick the unpacked folder. If you already run 2.1.0, load the new folder and remove the old one.

What is fixed

Vinted changed what it serves on 2026-10-08, and 2.1.0 broke in three ways. Flags stopped on the catalog, the item-page lookup could name the visitor instead of the seller, and cards that hit a rate limit or scrolled past were never retried.

Grids past the first screenful now read the seller from the response the page already fetches for itself, on the homepage and on the catalog. The catalog endpoint 404s now, and asking for the grid again returns a different shuffle, so reading the page's own response is the only path that matches the cards on screen.

Rate limiting is tighter. The extension leaves a share of Vinted's bucket for the site's own calls, backs off when Vinted answers with a "Client Challenge" page instead of data, and frees a slot as soon as a card scrolls away.

Cards that cannot be read from their price fall back to a profile lookup, and a lookup that gets cancelled no longer leaves a second card blank.

The cache is cleared on upgrade. Some entries written by the old item-page lookup may have named the visitor, so they are dropped rather than trusted.

Testing

50 unit tests pass, up from 49 at 2.1.0. Parsers were checked against live vinted.ro pages: 96 of 96 cards named from the document, and 96 of 96 from the page-2 response.

GPL-3.0. Not affiliated with Vinted.

v2.1.0 — the homepage

Choose a tag to compare

@MolnarMario MolnarMario released this 31 Aug 23:10
645c19b

Shows the seller's country flag in the corner of every Vinted listing. Vinted never tells a buyer where a seller is, anywhere on the site.

Download vinted-country-flags-2.1.0.zip below, unpack it somewhere you will keep it, then in Chrome go to chrome://extensions, turn on Developer mode, click "Load unpacked" and pick the unpacked folder.

What is new

The homepage gets flags. It never did, which is a gap where most visits start.

Two things were in the way. Catalog cards are numbered product-item-id-<id>--image, but every homepage card shares one testid, feed-item--image, and carries its item id only in the link over the photo, so the selector matched nothing. And nothing could have answered those cards anyway: /api/v2/catalog/items does not return the homepage feed at all, 0 of 20 overlapped on vinted.ro, and the endpoint that does serve it answers 400 to the same query replayed by anyone but Vinted's own front end.

The homepage does name every seller, though, twice over and for free. The first screenful is server rendered and the payload the page hydrates from is still sitting in the document with "user":{"id":...} on every item. Everything after it arrives on the request the page fires when the feed paginates, where the same fact is spelled user_id, and the extension reads that answer as it goes past rather than asking for its own. Together they named the seller of 70 of 70 cards on vinted.ro, 20 from the document and 50 from one pagination response, for no request at all.

Knowing the seller is not knowing the country, and 70 known sellers is 70 lookups at one a second. So the homepage spends two catalog requests it will never match a card with, purely to learn exchange rates, and then reads the country off the price like any other card. Two rather than one because the fingerprint refuses to answer until it knows the euro rate, and a single draw carried two euro sellers, one short of the three it takes to trust a rate. That answered 66 of the 70 cards, agreeing with the sellers' actual profiles on all 13 spot-checked, and left five lookups instead of seventy.

Euro markets skip those two requests. The fingerprint cannot work where every seller prices in euro, so the homepage there falls back to a lookup per card, same as its catalog pages.

None of it is per-domain. Checked on the vinted.ro, vinted.de and vinted.fr homepages: same card markup, same payload shape, every card mapped to a seller.

49 unit tests, five of them new. GPL-3.0. Not affiliated with Vinted.

v2.0.0 — every Vinted market

Choose a tag to compare

@MolnarMario MolnarMario released this 31 Aug 17:31

Shows the seller's country flag in the corner of every Vinted listing. Vinted never tells a buyer where a seller is, anywhere on the site.

Download vinted-country-flags-2.0.0.zip below, unpack it somewhere you will keep it, then in Chrome go to chrome://extensions, turn on Developer mode, click "Load unpacked" and pick the unpacked folder.

What is new

All 27 Vinted markets, up from vinted.ro only.

The country rule is no longer hardcoded. The market table is read from /api/v2/countries at runtime, so a currency that stops pinning a country stops pinning it on its own, and a new market appears without a release. That also dropped five dead currency rows and picked up Australia.

The rate limit is measured rather than guessed. From a cold bucket exactly 30 requests to /api/v2/users succeed and the 31st gets a 429; paced at one per second, 45 in a row draw nothing. So it is a token bucket of 30 refilling at about 1/s, shared per IP across domains. That bucket now lives in a service worker, so every tab and every Vinted domain spends one budget instead of one each. Pushback honours the Retry-After the response carries.

The cache moved to the worker too. A seller resolved on vinted.fr is already known on vinted.de, because seller ids are global across markets.

Fixes

/api/v2/users/{id} returns country_code: "UK" for Britain, which is not an ISO country and resolved to no flag. It now joins country_id against Vinted's own table, which also sidesteps Greece reporting as EL.

The price fingerprint's guard was one unit of buyer currency. That is a real guard in lei and none at all in forints, where every price clears a one-forint grid. It is anchored to about 0.20 EUR now and refuses to run until it knows the rate that converts it.

Prices parse in every market's number format, taken from the page language rather than assumed.

Euro markets are slower, on purpose

Eighteen of the 27 price in euro. Every seller there prices in the currency you see, so the free signal says nothing: 0 of 259 items sampled on vinted.fr carried the conversion data the other markets give away. Each card costs one seller lookup, so the grid fills in over about 90 seconds rather than appearing at once, viewport first, and the popup tells you how many are left. Roughly a fifth of those sellers turn out to be foreign, which is why it is worth the wait.

252 flags, covering every ISO country, since a seller can live somewhere Vinted does not operate.

44 unit tests. GPL-3.0. Not affiliated with Vinted.