Skip to Content

Pozycje: wzrosty (getWins)

POST/api/visibility_analysis/reports/positions/getWins

Zwraca frazy kluczowe, na których pozycja domeny wzrosła w analizowanym okresie (tryb pracy = increase). Dla każdej frazy zwracany jest ten sam zestaw statystyk co w getData (pozycja, widoczność, URL, CPC, liczba wyszukiwań, trendy, trudność, snippety SERP), ograniczony do fraz z poprawą pozycji. Domyślnie posortowane według wielkości zmiany.

Okres jest zaszyty na sztywno — ok. tygodnia. Ta akcja nie przyjmuje żadnych parametrów dat. Porównywany jest najświeższy dostępny snapshot pozycji z najstarszym snapshotem z ostatniego tygodnia. Jeśli potrzebujesz własnego zakresu, użyj history/keywords/getWins z date_min/date_max.

Wyniki zawierają też frazy nowo pozyskane. Fraza, na którą domena wcześniej nie rankowała, trafia tutaj jako skok z pozycji 51 (sentinel „poza TOP50”) — patrz przykładowa odpowiedź powyżej: {"current": 26, "previous": 51, "diff": -25}. Aby zawęzić wynik do ruchu wewnątrz TOP50, odrzuć wiersze z statistics.position.previous === 51.

Siostrzana getLosses zachowuje się odwrotnie — frazy utracone są z niej wykluczone, a rodzina positions/* nie ma odpowiednika getLost, więc w ogóle ich stąd nie pobierzesz. Porównywanie count obu akcji zestawia dwie różnie zdefiniowane wielkości. Zachowanie może się w przyszłości ujednolicić — na dziś traktuj powyższe jako obowiązujący kontrakt.

Podgląd · 6 z 24 kolumn
FrazaID frazyKIDDomenaLiczba słówPozycja
vans zamszowe225329030d9b596c2058c07801e2ec87e85a37zalando.pl21
lakierowane balerinki78566646a890673b2ee1ab050e233749ab4d170zalando.pl21
śniegowce sorel6508374583abba99a976ff8f6276ef42ebab4c7zalando.pl21
żółty sweterek rozpinany79932036c5f97d43b98e882ad45d9108af77e43zalando.pl31
quiksilver t-shirt8270210702193e9391832d6a07401b1c1fdff47zalando.pl21

zalando.pl · 2026-07-04, limit: 5, sort: pozycja rosnąco — frazy, które zyskały pozycje. Wszystkie pola wiersza (poza mapą historii pozycji statistics.position.history, która ma zmienne klucze-daty — jest w JSON i sekcji „Struktura odpowiedzi”).


Żądanie

POST /api/visibility_analysis/reports/positions/getWins

Nagłówki: Authorization: Bearer <token>, Content-Type: application/json.

Struktura żądania

żądanie-podstawowe.jsonc
{ "domain": "zalando.pl", "fetch_mode": "topLevelDomain" }

Parametry

NameTypeDefault
domainstring

Wymagane. Domena, subdomena, katalog lub URL do analizy — interpretowane zgodnie z fetch_mode.

fetch_mode"topLevelDomain" | "subdomain" | "catalog" | "url"

Wymagane. Sposób interpretacji domain.

  • topLevelDomain — cała domena (najczęstszy przypadek; “domena”)
  • subdomain — pojedyncza subdomena
  • catalog — ścieżka/katalog
  • url — dokładny URL
limitnumber

Liczba wierszy na stronę. Nieujemna liczba całkowita.

10
pagenumber

Numer strony. Nieujemna liczba całkowita.

1
order{ prop: string; dir: "asc" | "desc"; }

Sortowanie wyników — pojedynczy obiekt, nie tablica. Dozwolone prop: statistics.position.current|previous|diff, statistics.visibility.current|previous|diff, statistics.searches.current, statistics.cpc.current, statistics.difficulty.current, statistics.url.is_change, words_count. Zły kształt lub nieznany klucz NIE zwraca błędu — API po cichu wraca do sortu domyślnego (keyword_id rosnąco).

filteringunknown[]

Dyrektywy filtrowania. Pusta tablica = brak filtrowania.

Nazwy parametrów różnią się od starej dokumentacji: jest to filtering (nie filters) oraz order (nie sort_by / sort_order). Uwaga na kształt order: to obiekt { "prop": …, "dir": … } — forma tablicowa [{ field, direction }] jest przez API ignorowana po cichu (zwraca 200 z sortem domyślnym po keyword_id).

Zarówno domain, jak i fetch_modewymagane; pominięcie fetch_mode zwraca 418 z invalid_data.

Odpowiedź

Po pomyślnym żądaniu otrzymujesz data (tablicę fraz, które zyskały na pozycji) oraz pagination. Ujemna wartość position.diff oznacza poprawę — fraza przesunęła się w górę SERP (mniejszy numer pozycji).

przykładowa-odpowiedź (skrócona)
{ "success": true, "data": [ { "keyword_id": 1097, "keyword": "my secret", "statistics": { "position": { "current": 26, "previous": 51, "diff": -25 } /* … */ } } ], "pagination": { "page_count": 3182, "current_page": 1, "has_next_page": true, "has_prev_page": false, "count": 6363, "limit": 2 } }

Struktura odpowiedzi

NameTypeDefault
successboolean

true przy powodzeniu; przy błędzie false i koperta z error

dataPositionRow[]

Zwrócone wiersze fraz (z poprawą pozycji)

pagination{ page_count: number; current_page: number; has_next_page: boolean; has_prev_page: boolean; count: number; limit: number; }

Metadane paginacji

Błędy

NameTypeDefault
successfalse
data{ error: { type: string; message: string; params?: Record<string, Record<string, string>>; }; }

418 jest zwracane również w przypadku błędów walidacji — nie tylko przy ograniczaniu liczby żądań. Brak fetch_mode{"success":false,"data":{"error":{"type":"invalid_data","params":{"fetch_mode":{"_required":"This field is required"}}}}}.

Powiązane akcje

  • getData — bieżące pozycje fraz (taki sam kształt żądania)
  • getWins — frazy, które zyskały pozycje (ta strona)
  • getLosses — frazy, które straciły pozycje (taki sam kształt żądania)
  • getKeywordHistory — pełna historia pozycji dla pojedynczej frazy (keyword_id + kid + domain + fetch_mode)
Ostatnia aktualizacja: