Réponse rapide
Que contient une réponse de l'API SERP SerpCrypto ?
Chaque réponse SerpCrypto est un objet JSON : search_metadata (statut, moteur, crédits utilisés), search_parameters (les paramètres appliqués), search_information, puis un bloc par partie de la page de résultats, comme organic_results, ai_overview, people_also_ask ou local_results. Les parties absentes sont simplement manquantes. Une page coûte 1 crédit, à partir de 0,30 $US/1K requêtes ; payer en crypto, sans KYC.
À quoi ressemble une réponse Google complète ?
L'exemple ci-dessous est une recherche Google pour standing desk au Royaume-Uni, réduite à un élément par tableau. Une vraie réponse contient une dizaine de résultats organiques et tous les autres blocs affichés par la page pour cette requête, cette localisation et cet appareil.
{
"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 }
}Pourquoi certains blocs manquent-ils dans ma réponse ?
Parce que la page de résultats ne les affichait pas. Google décide pour chaque requête, lieu et appareil d'afficher ou non des ads, un AI Overview, un local pack ou des top stories. SerpCrypto renvoie ce que la page affichait et omet le reste, plutôt que d'envoyer des placeholders vides.
Lisez chaque bloc avec une valeur par défaut, comme dans les lignes Python ci-dessous. La même règle s'applique à l'intérieur d'un bloc : les champs optionnels comme date ou sitelinks n'apparaissent que sur les résultats qui les ont.
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")Que contient search_metadata ?
| Champ | Type | Description |
|---|---|---|
id | string | Identifiant de la recherche. Citez-le lorsque vous contactez le support. |
status | string | success sur une réponse 200. |
engine | string | Le moteur qui a exécuté la recherche. |
created_at | string | Heure de la recherche, ISO 8601 en UTC. |
credits_used | integer | Crédits débités par cette recherche : 1 en cas de succès. |
Que sont search_parameters et search_information ?
Conservez search_parameters avec vos résultats : il enregistre précisément de quel pays, de quelle langue, de quel lieu et de quel appareil provient un classement.
| Champ | Type | Description |
|---|---|---|
search_parameters | object | Les paramètres appliqués, avec les valeurs par défaut renseignées : engine, q, gl, hl, location, google_domain, device, page et les autres que vous avez envoyés. |
search_information.total_results | integer | Le nombre de résultats affiché par le moteur, lorsqu'il en affiche un. Une estimation, pas un chiffre exact. |
search_information.query_displayed | string | La requête telle que la page de résultats l'a affichée. |
Quels champs contient organic_results ?
Les résultats organiques sont les résultats web non payants. Sur Bing, organic_results a la même structure.
| Champ | Type | Description |
|---|---|---|
position | integer | Ordre du résultat dans ce bloc sur cette page, à partir de 1. |
title | string | Le titre du lien bleu. |
link | string | L'URL du résultat. |
displayed_link | string | L'URL ou le fil d'Ariane tel qu'affiché sous le titre. |
snippet | string | Le texte affiché sous le titre. |
date | string | Date affichée à côté de l'extrait, telle qu'écrite sur la page. Facultatif. |
sitelinks | array | Liens supplémentaires affichés sous le résultat, chacun avec title et link. Facultatif. |
Comment l'AI Overview est-il renvoyé ?
ai_overview n'est présent que lorsque Google affiche un AI Overview pour cette requête et ce lieu. De nombreuses requêtes n'en ont aucun.
| Champ | Type | Description |
|---|---|---|
ai_overview.text | string | Le texte de l'AI Overview tel qu'affiché sur la page. |
ai_overview.references[].index | integer | Ordre de la source dans l'aperçu. |
ai_overview.references[].title | string | Titre de la page citée. |
ai_overview.references[].link | string | URL de la page citée. |
ai_overview.references[].source | string | Nom du site, tel qu'affiché. |
Que contiennent ads et people_also_ask ?
| Champ | Type | Description |
|---|---|---|
ads[].position | integer | Ordre au sein de son bloc. |
ads[].block | string | top ou bottom de la page. |
ads[].title, link, displayed_link | string | Titre, URL de destination et URL affichée de l'annonce. |
ads[].description | string | Texte de l'annonce. |
people_also_ask[].question | string | La question telle qu'elle est affichée. |
people_also_ask[].snippet | string | Le texte de la réponse affiché à l'ouverture de la question. |
people_also_ask[].title, link | string | Titre et URL de la page d'où provient la réponse. |
Quels autres blocs Google peuvent apparaître ?
| Bloc | Champs | Ce que c'est |
|---|---|---|
local_results | position, title, address, rating, reviews, type | Le local pack : des entreprises sur une carte pour les requêtes à intention locale. |
knowledge_graph | title, type, description, source.name, source.link | Le knowledge panel sur une personne, un lieu, une entreprise ou une chose. |
top_stories | title, link, source, date | Articles d'actualité affichés dans un carrousel. |
inline_videos | title, link, source, duration | Résultats vidéo affichés dans les résultats web. |
shopping_results | position, title, price, source, link | Fiches produit affichées dans les résultats web. |
related_searches | query | Recherches suggérées en bas de page. |
pagination | current, next_page | Numéro de la page actuelle et de la suivante, s'il y en a une. |
Que renvoient les autres moteurs ?
Chaque verticale conserve la même structure et ajoute son propre tableau. Sur Google Maps, local_results est plus riche que le local pack d'une recherche web.
engine | Tableau principal | Champs |
|---|---|---|
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 | Les mêmes champs que les résultats organiques Google |
Comment les prix, les notes et les dates sont-ils typés ?
Les valeurs gardent la forme utilisée par la page dès que celle-ci les a écrites en texte. price est une chaîne avec son symbole monétaire, comme £299.00, et Google Shopping ajoute extracted_price sous forme de nombre avec currency comme code. rating est un nombre et reviews un entier. Les dates comme date restent telles qu'écrites sur la page, par exemple 12 Oct 2026 ou 3 days ago : parsez-les dans votre propre code si vous avez besoin d'un timestamp.
Comment construire un rang global sur plusieurs pages ?
Stockez le numéro de page avec chaque résultat. position donne l'ordre à l'intérieur de son bloc sur une page, et search_parameters.page vous indique de quelle page il s'agit. Environ 10 résultats organiques par page, comme Google les sert depuis qu'il n'honore plus num=100 en septembre 2025 ; chaque page supplémentaire coûte un crédit de plus.
Pour le suivi de position, la plupart des équipes conservent link, position, page, gl, location, device et created_at par mot-clé et par jour. C'est suffisant pour tracer une position et expliquer un changement par lieu ou par appareil. Voir suivi de position pour la méthode complète.
Questions sur le format de réponse
Le nommage des champs est-il stable ?
Oui, dans la version 1. De nouveaux blocs ou champs peuvent être ajoutés : ignorez les clés que vous ne connaissez pas. La suppression ou le renommage d'un champ s'accompagnerait d'une nouvelle version dans le chemin, comme /api/v2/.
Puis-je obtenir le HTML brut de la page ?
Non. La version 1 renvoie uniquement du JSON parsé. Les blocs parsés couvrent ce dont la plupart des outils ont besoin : résultats, annonces, questions, l'AI Overview, le local pack et le knowledge panel.
Pourquoi total_results diffère-t-il de ce que j'ai compté ?
C'est l'estimation affichée par le moteur, pas un décompte des résultats que vous pouvez parcourir page par page. Les pages s'arrêtent bien avant ce nombre ; utilisez pagination.next_page pour savoir s'il existe une page suivante.
Une réponse sans résultats organiques coûte-t-elle un crédit ?
Oui, si la recherche a réussi : une page vide reste un résultat. Seules les erreurs sont gratuites. 1 crédit = 1 requête réussie, qui renvoie une page de résultats sur n'importe quel moteur pris en charge. Une requête qui échoue n'est pas facturée.