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
| endpoint | Co zwraca | Wymagane |
|---|---|---|
| catalog_search | Wyszukiwanie 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_detail | Jedno ogłoszenie po id albo adresie: opis, wszystkie zdjęcia, kategoria, kolor, materiał, dostępność oraz informacja, czy przedmiot jest zarezerwowany. | wszystkie opcjonalne |
| seller | Profil sprzedającego: ocena, liczba przedmiotów i rozkład opinii. | id |
| seller_items | Szafa sprzedającego, czyli jego aktualnie wystawione przedmioty. | id |
| seller_feedback | Opinie wystawione sprzedającemu: treść, ocena, autor. | id |
| similar | Przedmioty podobne do wskazanego ogłoszenia. | id |
| brand_search | Zamienia nazwę marki na brand_id potrzebny w filtrze wyszukiwania, z liczbą ogłoszeń. | wszystkie opcjonalne |
| autocomplete | Podpowiedzi z pola wyszukiwania, po polsku dla tld=pl. | query |
| catalog_filters | Dostępne filtry i ich id dla danej frazy lub kategorii. | wszystkie opcjonalne |
| categories | Pełne drzewo kategorii vinted.pl z id i adresami. | wszystkie opcjonalne |
| sizes | Grupy rozmiarów i id rozmiarów do filtra size_ids. | wszystkie opcjonalne |
| conditions | Słownik stanów przedmiotu (status_ids). | wszystkie opcjonalne |
| colors | Słownik kolorów z id i kodem hex. | wszystkie opcjonalne |
| countries | Kraje 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.
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"}'{
"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.