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.
{
"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ą.
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, 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.