API

Vinted API: ogłoszenia, ceny i sprzedający z vinted.pl w JSON

Publicznego API do przeglądania ogłoszeń Vinted nie ma. Tytuł, marka, rozmiar, stan, cena w PLN i zdjęcia — wszystko, co na vinted.pl widzi każdy odwiedzający — przychodzą tu jako JSON, bez zakładania konta. Sprzedawcy Vinted Pro, którzy chcą wystawiać oferty i obsługiwać zamówienia, muszą szukać gdzie indziej: tu czyta się wyłącznie publiczne ogłoszenia i profile.

Endpointy

endpointCo zwracaWymagane
catalog_searchWyszukiwanie po frazie i filtrach: marka, kategoria, rozmiar, stan, kolor, materiał, przedział ceny. Cztery sortowania z serwisu, do 96 ogłoszeń na stronę.wszystkie opcjonalne
item_detailJedno ogłoszenie po id albo adresie: opis, wszystkie zdjęcia, kategoria, kolor, materiał, dostępność oraz informacja, czy przedmiot jest zarezerwowany.wszystkie opcjonalne
sellerProfil sprzedającego: ocena, liczba przedmiotów i rozkład opinii.id
seller_itemsSzafa sprzedającego, czyli jego aktualnie wystawione przedmioty.id
seller_feedbackOpinie wystawione sprzedającemu: treść, ocena, autor.id
similarPrzedmioty podobne do wskazanego ogłoszenia.id
brand_searchZamienia nazwę marki na brand_id potrzebny w filtrze wyszukiwania, z liczbą ogłoszeń.wszystkie opcjonalne
autocompletePodpowiedzi z pola wyszukiwania, po polsku dla tld=pl.query
catalog_filtersDostępne filtry i ich id dla danej frazy lub kategorii.wszystkie opcjonalne
categoriesPełne drzewo kategorii vinted.pl z id i adresami.wszystkie opcjonalne
sizesGrupy rozmiarów i id rozmiarów do filtra size_ids.wszystkie opcjonalne
conditionsSłownik stanów przedmiotu (status_ids).wszystkie opcjonalne
colorsSłownik kolorów z id i kodem hex.wszystkie opcjonalne
countriesKraje Vinted z kodem ISO i walutą.wszystkie opcjonalne

Każde wywołanie jest rozliczane w kredytach. Nieudane i zablokowane wywołania są darmowe.

Działający przykład

Bez tld=pl silnik pyta vinted.fr i zwraca ceny w euro. Druga rzecz: price to cena z ogłoszenia, a total_item_price to kwota z doliczoną opłatą za Ochronę Kupujących (service_fee). Przy porównywaniu cen trzymaj się jednego z tych pól.

Żądanie
curl -X POST https://api.reefapi.com/vinted/v1/catalog_search \
  -H "x-api-key: TWOJ_KLUCZ" \
  -H "content-type: application/json" \
  -d '{"query": "kurtka zimowa", "tld": "pl", "per_page": 20, "order": "newest_first"}'
Odpowiedź (skrócona)
{
  "ok": true,
  "data": {
    "items": [
      {
        "id": 10503705370,
        "title": "Kurtka puchowa pikowana Didriksons Nanne XL 42 czarna ocieplana",
        "url": "/items/10503705370-kurtka-puchowa-pikowana-didriksons-nanne-xl-42-czarna-ocieplana",
        "price": { "amount": 189.0, "currency": "PLN" },
        "total_item_price": { "amount": 201.35, "currency": "PLN" },
        "service_fee": { "amount": 12.35, "currency": "PLN" },
        "brand": "Didriksons",
        "size": "XL",
        "condition": "Nowy bez metki",
        "seller": { "id": 241409731, "business": false }
      },
      ...
    ],
    "pagination": { "current_page": 1, "per_page": 20, "total_entries": 960, "total_pages": 48 },
    "tld": "pl"
  },
  "meta": { "record_count": 20, "cache_hit": false, "mode": "live" }
}

Scraper Vinted: co się psuje po kilku tygodniach

Vinted przebudowuje stronę i nie uprzedza o tym nikogo z zewnątrz. Jesienią 2026 adres, z którego korzystała wyszukiwarka, zniknął dwa razy: we wrześniu i w październiku. Za pierwszym razem także u nas przez dzień każde wyszukiwanie kończyło się błędem — dokładnie tak wygląda awaria każdego skryptu z GitHuba, który opiera się na starym adresie.

Za drugim razem przenieśliśmy wyszukiwanie na źródło, z którego korzysta sama strona, tego samego dnia i bez zmiany pól w odpowiedzi. Pola, których nowe źródło już nie publikuje, wracają jako null i są wypisane w meta.warnings, a nie znikają bez śladu.

Jednorazowy eksport ogłoszeń zrobisz taniej własnym skryptem. Jeśli codziennie śledzisz ceny albo nowe ogłoszenia, najwięcej kosztuje cię nadążanie za takimi przebudowami po stronie Vinted.

Ograniczenia i uczciwe uwagi

  • To nie jest oficjalne API Vinted i nie mamy z Vinted partnerstwa.
  • Na jedną kombinację filtrów przypada najwyżej ok. 960 wyników (total_entries zatrzymuje się na 960). Żeby zejść głębiej, zawęź filtry, np. markę lub przedział ceny.
  • Wyszukiwanie na vinted.pl obejmuje też ogłoszenia z innych krajów: w naszej próbie 5 z 20 miało cenę przeliczoną z innej waluty (np. 66,28 zł), a tytuły m.in. po rumuńsku i węgiersku.
  • Wiersz wyszukiwania nie ma daty dodania, liczby wyświetleń, loginu sprzedającego ani statusu rezerwacji — te pola przychodzą jako null i są wymienione w meta.warnings.
  • W item_detail na vinted.pl atrybut rozmiaru bywa odczytany błędnie (w naszym teście wartość „Stan”), stan przedmiotu przychodzi jako NewCondition zamiast polskiej etykiety, a pole url jako null. Rozmiar, stan i adres bierz z wiersza catalog_search.
  • Bez cache'u: każde wywołanie pobiera dane z Vinted od nowa.