# Format odpowiedzi SERP API: każdy blok i pole JSON

> Odpowiedź SerpCrypto SERP API pole po polu: search_metadata, organic_results, ai_overview, people_also_ask, local pack, ads i tablice dla silników.

- URL: https://serpcrypto.com/pl/docs/response/
- Ostatnia aktualizacja: 2026-10-22
- Wydawca: SerpCrypto (https://serpcrypto.com)

Jedna rama dla każdego silnika, potem jeden blok na każdą część strony wyników. Ta strona wymienia każdy blok, jego pola i ich typy. W przykładach identyfikatory, liczby, ceny i wyniki są poglądowe.

**Szybka odpowiedź — Co zawiera odpowiedź SerpCrypto SERP API?**

Każda odpowiedź **SerpCrypto** to jeden obiekt JSON: `search_metadata` (status, silnik, zużyte kredyty), `search_parameters` (zastosowane ustawienia), `search_information`, a następnie jeden blok na każdą część strony wyników, taką jak `organic_results`, `ai_overview`, `people_also_ask` lub `local_results`. Brakujące części są po prostu pominięte. Jedna strona kosztuje 1 kredyt, od 0,30 USD/1K wyszukiwań; płatność kryptowalutą, bez KYC.

## Jak wygląda pełna odpowiedź Google?

Poniższy przykład to wyszukiwanie Google dla `standing desk` w Wielkiej Brytanii, skrócone do jednego elementu na tablicę. Prawdziwa odpowiedź ma około dziesięciu wyników organicznych i każdy inny blok, który strona pokazała dla tego zapytania, lokalizacji i urządzenia.

*engine=google, gl=gb: skrócone, poglądowe wartości*

```json
{
  "search_metadata": {
    "id": "srch_2b81d0c6fa47",
    "status": "success",
    "engine": "google",
    "created_at": "2026-10-22T10:02:31Z",
    "credits_used": 1
  },
  "search_parameters": {
    "engine": "google",
    "q": "standing desk",
    "gl": "gb",
    "hl": "en",
    "google_domain": "google.co.uk",
    "device": "desktop",
    "page": 1
  },
  "search_information": { "total_results": 52400000, "query_displayed": "standing desk" },
  "ai_overview": {
    "text": "A standing desk lets you work while standing or sitting…",
    "references": [
      { "index": 1, "title": "How to choose a standing desk", "link": "https://www.example.co.uk/guide", "source": "Example Guide" }
    ]
  },
  "ads": [
    { "position": 1, "block": "top", "title": "Electric Standing Desks", "link": "https://shop.example.com/desks", "displayed_link": "shop.example.com", "description": "Free delivery on…" }
  ],
  "organic_results": [
    {
      "position": 1,
      "title": "Best standing desks 2026, tested",
      "link": "https://www.example.co.uk/best-standing-desks",
      "displayed_link": "www.example.co.uk › reviews",
      "snippet": "We tested 14 electric and manual desks…",
      "date": "12 Oct 2026",
      "sitelinks": [ { "title": "Budget picks", "link": "https://www.example.co.uk/best-standing-desks#budget" } ]
    }
  ],
  "people_also_ask": [
    { "question": "Is it healthy to stand all day at a desk?", "snippet": "…", "title": "Standing at work", "link": "https://www.example.org/standing" }
  ],
  "shopping_results": [
    { "position": 1, "title": "Example Desk Pro 140 cm", "price": "£299.00", "source": "Example Store", "link": "https://shop.example.com/desk-pro" }
  ],
  "related_searches": [ { "query": "standing desk electric" }, { "query": "standing desk converter" } ],
  "pagination": { "current": 1, "next_page": 2 }
}
```

## Dlaczego w mojej odpowiedzi brakuje niektórych bloków?

Ponieważ strona wyników ich nie pokazała. Google decyduje dla każdego zapytania, miejsca i urządzenia, czy pokazać reklamy, AI Overview, local pack czy top stories. SerpCrypto zwraca to, co pokazała strona, a resztę pomija, zamiast wysyłać puste placeholdery.

Odczytuj każdy blok z wartością domyślną, jak w poniższych liniach Pythona. Ta sama zasada dotyczy wnętrza bloku: pola opcjonalne, takie jak `date` lub `sitelinks`, pojawiają się tylko w wynikach, które je mają.

*Python: bezpieczne odczytywanie opcjonalnych bloków*

```python
data = response.json()

# A block is present only when the results page shows it: read with a default.
overview = data.get("ai_overview") or {}
organic = data.get("organic_results", [])
questions = [item["question"] for item in data.get("people_also_ask", [])]

if overview:
    print("AI Overview sources:", [ref["link"] for ref in overview.get("references", [])])
print(len(organic), "organic results,", len(questions), "questions")
```

## Co zawiera search_metadata?

| Pole | Typ | Opis |
| --- | --- | --- |
| `id` | string | Identyfikator wyszukiwania. Podaj go, gdy kontaktujesz się z pomocą techniczną. |
| `status` | string | `success` przy odpowiedzi 200. |
| `engine` | string | Silnik, który wykonał wyszukiwanie. |
| `created_at` | string | Czas wyszukiwania, ISO 8601 w UTC. |
| `credits_used` | integer | Kredyty pobrane za to wyszukiwanie: 1 przy powodzeniu. |

## Czym są search_parameters i search_information?

Zapisuj `search_parameters` razem z wynikami: rejestruje dokładnie, z jakiego kraju, języka, miejsca i urządzenia pochodzi pozycja.

| Pole | Typ | Opis |
| --- | --- | --- |
| `search_parameters` | object | Zastosowane parametry, z uzupełnionymi wartościami domyślnymi: `engine`, `q`, `gl`, `hl`, `location`, `google_domain`, `device`, `page` i pozostałe, które wysłałeś. |
| `search_information.total_results` | integer | Liczba wyników wyświetlona przez wyszukiwarkę, jeśli ją wyświetliła. Wartość szacunkowa, nie dokładna. |
| `search_information.query_displayed` | string | Zapytanie w postaci, w jakiej pokazała je strona wyników. |

## Jakie pola ma organic_results?

Wyniki organiczne to bezpłatne wyniki wyszukiwania w sieci. W Bing `organic_results` ma ten sam kształt.

| Pole | Typ | Opis |
| --- | --- | --- |
| `position` | integer | Kolejność wyniku w tym bloku na tej stronie, zaczynając od 1. |
| `title` | string | Tytuł niebieskiego linku. |
| `link` | string | URL wyniku. |
| `displayed_link` | string | URL lub breadcrumb widoczny pod tytułem. |
| `snippet` | string | Tekst widoczny pod tytułem. |
| `date` | string | Data widoczna obok snippetu, zapisana tak jak na stronie. Opcjonalna. |
| `sitelinks` | array | Dodatkowe linki widoczne pod wynikiem, każdy z `title` i `link`. Opcjonalne. |

## Jak zwracany jest AI Overview?

`ai_overview` występuje tylko wtedy, gdy Google pokazuje AI Overview dla tego zapytania i miejsca. Wiele zapytań go nie ma.

| Pole | Typ | Opis |
| --- | --- | --- |
| `ai_overview.text` | string | Tekst AI Overview widoczny na stronie. |
| `ai_overview.references[].index` | integer | Kolejność źródła w przeglądzie. |
| `ai_overview.references[].title` | string | Tytuł cytowanej strony. |
| `ai_overview.references[].link` | string | URL cytowanej strony. |
| `ai_overview.references[].source` | string | Nazwa witryny, tak jak jest wyświetlana. |

## Co zawierają ads i people_also_ask?

| Pole | Typ | Opis |
| --- | --- | --- |
| `ads[].position` | integer | Kolejność w obrębie bloku. |
| `ads[].block` | string | `top` lub `bottom` strony. |
| `ads[].title`, `link`, `displayed_link` | string | Nagłówek, docelowy URL i wyświetlany URL reklamy. |
| `ads[].description` | string | Tekst reklamy. |
| `people_also_ask[].question` | string | Pytanie w postaci wyświetlanej. |
| `people_also_ask[].snippet` | string | Tekst odpowiedzi wyświetlany po otwarciu pytania. |
| `people_also_ask[].title`, `link` | string | Tytuł i URL strony, z której pochodzi odpowiedź. |

## Jakie inne bloki Google mogą się pojawić?

| Blok | Pola | Co to jest |
| --- | --- | --- |
| `local_results` | `position`, `title`, `address`, `rating`, `reviews`, `type` | Local pack: firmy na mapie dla zapytań z intencją lokalizacyjną. |
| `knowledge_graph` | `title`, `type`, `description`, `source.name`, `source.link` | Panel wiedzy o osobie, miejscu, firmie lub rzeczy. |
| `top_stories` | `title`, `link`, `source`, `date` | Artykuły informacyjne wyświetlane w karuzeli. |
| `inline_videos` | `title`, `link`, `source`, `duration` | Wyniki wideo wyświetlane w wynikach wyszukiwania. |
| `shopping_results` | `position`, `title`, `price`, `source`, `link` | Oferty produktów wyświetlane w wynikach wyszukiwania. |
| `related_searches` | `query` | Wyszukiwania sugerowane na dole strony. |
| `pagination` | `current`, `next_page` | Bieżący numer strony i następny, jeśli istnieje. |

## Co zwracają inne wyszukiwarki?

Każdy vertical zachowuje tę samą ramę i dodaje własną tablicę. W Google Maps `local_results` jest bogatszy niż local pack w wyszukiwaniu internetowym.

| `engine` | Główna tablica | Pola |
| --- | --- | --- |
| `google_news` | `news_results` | `position`, `title`, `link`, `source`, `date`, `snippet`, `thumbnail` |
| `google_images` | `images_results` | `position`, `title`, `original`, `original_width`, `original_height`, `thumbnail`, `source`, `link` |
| `google_maps` | `local_results` | `position`, `title`, `place_id`, `address`, `phone`, `website`, `rating`, `reviews`, `type`, `hours`, `gps_coordinates.latitude`, `gps_coordinates.longitude` |
| `google_shopping` | `shopping_results` | `position`, `title`, `price`, `extracted_price`, `currency`, `source`, `link`, `delivery`, `rating`, `reviews` |
| `bing` | `organic_results`, `related_searches` | Te same pola co w organicznych wynikach wyszukiwania Google |

## Jak są typowane ceny, oceny i daty?

Wartości zachowują formę, jakiej użyła strona, gdy strona zapisała je jako tekst. `price` to ciąg znaków ze znakiem waluty, np. `£299.00`, a Google Shopping dodaje `extracted_price` jako liczbę, a `currency` jako kod. `rating` to liczba, a `reviews` to liczba całkowita. Daty takie jak `date` pozostają zapisane tak, jak na stronie, np. `12 Oct 2026` lub `3 days ago`, więc sparsuj je we własnym kodzie, jeśli potrzebujesz znacznika czasu.

## Jak zbudować ogólny ranking z kilku stron?

Zapisuj numer strony przy każdym wyniku. `position` podaje kolejność wewnątrz bloku na jednej stronie, a `search_parameters.page` mówi, która to była strona. Około 10 wyników organicznych na stronę, tak jak Google serwuje od czasu, gdy we wrześniu 2025 przestało respektować num=100; każda dodatkowa strona to jeden kredyt więcej.

Do rank trackingu większość zespołów przechowuje `link`, `position`, `page`, `gl`, `location`, `device` i `created_at` dla każdego słowa kluczowego i każdego dnia. To wystarczy, aby wykreślić ranking i wyjaśnić zmianę przez miejsce lub urządzenie. Zobacz [rank tracking](https://serpcrypto.com/pl/use-cases/rank-tracking/), aby poznać pełną metodę.

## Pytania o format odpowiedzi

### Czy nazewnictwo pól jest stabilne?

Tak, w obrębie wersji 1. Nowe bloki lub pola mogą być dodawane, więc ignoruj nieznane klucze. Usunięcie lub zmiana nazwy pola wiązałaby się z nową wersją w ścieżce, np. `/api/v2/`.

### Czy mogę dostać surowy HTML strony?

Nie. Wersja 1 zwraca tylko sparsowany JSON. Sparsowane bloki obejmują to, czego potrzebuje większość narzędzi: wyniki, reklamy, pytania, AI Overview, local pack i knowledge panel.

### Dlaczego total_results różni się od tego, co policzyłem?

To szacunek, który wypisuje wyszukiwarka, a nie liczba wyników, przez które możesz przechodzić strona po stronie. Strony kończą się znacznie wcześniej niż ta liczba; użyj `pagination.next_page`, aby wiedzieć, czy istnieje kolejna strona.

### Czy odpowiedź bez organicznych wyników kosztuje kredyt?

Tak, jeśli wyszukiwanie się powiodło: pusta strona to wciąż wynik. Tylko błędy są darmowe. 1 kredyt = 1 udane zapytanie wyszukiwania, które zwraca jedną stronę wyników na dowolnym obsługiwanym silniku. Nieudane zapytanie nie jest rozliczane.

---

SerpCrypto: SerpCrypto to API SERP dla deweloperów i agentów AI, które zwraca wyniki wyszukiwania Google i Bing w formacie JSON, z płatnością kryptowalutą i bez przesyłania dokumentów tożsamości. Przedpłacone kredyty wyszukiwania od 0,30 USD/1K wyszukiwań nigdy nie wygasają. Bez KYC — bez dokumentu, bez selfie, bez dokumentów. Płatność kryptowalutą.
