Pozycje: historia frazy (getKeywordHistory)
/api/visibility_analysis/reports/positions/getKeywordHistoryZwraca pełną historię pozycji pojedynczej frazy kluczowej dla wskazanej domeny. W odpowiedzi otrzymujesz mapę history_positions, w której kluczem jest data pomiaru, a wartością pozycja oraz informacja o obecności snippetów SERP w danym dniu. Identyfikatory frazy (keyword_id oraz kid) pozyskujesz z positions/getData.
Żądanie
POST /api/visibility_analysis/reports/positions/getKeywordHistory
Nagłówki: Authorization: Bearer <token>, Content-Type: application/json.
Struktura żądania
Podstawowy
{
"domain": "zalando.pl",
"fetch_mode": "topLevelDomain",
"keyword_id": null,
"kid": null
}Parametry
| Name | Type | Default |
|---|---|---|
domain | stringWymagane. Domena, subdomena, katalog lub URL do analizy — interpretowane zgodnie z | |
fetch_mode | "topLevelDomain" | "subdomain" | "catalog" | "url"Wymagane. Sposób interpretacji
| |
keyword_id | numberWymagane. Numeryczny identyfikator frazy. Pozyskaj go z | |
kid | stringWymagane. Hash identyfikujący frazę w kontekście domeny. Pozyskaj go z | |
limit | numberLiczba wierszy na stronę. Nieujemna liczba całkowita. | 10 |
page | numberNumer strony. Nieujemna liczba całkowita. | 1 |
order | unknown⚠️ Bez zastosowania w tym endpoincie. Odpowiedź to mapa
| |
filtering | unknown[]⚠️ Bez zastosowania w tym endpoincie. Endpoint nie odczytuje |
Ten endpoint zwraca mapę historii pozycji (klucz = data), a nie stronicowaną listę — parametry order, filtering, limit i page nie mają tu zastosowania (filtering jest przyjmowane, ale ignorowane — nie zwraca nawet 418 na nieznanym kluczu). Wymagane są wyłącznie domain, fetch_mode, keyword_id i kid.
Endpoint przyjmuje wyłącznie metodę POST. Oprócz keyword_id oraz kid wymagane są również domain i fetch_mode — pominięcie któregokolwiek z parametrów zwraca 418 z invalid_data. Identyfikatory keyword_id i kid muszą pochodzić z positions/getData dla tej samej domeny.
Odpowiedź
Po pomyślnym żądaniu otrzymujesz data z obiektem history_positions. W przeciwieństwie do getData ta odpowiedź nie zawiera pagination — zwracana jest cała mapa historii. Klucze mapy to daty pomiarów (RRRR-MM-DD), a wartości opisują pozycję oraz obecność snippetów SERP w danym dniu.
Skrócona
{
"success": true,
"data": {
"history_positions": {
"2026-05-28": { "position": 29, "has_serp": true }
}
}
}Struktura odpowiedzi
| Name | Type | Default |
|---|---|---|
success | boolean
| |
data | { history_positions: Record<string, { position: number; has_serp: boolean; }>; }Dane historii pozycji frazy |
Błędy
| Name | Type | Default |
|---|---|---|
success | false | |
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"}}}}}. Analogicznie pominięcie keyword_id lub kid zwraca 418 z invalid_data.
Powiązane akcje
getData— bieżące pozycje fraz (źródłokeyword_idorazkid)getWins/getLosses— frazy, które zyskały / straciły pozycje (taki sam kształt żądania cogetData)getKeywordHistory— pełna historia pozycji dla pojedynczej frazy (keyword_id+kid+domain+fetch_mode) (ta strona)