Custom Search JSON API

Alternative à Google Custom Search JSON API : migrez avant le 1er janvier 2027

Google a fermé la Custom Search JSON API aux nouveaux clients et l'arrête pour tous le 1er janvier 2027. Semscraper collecte la vraie page de résultats Google, rendue dans un navigateur, jusqu'à 10 pages par mot-clé, soit environ 100 résultats selon la requête, au crédit et sans abonnement.

  • Vraie SERP Google, pas un index réduit
  • Jusqu'à 10 pages par mot-clé
  • 1 000 recherches d'une page pour 0,30 €
  • 1 000 SERP gratuites
  • Pas de carte de crédit

Ce que Google a annoncé, et quand

D'après la documentation de Google (developers.google.com/custom-search/v1/overview et l'aide Programmable Search Engine), consultée le 10 octobre 2026.

Depuis le 20 janvier 2026

Les nouveaux moteurs Programmable Search Engine sont limités à 50 domaines choisis : l'option « rechercher sur tout le Web » n'est plus proposée. Les moteurs existants qui l'utilisent la gardent jusqu'au 1er janvier 2027.

Fermée aux nouveaux clients

Un nouveau projet ne peut plus activer la Custom Search JSON API. Pour chercher sur 50 domaines au plus, Google oriente vers Vertex AI Search ; la recherche sur tout le Web se demande à Google.

1er janvier 2027

Fin de la Custom Search JSON API pour les clients existants. Toute application qui l'appelle encore doit avoir migré.

Pour quels usages Semscraper convient

Semscraper n'est pas une copie conforme de Custom Search : c'est une API de collecte de la page Google telle qu'un internaute la voit. Elle remplace bien certains usages, pas tous.

Oui : suivre Google

Suivi de positions, veille concurrentielle, études de SERP, AI Overviews : vous obtenez les résultats réels de google.fr, google.com ou d'un autre pays, ville et appareil compris.

Oui : alimenter des outils et des agents

Datasets, enrichissement, agents et RAG qui ont besoin de ce que Google affiche vraiment. Le traitement est asynchrone : comptez une vingtaine de secondes de collecte par recherche, pas une réponse instantanée.

Non : la recherche interne de votre site

Une barre de recherche qui doit répondre en une fraction de seconde sur vos propres pages relève d'un moteur de recherche de site, ou de Vertex AI Search que Google propose pour 50 domaines.

Custom Search JSON API ou Semscraper : les différences

CritèreCustom Search JSON APISemscraper
Source des résultatsVotre moteur Programmable Search Engine. Même réglé sur tout le Web, Google précise qu'il ne couvre qu'une partie de son index et met en avant vos propres sites.La page de résultats Google réelle, rendue dans un vrai navigateur.
ContenuUne liste de résultats web, sans les fonctionnalités de la recherche Google (Oneboxes, recherche universelle).Chaque bloc de la page : résultats naturels, annonces, pack local, People Also Ask, AI Overviews avec leurs sources, et plus.
Nombre de résultats10 par requête, 100 au maximum en paginant (start + num ne peut pas dépasser 100).Jusqu'à 10 pages Google en un seul appel, soit environ 100 résultats selon la requête.
Pays, langue, ville, appareilgl favorise les résultats d'un pays, hl règle la langue de l'interface, lr et cr filtrent les documents.Version de Google (pays et langue), ville ou coordonnées GPS, desktop ou mobile.
FonctionnementSynchrone : la réponse arrive dans l'appel.Asynchrone : vous créez les recherches (jusqu'à 1 000 par appel), puis vous récupérez les résultats par identifiant ou sur une URL de callback. Une vingtaine de secondes de collecte en médiane pour une page, une cinquantaine pour 10, plus l'attente dans la file de votre compte (mesure sur 12 millions de SERP, dont 5,3 millions à une page et 260 000 à 10 pages, du 12 septembre au 10 octobre 2026).
Prix100 requêtes gratuites par jour, puis 5 $ les 1 000, dans la limite de 10 000 par jour.0,30 € les 1 000 recherches d'une page, 2,10 € les 1 000 recherches de 10 pages. Pas d'abonnement ni de plafond quotidien, solde sans expiration.
Recherche sur des domaines définisOui, c'est désormais le seul mode des nouveaux moteurs (50 domaines).Pas de liste de domaines enregistrée : l'opérateur site: dans le mot-clé limite une recherche à un domaine.
Recherche d'imagesOui (searchType=image).Non. Seul le bloc Images, quand Google l'affiche dans la page de résultats, est renvoyé.

Adapter les paramètres

Les paramètres ne sont pas interchangeables : voici comment adapter vos appels. Les opérateurs Google passent tels quels dans le mot-clé.

Custom SearchSemscraper
qkeyword
gllocation, la version de Google, qui n'est pas un code pays : gl=fr devient location=fr (google.fr), gl=us devient location=en (google.com)
hllanguage, qui forme une paire valide avec location : fr/fr, en/en, de/de...
num, startdepth, de 1 à 10 pages Google, toutes renvoyées par le même appel
siteSearchsite:exemple.fr dans le mot-clé
exactTermsDes guillemets dans le mot-clé
excludeTerms-mot dans le mot-clé
fileTypefiletype:pdf dans le mot-clé
lr, crPas d'équivalent direct : choisissez la version de Google et la langue
searchType=imagePas d'équivalent
key, cxUne seule clé API, envoyée en en-tête Authorization: Bearer

Migrer un appel, pas à pas

Le même besoin en Python : les 10 premiers résultats naturels d'une requête sur google.fr. La différence principale est le passage en deux temps, création puis récupération.

Avant : Custom Search JSON API
import requests

r = requests.get("https://www.googleapis.com/customsearch/v1", params={
    "key": "GOOGLE_API_KEY",
    "cx": "SEARCH_ENGINE_ID",
    "q": "chaussure running",
    "gl": "fr",
    "hl": "fr",
    "num": 10,
})
for item in r.json().get("items", []):
    print(item["link"], item["title"], item["snippet"])
Après : Semscraper
import time
import requests

API = "https://api.semscraper.com/v1/serp"
HEADERS = {"Authorization": "Bearer API_KEY"}

# 1. create the search (up to 1,000 keywords per call)
r = requests.post(API, headers=HEADERS, timeout=60, json=[{
    "search_engine": "google_search",
    "keyword": "chaussure running",
    "location": "fr",
    "language": "fr",
    "device": "desktop",
    "depth": 1,
}])
r.raise_for_status()
ids = [row["id"] for row in r.json()["data"]]

# 2. fetch the results once ready (about 20 s of collection for a depth-1 search,
#    plus queue time), 10 minutes at most
deadline = time.time() + 600
while ids and time.time() < deadline:
    time.sleep(10)
    r = requests.get(API, headers=HEADERS, timeout=60,
                     params={"ids": ",".join(ids[:100]), "output": "json"})  # 100 IDs per call
    r.raise_for_status()
    for row in r.json()["data"]:
        if row["status"] != "done":
            continue
        ids.remove(row["id"])
        for block in row["results"]:
            if block["type"] == "organic":
                for item in block["items"]:
                    print(item["url"], item["title"], item["description"])

if ids:
    print("Still pending, fetch them later by ID:", ids)

Le champ link devient url, snippet devient description. Chaque résultat porte en plus sa position dans son bloc (rank_type), sa position sur la page (rank_serp), sa page Google et sa position en pixels. Pour des milliers de mots-clés : créez-les par lots de 1 000, récupérez les résultats par lots de 100 identifiants, ou recevez-les sur une URL de callback. Voir la Bulk SERP API.

Basculer en quatre étapes

Une migration se prépare : comptez quelques jours de tests avant de couper l'ancienne API.

1. Tester

Lancez vos requêtes représentatives avec les 1 000 SERP offertes à l'inscription.

2. Adapter

Paramètres (gl devient location), passage à l'asynchrone, et champs de réponse (link devient url, snippet devient description).

3. Comparer

Pertinence, couverture des résultats, délais et consommation, sur un échantillon de vos vraies requêtes.

4. Basculer

Passez votre application sur Semscraper une fois les résultats validés, bien avant le 1er janvier 2027.

Le coût, à volume égal

Prix publics : Google relevé le 10 octobre 2026, Semscraper au tarif de base, avant remise sur les recharges.

BesoinCustom Search JSON APISemscraper
1 000 mots-clés, 1 page (environ 10 résultats)5 $ (1 000 requêtes payantes, hors quota gratuit du jour)0,30 €
1 000 mots-clés, 10 pages (environ 100 résultats)50 $ (10 requêtes payantes par mot-clé, hors quota gratuit du jour)2,10 €
Plus de 10 000 requêtes par jourImpossible : plafond de 10 000 par jourAucun plafond quotidien

Si les 100 requêtes gratuites du jour n'ont pas encore servi, comptez 4,50 $ et 49,50 $. La Custom Search JSON API n'est plus accessible aux nouveaux clients : ces prix ne concernent que les comptes existants, jusqu'au 1er janvier 2027. Tarifs détaillés de Semscraper.

FAQ

Questions fréquentes

Quand la Custom Search JSON API s'arrête-t-elle ?
Elle est fermée aux nouveaux clients, et Google indique que les clients existants ont jusqu'au 1er janvier 2027 pour passer à une autre solution.
Semscraper renvoie-t-il les mêmes résultats que Custom Search ?
Non, et c'est souvent l'intérêt : Custom Search interroge votre moteur Programmable Search Engine, qui ne couvre qu'une partie de l'index Google. Semscraper renvoie la page de résultats Google réelle, avec tous ses blocs, pour le pays, la langue, la ville et l'appareil choisis.
Puis-je limiter la recherche à mes domaines ?
Pour un domaine, ajoutez site:votredomaine.fr au mot-clé. Il n'y a pas de liste de domaines enregistrée comme dans un moteur Programmable Search Engine. Pour une recherche interne sur vos propres sites, un moteur de recherche de site ou Vertex AI Search convient mieux.
La réponse est-elle immédiate ?
Non. Chaque page est rendue dans un vrai navigateur : comptez une vingtaine de secondes de collecte en médiane pour une page, une cinquantaine pour 10 pages. Temps de collecte médian mesuré sur 12 millions de SERP (dont 5,3 millions à une page et 260 000 à 10 pages) du 12 septembre au 10 octobre 2026 ; s'y ajoute l'attente dans la file de votre compte, qui dépend du volume envoyé. Vous récupérez le résultat par son identifiant, ou nous l'envoyons sur votre URL de callback.
Quels sont les tarifs après la migration ?
Il n'y a ni abonnement ni frais d'accès : vous payez chaque recherche créée, 0,30 € les 1 000 pour la première page. La récupération des résultats est gratuite. 1 000 SERP sont offertes à l'inscription pour tester vos requêtes.

Testez vos requêtes avant l'échéance

1 000 SERP offertes, sans carte bancaire.