Réponse rapide
Quels paramètres prend l'endpoint de recherche SerpCrypto ?
GET https://serpcrypto.com/api/v1/search prend un paramètre obligatoire, q, et neuf facultatifs : engine, gl, hl, location, google_domain, device, page, safe et period. SerpCrypto renvoie du JSON et facture 1 crédit par requête réussie sur tous les 6 moteurs ; les erreurs sont gratuites. Les packs commencent à 7,50 $US pour 10 000 recherches, payables en crypto, sans KYC.
Comment m'authentifier ?
Envoyez votre clé de deux façons. La méthode recommandée est l'en-tête Authorization: Bearer YOUR_KEY. L'autre est le paramètre de requête api_key=YOUR_KEY, pratique pour un test rapide dans un onglet de navigateur.
Une clé absente, erronée ou révoquée renvoie 401 invalid_api_key et ne coûte rien. Des clés API que vous pouvez créer et révoquer à tout moment depuis votre tableau de bord, ainsi vous pouvez attribuer une clé à chaque script ou serveur et en révoquer une sans toucher aux autres.
Lancer une recherche
GET/api/v1/search
Lance une recherche sur le moteur choisi et renvoie la page de résultats en JSON. Une recherche réussie utilise 1 crédit, quel que soit le moteur ; une erreur n'en utilise aucun. Les paramètres vont dans la query string, encodés en URL. L'exemple demande à Google les torréfacteurs de café à Austin, Texas ; les IDs, décomptes et résultats sont illustratifs.
Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.
Paramètres
| Nom | Emplacement | Type | Obligatoire | Description |
|---|---|---|---|---|
q | query | string | Oui | La requête de recherche, telle qu'une personne la taperait. Les opérateurs de recherche comme les guillemets ou site: font partie de la requête. |
engine | query | string | Non | google (par défaut), google_news, google_images, google_maps, google_shopping ou bing. |
gl | query | string | Non | Pays des résultats : code ISO 3166-1 alpha-2 en minuscules, tel que us, de ou br. Par défaut us. |
hl | query | string | Non | Langue de l'interface, telle que en, de ou pt-BR. Par défaut en. |
location | query | string | Non | Lieu au niveau de la ville, écrit City, Region, Country, tel que Austin, Texas, United States. Voir locations. |
google_domain | query | string | Non | Domaine Google sur lequel chercher, tel que google.de. Par défaut : le domaine du pays gl. Ignoré lorsque engine=bing. |
device | query | string | Non | desktop (par défaut) ou mobile. |
page | query | integer | Non | Page de résultats de 1 (par défaut) à 10. Chaque page est une recherche distincte et utilise 1 crédit. |
safe | query | string | Non | active filtre les résultats explicites ; off (par défaut) ne le fait pas. |
period | query | string | Non | Uniquement les résultats de la dernière heure (h), du dernier jour (d), de la dernière semaine (w), du dernier mois (m) ou de la dernière année (y). |
api_key | query | string | Non | Votre clé, si vous n'envoyez pas l'en-tête Authorization. |
Réponse 200
{
"search_metadata": {
"id": "srch_7f3a9c2e41b8",
"status": "success",
"engine": "google",
"created_at": "2026-10-22T09:14:05Z",
"credits_used": 1
},
"search_parameters": {
"engine": "google",
"q": "coffee roasters",
"gl": "us",
"hl": "en",
"location": "Austin, Texas, United States",
"google_domain": "google.com",
"device": "desktop",
"page": 1
},
"search_information": {
"total_results": 18600000,
"query_displayed": "coffee roasters"
},
"local_results": [
{
"position": 1,
"title": "Example Coffee Roasters",
"address": "123 Example St, Austin, TX",
"rating": 4.7,
"reviews": 312,
"type": "Coffee roasters"
}
],
"organic_results": [
{
"position": 1,
"title": "The 12 best coffee roasters in Austin",
"link": "https://www.example.com/austin/coffee-roasters",
"displayed_link": "www.example.com › austin › coffee",
"snippet": "From light Nordic roasts to dark espresso blends, these local roasters…",
"date": "Sep 30, 2026"
},
{
"position": 2,
"title": "Example Roasting Co. | Fresh beans, roasted in Austin",
"link": "https://www.example.org/",
"displayed_link": "www.example.org",
"snippet": "Small-batch coffee roasted every weekday and shipped the same day…"
}
],
"people_also_ask": [
{
"question": "What is the oldest coffee roaster in Austin?",
"snippet": "…",
"title": "Austin coffee history",
"link": "https://www.example.net/austin-coffee-history"
}
],
"related_searches": [
{
"query": "coffee roasters near me"
},
{
"query": "coffee roasters austin wholesale"
}
],
"pagination": {
"current": 1,
"next_page": 2
}
}Exemples de code
curl -sG "https://serpcrypto.com/api/v1/search" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
--data-urlencode "q=coffee roasters" \
--data-urlencode "location=Austin, Texas, United States" \
-d gl=us -d hl=en -d device=desktopimport os
import requests
r = requests.get(
"https://serpcrypto.com/api/v1/search",
params={
"q": "coffee roasters",
"location": "Austin, Texas, United States",
"gl": "us",
"hl": "en",
},
headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
timeout=60,
)
r.raise_for_status()
print(r.json()["organic_results"][0]["link"])const params = new URLSearchParams({
q: "coffee roasters",
location: "Austin, Texas, United States",
gl: "us",
hl: "en",
});
const res = await fetch("https://serpcrypto.com/api/v1/search?" + params, {
headers: { Authorization: "Bearer " + process.env.SERPCRYPTO_API_KEY },
});
const data = await res.json();
console.log(data.organic_results?.[0]?.link);Quelles valeurs d'engine existent, et que renvoie chacune ?
La structure (search_metadata, search_parameters, search_information) est la même sur chaque engine. Un bloc n'apparaît que lorsque la page l'affiche.
engine | Source | Blocs principaux de la réponse |
|---|---|---|
google | Google Search | ai_overview, organic_results, ads, people_also_ask, local_results, knowledge_graph, top_stories, inline_videos, shopping_results, related_searches, pagination |
google_news | Google News | news_results : titre, lien, source, date, snippet, vignette |
google_images | Google Images | images_results : URL d'origine et taille, vignette, page source |
google_maps | Google Maps | local_results : nom, adresse, téléphone, site web, note, avis, catégorie, horaires, coordonnées |
google_shopping | Google Shopping | shopping_results : titre, prix, prix extrait, devise, marchand, livraison, note |
bing | Bing | organic_results, related_searches |
Consulter vos crédits
GET/api/v1/credits
Renvoie les crédits restants sur votre compte, les crédits utilisés depuis minuit UTC et le nombre de recherches que votre compte peut lancer simultanément. Cet appel est gratuit. Les valeurs ci-dessous sont des exemples.
Authentification : clé API dans l'en-tête Authorization: Bearer API_KEY.
Réponse 200
{
"credits_remaining": 84210,
"credits_used_today": 1290,
"concurrency_limit": 10
}Exemples de code
curl -s "https://serpcrypto.com/api/v1/credits" \
-H "Authorization: Bearer $SERPCRYPTO_API_KEY"import os
import requests
r = requests.get(
"https://serpcrypto.com/api/v1/credits",
headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
timeout=30,
)
r.raise_for_status()
print(r.json()["credits_remaining"])const res = await fetch("https://serpcrypto.com/api/v1/credits", {
headers: { Authorization: "Bearer " + process.env.SERPCRYPTO_API_KEY },
});
const { credits_remaining } = await res.json();
console.log(credits_remaining);Quelles erreurs l'API peut-elle renvoyer ?
Chaque erreur a pour corps {"error": {"code": "…", "message": "…"}}. La page des erreurs explique chacune et indique le code de nouvelle tentative.
| HTTP | code | Quand cela se produit | Facturé |
|---|---|---|---|
| 400 | invalid_parameter | Un paramètre obligatoire manque ou une valeur sort de la liste autorisée | Non |
| 401 | invalid_api_key | La clé est absente, erronée ou révoquée | Non |
| 402 | insufficient_credits | Votre compte n'a plus de crédits | Non |
| 429 | concurrency_limit | Trop de recherches sont en cours simultanément sur votre compte | Non |
| 502 | search_failed | L'engine ou la collecte a échoué pour cette requête ; réessayez | Non |
| 504 | search_timeout | Aucune réponse dans les délais ; réessayez | Non |
Qu'est-ce qui est facturé, exactement ?
- Une recherche réussie = un crédit, sur chaque engine, y compris Google Maps et Google Shopping.
- Chaque page de résultats est une recherche. 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.
- Les erreurs sont gratuites : toute réponse avec un statut HTTP autre que 200 n'utilise aucun crédit.
- Consulter vos crédits est gratuit.
Les crédits de recherche prépayés n'expirent jamais : les requêtes inutilisées restent sur votre compte jusqu'à ce que vous les utilisiez. Les packs vont de 7,50 $US pour 10 000 recherches à 0,30 $US/1K requêtes sur le plus grand ; voir la tarification.
Comment dois-je encoder la requête ?
Envoyez q encodé en URL, comme toute valeur de query string : un espace devient %20 ou +, et les lettres accentuées sont encodées en UTF-8. curl le fait avec --data-urlencode, Python requests et httpx le font avec params=, et Node.js avec URLSearchParams.
Écrivez la requête exactement comme une personne la taperait dans le champ de recherche. Les guillemets, le signe moins ou site: restent dans q ; l'engine décide comment les appliquer, comme il le ferait pour un visiteur.
L'API est-elle versionnée ?
Oui. La version fait partie du chemin : /api/v1/. De nouveaux champs ou blocs peuvent apparaître dans les réponses de la version 1, votre code doit donc ignorer les clés qu'il ne connaît pas. La suppression ou le renommage d'un champ s'accompagnerait d'une nouvelle version dans le chemin, pas d'une modification de v1.
Questions sur la référence API
Puis-je envoyer une requête POST avec un corps JSON ?
Pas en version 1 : les deux endpoints prennent des requêtes GET avec les paramètres dans la query string. Chaque appel reste ainsi facile à reproduire avec curl ou un navigateur, et facile à journaliser sans le corps.
Combien de résultats renvoie une recherche ?
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 collecter 30 résultats, demandez page=1, page=2 et page=3 : trois requêtes, trois crédits.
Que se passe-t-il quand mes crédits sont épuisés ?
La recherche suivante renvoie 402 insufficient_credits et ne consomme rien. Achetez un autre pack depuis votre solde sur la page de tarifs ; votre clé continue de fonctionner et les recherches reprennent aussitôt.
Puis-je utiliser la même clé depuis plusieurs serveurs ?
Oui. Une clé n'est pas liée à une adresse IP. Ce qui est limité, c'est le nombre de recherches simultanées sur le compte : concurrency_limit dans GET /credits donne le chiffre.