Bazowy URL: https://api.snajper.org
Każde zapytanie musi zawierać nagłówek x-api-key <API_KEY> . Klucz API znajdziesz w panelu użytkownika po zalogowaniu. Każde zapytanie
zużywa kredyty — ich liczba zależy od endpointu.
x-api-key: xxxxxxxxxxxxxxxxxxxx
Prawie każdy błąd ma dokładnie ten kształt — status HTTP oraz JSON z dwoma polami:
{
"error": "Brak wystarczających kredytów",
"err_code": "INSUFFICIENT_CREDITS"
} Jeden wyjątek: błędy walidacji ciała zapytania (kod VALIDATION_ERROR) mają dodatkowe pole fields — mapę nazwa_pola → reguła, która zawiodła:
{
"error": "validation failed",
"err_code": "VALIDATION_ERROR",
"fields": {
"URL": "required"
}
} Wiele różnych błędów wewnętrznych (błąd sieci do Vinted/OLX, zła
odpowiedź z ich API, błąd zapisu do bazy) mapuje się do tego samego
ogólnego 500 INTERNAL_ERROR — API nie rozróżnia ich publicznie w treści odpowiedzi. Podobnie, jeśli
podany URL nie przejdzie walidacji domeny/ścieżki (np. zły host albo brak
wymaganego parametru wyszukiwania), dostaniesz ogólne 400 INVALID_REQUEST bez dokładnego powodu.
/api/v2/vinted/catalogPobiera listę przedmiotów z katalogu Vinted.
Przekaż w body pełny URL strony wyszukiwania Vinted (np. skopiowany z przeglądarki). API automatycznie przetłumaczy go na zapytanie do wewnętrznego API Vinted, posortuje wyniki od najnowszych i zwróci do 20 przedmiotów na stronę. Idealny punkt startowy do budowania monitorów cenowych lub scraperów katalogu.
x-api-key nagłówek string <API_KEY> *url body string Pełny URL katalogu Vinted wraz z filtrami (np. https://www.vinted.pl/catalog?search_text=iphone+13). *curl -X POST "https://api.snajper.org/api/v2/vinted/catalog" \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.vinted.pl/catalog?search_text=iphone+13"}'{
"items": [
{
"id": 8805548600,
"title": "Iphone 13 pro",
"brand_title": "Apple",
"price": "944.88 PLN",
"status": "Bardzo dobry",
"url": "https://www.vinted.pl/items/8805548600-iphone-13-pro",
"is_promoted": false,
"favourite_count": 0,
"photo": "https://images1.vinted.net/...",
"seller_id": 3153068455,
"seller_name": "krolinjo",
"timestamp": 1777745143,
"created_at": "2026-05-02 20:05:43"
}
]
}INVALID_REQUEST Ciało zapytania jest niepoprawnym JSON-em, albo url nie przeszedł walidacji domeny (musi zawierać vinted.pl i parametr search_text) — dokładny powód nie jest zwracany w treści odpowiedzi.VALIDATION_ERROR Pole url jest puste lub nie jest poprawnym URL-em. Odpowiedź ma inny kształt niż pozostałe błędy — patrz sekcja "Format odpowiedzi błędów" wyżej.UNAUTHENTICATED Brak nagłówka x-api-key albo klucz nie istnieje w bazie.INSUFFICIENT_CREDITS Za mało kredytów na koncie (ten endpoint kosztuje 2 kredyty).INTERNAL_ERROR Cokolwiek pójdzie nie tak po stronie serwera — błąd sieci do Vinted, nieprawidłowa odpowiedź JSON z ich API, błąd odjęcia kredytów. Zawsze ten sam ogólny kod, bez rozróżnienia przyczyny./api/v2/vinted/item/:id/detailsPobiera szczegółowe informacje o konkretnym przedmiocie.
Podaj ID przedmiotu jako parametr ścieżki. ID możesz znaleźć w URL strony przedmiotu na Vinted (np. vinted.pl/items/8803132441-...). Endpoint zwraca pełne dane: zdjęcia, atrybuty, cenę z prowizją, informacje o sprzedawcy oraz status przedmiotu.
id ścieżka string ID przedmiotu z Vinted (widoczne w URL strony przedmiotu). *x-api-key nagłówek string <API_KEY> *curl -X GET "https://api.snajper.org/api/v2/vinted/item/8803132441/details" \ -H "x-api-key: <API_KEY>"
{
"id": 8803132441,
"title": "iPhone 13 Pro 128GB Sierra Blue",
"description": "Sprzedam iPhone 13 Pro w bardzo dobrym stanie, bez rys, zawsze w etui...",
"status": "Bardzo dobry",
"brand": "Apple",
"url": "https://www.vinted.pl/items/8803132441-iphone-13-pro",
"is_hidden": false,
"is_reserved": false,
"is_closed": false,
"is_draft": false,
"is_promoted": false,
"can_buy": true,
"is_favourite": false,
"instant_buy": true,
"favourite_count": 12,
"price": "577.52 PLN",
"service_fee": "31.78 PLN",
"total_price": "609.30 PLN",
"seller_id": 3153068455,
"seller_name": "krolinjo",
"seller_rating": 4.93,
"seller_rating_count": 214,
"photos": [
{
"url": "https://images1.vinted.net/t/03_00abc/f800/photo.jpg",
"full_size_url": "https://images1.vinted.net/t/03_00abc/full/photo.jpg",
"is_main": true
},
{
"url": "https://images1.vinted.net/t/03_00def/f800/photo.jpg",
"full_size_url": "https://images1.vinted.net/t/03_00def/full/photo.jpg",
"is_main": false
}
],
"attributes": [
{ "code": "color", "title": "Kolor", "value": "Niebieski" },
{ "code": "condition", "title": "Stan", "value": "Bardzo dobry" }
]
}INVALID_REQUEST Parametr id jest pusty (w praktyce trudne do wywołania przez routing, ale kod to obsługuje).UNAUTHENTICATED Brak nagłówka x-api-key albo klucz nie istnieje w bazie.INSUFFICIENT_CREDITS Za mało kredytów na koncie (ten endpoint kosztuje 1 kredyt).INTERNAL_ERROR Przedmiot nie istnieje / został usunięty, błąd sieci do Vinted, lub błąd odjęcia kredytów. Zwracany jest zawsze ten sam ogólny kod 500 — Vinted nie rozróżnia u nas "nie znaleziono" od innych błędów./api/v2/vinted/user/:id/infoPobiera publiczny profil użytkownika Vinted.
Podaj ID użytkownika jako parametr ścieżki. ID sprzedawcy znajdziesz w odpowiedzi z endpointu /catalog lub /item/:id/details (pole seller_id). Uwaga: w przeciwieństwie do /catalog i /item/:id/details, ten endpoint NIE mapuje odpowiedzi do własnego, uproszczonego formatu — zwraca surowy obiekt user prosto z wewnętrznego API Vinted, 1:1, bez filtrowania pól. Oznacza to ok. 80 pól, w tym sporo takich, które będą null (np. birthday, real_name, email — Vinted zwraca je tylko dla właściciela konta), oraz że kształt odpowiedzi może się zmienić bez zapowiedzi, jeśli Vinted zmieni swoje własne API.
id ścieżka string ID użytkownika Vinted (pole seller_id w odpowiedzi katalogu lub szczegółów przedmiotu). *x-api-key nagłówek string <API_KEY> *curl -X GET "https://api.snajper.org/api/v2/vinted/user/157416251/info" \ -H "x-api-key: <API_KEY>"
{
"user": {
"id": 157416251,
"anon_id": "6f2a1c9e-...",
"login": "geaninasava",
"birthday": null,
"country_id": 12,
"city_id": 0,
"updated_on": 1777745143,
"real_name": null,
"email": null,
"country_code": "PL",
"feedback_count": 42,
"feedback_reputation": 0.98,
"moderator": false,
"business_account_id": null,
"can_bundle": true,
"business_account": null,
"business": false,
"photo": {
"id": 55012345,
"width": 1080,
"height": 1080,
"temp_uuid": null,
"url": "https://images1.vinted.net/t/03_user/f800/photo.jpg",
"dominant_color": "#c2b8a3",
"dominant_color_opaque": "#c2b8a3",
"thumbnails": [
{ "type": "thumb70", "url": "https://images1.vinted.net/.../thumb70.jpg", "width": 70, "height": 70, "original_size": null }
],
"is_suspicious": false,
"orientation": null,
"high_resolution": { "id": "abc123", "timestamp": 1777745143, "orientation": null },
"full_size_url": "https://images1.vinted.net/t/03_user/full/photo.jpg",
"is_hidden": false,
"extra": {}
},
"can_view_profile": true,
"bundle_discount": {
"id": 9012,
"user_id": 157416251,
"enabled": true,
"minimal_item_count": 2,
"fraction": "0.1",
"discounts": [
{ "minimal_item_count": 2, "fraction": "0.1" },
{ "minimal_item_count": 4, "fraction": "0.2" }
]
},
"last_loged_on_ts": "2026-07-20T18:04:00Z",
"last_loged_on": "przed chwilą",
"item_count": 11,
"total_items_count": 34,
"followers_count": 87,
"following_count": 20,
"following_brands_count": 3,
"account_status": 1,
"positive_feedback_count": 41,
"neutral_feedback_count": 1,
"negative_feedback_count": 0,
"is_on_holiday": false,
"expose_location": true,
"city": "Warszawa",
"is_publish_photos_agreed": true,
"third_party_tracking": true,
"locale": "pl",
"iso_locale_code": "pl-PL",
"profile_url": "https://www.vinted.pl/member/157416251-geaninasava",
"share_profile_url": "https://www.vinted.pl/member/157416251-geaninasava?utm_source=share",
"is_online": false,
"fundraiser": { "id": null, "active": false, "percentage": 0, "currency": "PLN", "feature_disabled": false },
"localization": "pl_PL",
"is_bpf_price_prominence_applied": true,
"msg_template_count": 0,
"is_account_banned": false,
"account_ban_date": null,
"action_restriction": null,
"is_favourite": false,
"is_hated": false,
"hates_you": false,
"contacts_permission": null,
"contacts": null,
"path": "/member/157416251-geaninasava",
"is_catalog_moderator": false,
"is_catalog_role_marketing_photos": false,
"hide_feedback": false,
"allow_direct_messaging": true,
"verification": {
"email": { "valid": true, "available": false },
"facebook": { "valid": false, "verified_at": null, "available": true },
"google": { "valid": true, "verified_at": "2023-04-11T09:12:00Z", "available": false }
},
"avg_response_time": null,
"about": "Sprzedaję rzeczy w bardzo dobrym stanie, wysyłka w 24h.",
"facebook_user_id": null,
"given_item_count": 30,
"taken_item_count": 4,
"default_address": null,
"country_title_local": "Polska",
"country_iso_code": "PL",
"country_title": "Poland",
"currency": "PLN"
},
"code": 0
}INVALID_REQUEST Parametr id jest pusty (w praktyce trudne do wywołania przez routing, ale kod to obsługuje).UNAUTHENTICATED Brak nagłówka x-api-key albo klucz nie istnieje w bazie.INSUFFICIENT_CREDITS Za mało kredytów na koncie (ten endpoint kosztuje 1 kredyt).INTERNAL_ERROR Użytkownik nie istnieje, błąd sieci do Vinted, lub błąd odjęcia kredytów — zawsze ten sam ogólny kod 500.Masz pytania? skontaktuj się z nami.