Sans KYC — pas de pièce d'identité, pas de selfie, pas de documents. Payer en crypto : BTC, USDT, USDC, ETH, SOL, LTC
Langue: Français
Obtenir une clé API

Docs · Référence API · version 1

Référence SERP API : GET /search et GET /credits

Chaque paramètre, valeur par défaut et code d'erreur de l'API SerpCrypto, version 1. URL de base : https://serpcrypto.com/api/v1. Toutes les requêtes utilisent HTTPS ; toutes les réponses sont en JSON en UTF-8.

Dernière mise à jour: · 7 min de lecture

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

NomEmplacementTypeObligatoireDescription
qquerystringOuiLa 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.
enginequerystringNongoogle (par défaut), google_news, google_images, google_maps, google_shopping ou bing.
glquerystringNonPays des résultats : code ISO 3166-1 alpha-2 en minuscules, tel que us, de ou br. Par défaut us.
hlquerystringNonLangue de l'interface, telle que en, de ou pt-BR. Par défaut en.
locationquerystringNonLieu au niveau de la ville, écrit City, Region, Country, tel que Austin, Texas, United States. Voir locations.
google_domainquerystringNonDomaine Google sur lequel chercher, tel que google.de. Par défaut : le domaine du pays gl. Ignoré lorsque engine=bing.
devicequerystringNondesktop (par défaut) ou mobile.
pagequeryintegerNonPage de résultats de 1 (par défaut) à 10. Chaque page est une recherche distincte et utilise 1 crédit.
safequerystringNonactive filtre les résultats explicites ; off (par défaut) ne le fait pas.
periodquerystringNonUniquement 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_keyquerystringNonVotre 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
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=desktop
Python
import 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"])
Node.js
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.

engineSourceBlocs principaux de la réponse
googleGoogle Searchai_overview, organic_results, ads, people_also_ask, local_results, knowledge_graph, top_stories, inline_videos, shopping_results, related_searches, pagination
google_newsGoogle Newsnews_results : titre, lien, source, date, snippet, vignette
google_imagesGoogle Imagesimages_results : URL d'origine et taille, vignette, page source
google_mapsGoogle Mapslocal_results : nom, adresse, téléphone, site web, note, avis, catégorie, horaires, coordonnées
google_shoppingGoogle Shoppingshopping_results : titre, prix, prix extrait, devise, marchand, livraison, note
bingBingorganic_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
curl -s "https://serpcrypto.com/api/v1/credits" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY"
Python
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"])
Node.js
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.

HTTPcodeQuand cela se produitFacturé
400invalid_parameterUn paramètre obligatoire manque ou une valeur sort de la liste autoriséeNon
401invalid_api_keyLa clé est absente, erronée ou révoquéeNon
402insufficient_creditsVotre compte n'a plus de créditsNon
429concurrency_limitTrop de recherches sont en cours simultanément sur votre compteNon
502search_failedL'engine ou la collecte a échoué pour cette requête ; réessayezNon
504search_timeoutAucune réponse dans les délais ; réessayezNon

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.

À partir de 0,30 $US/1K requêtes · sans KYC

Obtenir une clé API