API

Vinted API: begagnade kläder på vinted.se med pris i kronor, storlek och skick

Vinted har inget öppet gränssnitt för att hämta katalogen med kod. Det här API:et läser vinted.se så som sidan ser ut för en besökare som inte är inloggad och svarar i JSON: titel, märke, storlek, skick med Vinteds svenska ord (”Mycket bra”, ”Ny utan prislapp”), bilder och pris. Varje pris kommer i tre delar: det säljaren begär, avgiften för köparskyddet och summan av de två. Frakt ingår i ingen av dem. Den som vill förstå hur priserna på Vinted sätts, eller jämföra dem med Blocket och Tradera, har alltså alla tal i separata fält. Säljare som vill lägga upp annonser eller hantera ordrar, till exempel via Vinted Pro, får ingen hjälp här: API:et skriver ingenting till Vinted och använder inga konton. Skicka `"tld": "se"` med varje anrop, annars svarar vinted.fr.

Endpoints

endpointVad som kommer tillbakaObligatoriska
catalog_searchSökning på ord och/eller filter: kategori, storlek, färg, märke och prisintervall. Fyra sorteringar (nyast först, relevans, pris stigande och fallande), upp till 96 annonser per sida. Varje rad har `price`, `service_fee` och `total_item_price` som egna fält i SEK, samt märke, storlek och skick med de svenska beteckningarna från sajten.alla valfria
item_detailEn annons via id eller URL: beskrivning, bilder i full storlek, kategori (till exempel ”Dam Ryggsäckar”), färg, material, om annonsen är reserverad och om den går att köpa direkt (`can_buy`, `instant_buy`).alla valfria
sellerEn medlems publika profil: betyg, antal omdömen fördelat på positiva, neutrala och negativa, och antal annonser.id
seller_itemsEn medlems garderob: annonserna med uppladdningstid, antal favoriter och visningar samt statusfälten reserverad, såld och dold.id
seller_feedbackOmdömen som medlemmen har fått, sida för sida: text, stjärnor och tidpunkt.id
categoriesKategoriträdet på vinted.se med svenska namn (Dam › Kläder › Kappor & jackor …) och de id:n som `catalog_ids` tar emot.alla valfria
sizesStorleksgrupperna med id:n för `size_ids`, skrivna som på sajten (”S / 36 / 8”, ”5 år / 110 cm”).alla valfria
colorsFärgerna med id, svenskt namn (Svart, Grå, Crèmefärgad …) och hexkod, för `color_ids`.alla valfria
countriesLänderna som Vinted finns i, med ISO-kod och valuta.alla valfria

Varje anrop debiteras i krediter. Misslyckade och blockerade anrop är gratis.

Fungerande exempel

Köparskyddet var 7,50 kr plus 5 % av priset på alla 80 annonser vi hämtade den 27 oktober: 14,50 kr på den rosa Kånken för 140 kr, 30 kr på en för 450 kr. Lägg också märke till de två andra raderna. Sökningen på vinted.se visar annonser från andra länder, omräknade till kronor: ryggsäcken med polsk titel kostar 217,21 kr, den med dansk titel 188,17 kr. Av 40 träffar på ”kånken” hade 17 ett pris med ören, och bland de 20 nyaste vinterjackorna var det 17. Vill du bara räkna på svenska annonser får du sortera bort dem själv; ett filter för säljarens land finns inte.

Förfrågan
curl -X POST https://api.reefapi.com/vinted/v1/catalog_search \
  -H "x-api-key: DIN_API_NYCKEL" \
  -H "content-type: application/json" \
  -d '{"query": "kånken", "tld": "se", "per_page": 40, "order": "relevance"}'
Svar (förkortat)
{
  "ok": true,
  "data": {
    "items": [
      {
        "id": 10553801695,
        "title": "Rosa Kånken",
        "url": "/items/10553801695-rosa-kanken",
        "price": { "amount": 140.0, "currency": "SEK" },
        "total_item_price": { "amount": 154.5, "currency": "SEK" },
        "service_fee": { "amount": 14.5, "currency": "SEK" },
        "brand": "Fjällräven",
        "size": null,
        "condition": "Mycket bra",
        "favourite_count": 9,
        "uploaded_ts": null,
        ...
      },
      ...
      {
        "id": 10548195164,
        "title": "Fjällräven rygsæk til børn",
        "price": { "amount": 188.17, "currency": "SEK" },
        "total_item_price": { "amount": 205.08, "currency": "SEK" },
        "service_fee": { "amount": 16.91, "currency": "SEK" },
        "brand": "Fjällräven",
        "condition": "Mycket bra",
        ...
      },
      ...
      {
        "id": 10542062330,
        "title": "Plecak Fjallraven Kanken",
        "price": { "amount": 217.21, "currency": "SEK" },
        "total_item_price": { "amount": 235.57, "currency": "SEK" },
        "service_fee": { "amount": 18.36, "currency": "SEK" },
        "brand": "Fjällräven",
        "condition": "Mycket bra",
        ...
      },
      ...
    ],
    "pagination": { "current_page": 1, "per_page": 40, "total_entries": 960, "total_pages": 24 },
    "tld": "se"
  },
  "meta": {
    "record_count": 40,
    "tld": "se",
    "total_entries": 960,
    "window_cap": 960,
    "warnings": ["source_fields_unavailable: uploaded_ts, seller.login, seller.profile_url, is_visible, stats_visible, view_count, is_reserved, ..."],
    "charged_credits": 2,
    "cache_hit": false,
    "mode": "live"
  }
}

Vinted-scraper i Python: när en sökning utan träffar ändå ger 96 annonser

Vinted fyller en sökning utan träffar med andra annonser. När vi testade en påhittad fras svarade sajten med 123 i totalantal och 96 annonser som inte hade något med frågan att göra. Ett skript som räknar rader tror alltså att det hittade något. Det omvända hände oss själva den 9 oktober 2026: efter att Vinted hade tagit bort adressen som motorn hämtade sökresultaten från, flyttade vi `catalog_search` till katalogsidan, och den första versionen gjorde en äkta nollträff till ett fel. En kunds verkliga sökning, som Vinted själv redovisade med 0 träffar, fick UPSTREAM_HTTP. Rättelsen gick ut tolv minuter senare. Sedan dess avgör Vinteds egen siffra: totalt 0 betyder tom lista, ett totalantal utan rader betyder att något gick fel.

Märke, storlek och skick står i samma textrader på annonskortet och är lätta att blanda ihop. Sedan september 2026 kontrolleras de därför mot kortets egen beskrivning för skärmläsare, med en jämförelse som inte är beroende av språket, och ett värde lämnas bara ut när beskrivningen bekräftar det.

Det tredje är priserna. På vinted.se blandas svenska annonser med utländska vars pris är omräknat till kronor, och avgiften för köparskyddet räknas på det omräknade priset. Den som sparar `price` som om alla annonser vore svenska får ett snitt som delvis speglar andra marknader.

Själva skriptet skriver man på en eftermiddag. Det som kostar är veckorna då det fortsätter att köra och räknar in jackor med polska titlar eller utfyllnadsannonser för en sökning som egentligen inte gav någonting.

Gränser och ärliga noteringar

  • Vinted driver inte det här API:et och har inte gett något tillstånd till det; något partnerskap med Vinted finns inte.
  • Standardvärdet för `tld` är `fr`. Utan `"tld": "se"` kommer svaren från vinted.fr med priser i euro.
  • Fem endpoints fungerar inte just nu och står därför inte i tabellen ovan. Uppmätt den 27 oktober 2026 på vinted.se, två eller tre försök vardera: `autocomplete` och `conditions` gav UPSTREAM_HTTP, `catalog_filters` NOT_FOUND och `similar` TARGET_BLOCKED (”Åtkomst nekad”); de misslyckade anropen kostade 0 krediter. `brand_search` svarar, men bryr sig inte om sökordet: ”fjällräven”, ”acne studios” och ”hope” gav samma 12 märken (adidas, Calvin Klein, GUESS, H&M …), och varje sådant anrop debiterades 1 kredit.
  • Därför går det inte att slå upp märkes-, skicks- eller material-id:n just nu. `brand_ids` fungerar med id:n man redan har: 7 (H&M) gav 20 av 20 H&M-annonser. Sökraderna har inget `brand_id`, bara märkesnamnet.
  • I `item_detail` saknas storleken: `size` var tom på alla tre annonser vi hämtade, och attributet ”Storlek” innehöll ordet ”Skick” på de två som hade ett. Skick med svenska ord, och storlek när annonsen har en, tar man hellre från sökraden. `item_detail` anger skicket bara i schema.org-form (`UsedCondition`), `url` är null och säljarsammanfattningen var tom alla tre gångerna; säljarens uppgifter hämtas med `seller`.
  • Vinted lämnar högst 960 träffar per filterkombination (`total_entries` stannar på 960, både för ”kånken” och ”vinterjacka”). Behöver du fler, dela upp sökningen på kategori, storlek eller prisintervall.
  • Sökningen tar med utländska annonser med omräknade priser (se exemplet), och det finns inget filter för säljarens land.
  • Fraktkostnaden finns inte i något svar. `total_item_price` innehåller bara köparskyddsavgiften.
  • I sökraderna är uppladdningstid, visningar och statusfält (reserverad, såld, dold) null, och vilka fält det gäller listas i `meta.warnings`. Status per annons visar `seller_items`, för en enskild annons även `item_detail` (`is_reserved`, `can_buy`). I `seller_feedback` står datumet i `created_at_ts`; fältet `created_at` var tomt på alla 20 omdömen vi hämtade.
  • `catalog_search` och `item_detail` kostar 2 krediter per anrop, övriga endpoints 1. Alla anrop i vårt test hämtades direkt från vinted.se (`cache_hit: false`).