--- title: "Frazy: zrzut SERP (`getSerpHtml`)" source: https://docs.senuto.com/modules/rank_tracker/rt-keywords-getSerpHtml api: POST /api/rank_tracker/reports/keywords/getSerpHtml --- # Frazy: zrzut SERP (`getSerpHtml`) **`POST /api/rank_tracker/reports/keywords/getSerpHtml`** Zwraca zapisany zrzut HTML strony wyników Google (SERP) dla wskazanej frazy projektu Rank Tracker z danego dnia. Odpowiedź zawiera pojedyncze pole `data.html` — pełny kod HTML strony wyników albo `null`, jeśli zrzut dla danej frazy i daty nie jest przechowywany. --- ## Żądanie `POST` `/api/rank_tracker/reports/keywords/getSerpHtml` Nagłówki: `Authorization: Bearer `, `Content-Type: application/json`. ### Struktura żądania **Podstawowy** ```jsonc filename="żądanie-podstawowe.jsonc" { "project_id": null, "keyword_id": null, "date": "2026-07-01" } ``` **cURL** ```bash curl --location --request POST 'https://api.senuto.com/api/rank_tracker/reports/keywords/getSerpHtml' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer $YOUR_TOKEN_HERE' \ --data-raw '{ "project_id": null, "keyword_id": null, "date": "2026-07-01" }' ``` ### Parametry ```ts type GetSerpHtmlRequest = { /** * **Wymagane**. ID projektu Rank Tracker (walidator `SerpHtmlValidator`). * Realny `project_id` pobierzesz z `POST /api/rank_tracker/management/projects/getMyActiveProjects`. */ project_id: number; /** * **Wymagane**. ID frazy w projekcie. Identyfikatory fraz pobierzesz np. z akcji * `getProjectKeywords` lub `getGroupKeywords` w tym samym kontrolerze. * Realny `keyword_id` pobierzesz z `POST /api/rank_tracker/reports/keywords/getData`. */ keyword_id: number; /** * **Wymagane**. Dzień, z którego chcesz pobrać zrzut SERP, w formacie `YYYY-MM-DD`. * Głębokość historii ogranicza limit planu `monitoring_serp_html_history_limit` — data spoza limitu skutkuje `418`. */ date: string; } export default GetSerpHtmlRequest ``` > **Ostrzeżenie:** > Poza walidacją pól (`SerpHtmlValidator` wymaga `project_id`, `keyword_id` oraz `date` w formacie `YYYY-MM-DD`) działa tu limit planu **`monitoring_serp_html_history_limit`** — określa on głębokość historii zrzutów, do której możesz sięgać. Żądanie daty spoza dozwolonej głębokości historii kończy się błędem **`418`**. Data mieszcząca się w limicie, ale bez zapisanego zrzutu, zwraca `HTTP 200` z `html: null` — brak zrzutu nie jest sygnalizowany błędem. ## Odpowiedź Po pomyślnym żądaniu otrzymujesz `data.html` — kod HTML strony wyników Google zapisany dla frazy w podanym dniu, albo `null`, gdy zrzut nie jest przechowywany (np. plan bez historii zrzutów SERP lub brak zapisu z tego dnia). **Pełna (zwalidowana)** ```json filename="przykładowa-odpowiedź (200)" { "success": true, "data": { "html": null } } ``` ### Struktura odpowiedzi ```ts type GetSerpHtmlResponse = { /** `true` przy powodzeniu; przy błędzie `false` i koperta z `error` */ success: boolean; data: { /** * Zapisany kod HTML strony wyników Google dla frazy z podanego dnia, * albo `null`, gdy zrzut nie jest przechowywany dla tego projektu/planu lub daty. */ html: string | null; }; } export default GetSerpHtmlResponse ``` ## Błędy ```ts type ErrorResponse = { success: false; data: { error: { /** np. invalid_data, unknown */ type: string; message: string; /** pole -> reguła -> komunikat (dla invalid_data) */ params?: Record>; }; }; } export default ErrorResponse ``` > **Błąd:** > Brak któregokolwiek z wymaganych pól (`project_id`, `keyword_id`, `date`) lub niepoprawny format daty skutkuje błędem walidacji `invalid_data` (**`418`**). Kod **`418`** zwracany jest także przy przekroczeniu głębokości historii zrzutów wyznaczonej przez limit planu `monitoring_serp_html_history_limit`. Brak zapisanego zrzutu dla poprawnej daty **nie jest** błędem — otrzymasz `HTTP 200` z `html: null`. ## Powiązane akcje - `getProjectKeywords` — słowa kluczowe całego projektu (`POST`, `project_id`) - `getGroupKeywords` — lekka lista (`id` + `keyword`) ograniczona do jednej grupy - `getData` — pełne statystyki pozycji (`POST`, `project_id` + `group_id` + `filtering` + `order`) - `getSerpHtml` — zapis HTML wyników SERP dla frazy i dnia (ta strona) - `getBestKeywords` / `getProjectsStatus` — pozostałe akcje pomocnicze kontrolera