Risposta rapida
Cosa contiene una risposta della SERP API di SerpCrypto?
Ogni risposta SerpCrypto è un oggetto JSON: search_metadata (stato, engine, crediti usati), search_parameters (le impostazioni applicate), search_information, poi un blocco per ogni parte della pagina dei risultati, come organic_results, ai_overview, people_also_ask o local_results. Le parti assenti sono semplicemente mancanti. Una pagina costa 1 credito, da 0,30 USD/1K ricerche; paghi in criptovalute, senza KYC.
Come appare una risposta completa di Google?
L'esempio qui sotto è una ricerca Google per standing desk nel Regno Unito, ridotta a un elemento per array. Una risposta reale ha circa dieci risultati organici e ogni altro blocco che la pagina ha mostrato per quella query, località e dispositivo.
{
"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 }
}Perché mancano alcuni blocchi dalla mia risposta?
Perché la pagina dei risultati non li mostrava. Google decide per query, località e dispositivo se mostrare ads, un AI Overview, un local pack o top stories. SerpCrypto restituisce ciò che la pagina mostrava e omette il resto, invece di inviare segnaposto vuoti.
Leggi ogni blocco con un valore di default, come nelle righe Python qui sotto. La stessa regola vale dentro un blocco: i campi opzionali come date o sitelinks compaiono solo sui risultati che li hanno.
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")Cosa c'è in search_metadata?
| Campo | Tipo | Descrizione |
|---|---|---|
id | string | Identificatore della ricerca. Citarlo quando contatti il supporto. |
status | string | success su una risposta 200. |
engine | string | L'engine che ha eseguito la ricerca. |
created_at | string | Ora della ricerca, ISO 8601 in UTC. |
credits_used | integer | Crediti addebitati per questa ricerca: 1 in caso di successo. |
Cosa sono search_parameters e search_information?
Salva search_parameters insieme ai tuoi risultati: registra esattamente da quale paese, lingua, luogo e dispositivo proviene un posizionamento.
| Campo | Tipo | Descrizione |
|---|---|---|
search_parameters | object | I parametri applicati, con i valori predefiniti inseriti: engine, q, gl, hl, location, google_domain, device, page e gli altri che hai inviato. |
search_information.total_results | integer | Il numero di risultati visualizzato dal motore, quando ne mostra uno. Una stima, non un dato esatto. |
search_information.query_displayed | string | La query così come l'ha mostrata la pagina dei risultati. |
Quali campi ha organic_results?
I risultati organici sono i risultati web non a pagamento. Su Bing, organic_results ha la stessa struttura.
| Campo | Tipo | Descrizione |
|---|---|---|
position | integer | Ordine del risultato in questo blocco su questa pagina, a partire da 1. |
title | string | Il titolo del link blu. |
link | string | L'URL del risultato. |
displayed_link | string | L'URL o il breadcrumb come mostrato sotto il titolo. |
snippet | string | Il testo mostrato sotto il titolo. |
date | string | Data mostrata accanto allo snippet, così come scritta sulla pagina. Facoltativa. |
sitelinks | array | Link aggiuntivi mostrati sotto il risultato, ciascuno con title e link. Facoltativi. |
Come viene restituito l'AI Overview?
ai_overview è presente solo quando Google mostra un AI Overview per quella query e quel luogo. Molte query non ne hanno nessuno.
| Campo | Tipo | Descrizione |
|---|---|---|
ai_overview.text | string | Il testo dell'AI Overview così come mostrato sulla pagina. |
ai_overview.references[].index | integer | Ordine della fonte nell'overview. |
ai_overview.references[].title | string | Titolo della pagina citata. |
ai_overview.references[].link | string | URL della pagina citata. |
ai_overview.references[].source | string | Nome del sito, come mostrato. |
Cosa contengono ads e people_also_ask?
| Campo | Tipo | Descrizione |
|---|---|---|
ads[].position | integer | Ordine all'interno del suo blocco. |
ads[].block | string | top o bottom della pagina. |
ads[].title, link, displayed_link | string | Titolo, URL di destinazione e URL mostrato dell'annuncio. |
ads[].description | string | Testo dell'annuncio. |
people_also_ask[].question | string | La domanda come viene mostrata. |
people_also_ask[].snippet | string | Il testo della risposta mostrato quando si apre la domanda. |
people_also_ask[].title, link | string | Titolo e URL della pagina da cui proviene la risposta. |
Quali altri blocchi di Google possono comparire?
| Blocco | Campi | Cos'è |
|---|---|---|
local_results | position, title, address, rating, reviews, type | Il local pack: attività commerciali su una mappa per query con intento di località. |
knowledge_graph | title, type, description, source.name, source.link | Il knowledge panel su una persona, un luogo, un'azienda o una cosa. |
top_stories | title, link, source, date | Articoli di notizie mostrati in un carosello. |
inline_videos | title, link, source, duration | Risultati video mostrati all'interno dei risultati web. |
shopping_results | position, title, price, source, link | Annunci di prodotti mostrati all'interno dei risultati web. |
related_searches | query | Ricerche suggerite in fondo alla pagina. |
pagination | current, next_page | Numero della pagina corrente e quello della successiva, quando esiste. |
Cosa restituiscono gli altri motori?
Ogni verticale mantiene la stessa struttura e aggiunge un proprio array. Su Google Maps, local_results è più ricco del local pack di una ricerca web.
engine | Array principale | Campi |
|---|---|---|
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 | Gli stessi campi dei risultati organici di Google |
Come vengono tipizzati prezzi, valutazioni e date?
I valori mantengono la forma usata dalla pagina quando questa li ha scritti come testo. price è una stringa con il simbolo della valuta, ad esempio £299.00, e Google Shopping aggiunge extracted_price come numero con currency come codice. rating è un numero e reviews un intero. Le date come date restano come scritte sulla pagina, per esempio 12 Oct 2026 o 3 days ago, quindi analizzale nel tuo codice se ti serve un timestamp.
Come costruisco una posizione complessiva su più pagine?
Salva il numero di pagina insieme a ogni risultato. position dà l'ordine all'interno del suo blocco su una pagina, e search_parameters.page ti dice di quale pagina si tratta. Circa 10 risultati organici per pagina, come Google serve da quando ha smesso di rispettare num=100 a settembre 2025; ogni pagina in più costa un altro credito.
Per il rank tracking, la maggior parte dei team conserva link, position, page, gl, location, device e created_at per keyword e per giorno. È sufficiente per tracciare un grafico del posizionamento e spiegare una variazione per luogo o dispositivo. Vedi rank tracking per il metodo completo.
Domande sul formato della risposta
La denominazione dei campi è stabile?
Sì, all'interno della versione 1. Si possono aggiungere nuovi blocchi o campi, quindi ignora le chiavi che non conosci. La rimozione o la rinomina di un campo arriverebbe con una nuova versione nel path, come /api/v2/.
Posso ottenere l'HTML grezzo della pagina?
No. La versione 1 restituisce solo JSON analizzato. I blocchi analizzati coprono ciò che serve alla maggior parte degli strumenti: risultati, annunci, domande, l'AI Overview, il local pack e il knowledge panel.
Perché total_results differisce da quello che avevo contato?
È la stima che stampa il motore, non un conteggio dei risultati su cui puoi sfogliare. Le pagine finiscono molto prima di quel numero; usa pagination.next_page per sapere se esiste un'altra pagina.
Una risposta senza risultati organici costa un credito?
Sì, se la ricerca è andata a buon fine: una pagina vuota è comunque un risultato. Solo gli errori sono gratuiti. 1 credito = 1 richiesta di ricerca andata a buon fine, che restituisce una pagina di risultati su qualsiasi motore supportato. Una richiesta non riuscita non viene addebitata.