En bref : l'API Custom Search JSON de Google est fermée aux nouveaux clients et s'arrête pour les utilisateurs existants le 1er janvier 2027. Si votre app ou pipeline envoie une requête et lit des résultats Google en JSON sur le web entier, Google Search sur Piloterr garde le même schéma : requête en entrée, SERP structurée en sortie. La plupart des filtres gl / hl / lr se mappent 1:1. Pour du SERP à volume uniquement, la même équipe propose Autom.dev, une API SERP dédiée avec le même style de paramètres.
La migration tient en quelques lignes, pas en une réécriture.
Ce qui s'arrête
Google indique sur la page overview de Custom Search JSON API :
- L'API n'est plus disponible pour les nouveaux clients.
- Les clients existants peuvent l'utiliser jusqu'au 1er janvier 2027.
- Jusque-là, le pricing reste le même : 100 requêtes gratuites par jour, puis 5 $ pour 1 000 requêtes, plafonné à 10k requêtes par jour.
Pour chercher jusqu'à environ 50 domaines, Google oriente vers Vertex AI Search (parfois présenté comme Agent Search). Pour des résultats sur le web entier, il n'y a pas de produit Google self-serve. Google propose seulement un formulaire d'intérêt.
Source : Google for Developers: Custom Search JSON API.
Choisir le bon remplacement selon ce que vous cherchez vraiment
Custom Search couvrait plusieurs jobs. Ils n'ont pas tous le même successeur.
| Ce pour quoi vous utilisez Custom Search | Quoi utiliser à la place |
|---|---|
| Une barre de recherche sur votre propre site | Programmable Search Element de Google, ou un outil de site search (Algolia, Typesense, Meilisearch) |
| Un ensemble de domaines connus ou votre corpus dans Google Cloud | Google Agent Search / Vertex AI Search (la voie « ~50 domaines ») |
| Résultats web entiers en JSON pour une app, un agent ou un pipeline | Google Search sur Piloterr, ou Autom.dev si vous n'avez besoin que du SERP |
| Réponses générées avec citations (Google AI Mode) | Google AI Mode, éventuellement couplé à la recherche organique |
| Travail SEO SERP poussé (ads, AI Overviews, plusieurs pages) | Google Search avec pagination page, plus Images / Autocomplete si besoin |
| Même schéma de requête sur Bing, Brave, Yahoo, DuckDuckGo (ou failover multi-moteurs) | Autom.dev : Google plus Bing, Brave, Yahoo, DuckDuckGo, Baidu sur une stack SERP |
Le reste de ce guide concerne le cas JSON web entier : vous appelez aujourd'hui customsearch/v1 avec « Search the entire web » activé. Les exemples de code utilisent Piloterr ; Autom.dev suit la même logique avec un autre host quand le SERP suffit.
Piloterr ou Autom.dev ?
Autom.dev est notre sous-produit orienté SERP. Même famille que Piloterr, conçu pour les équipes dont le job, c'est les résultats de recherche : suivi de positions SEO, agents qui n'ont besoin que du JSON SERP, multi-moteurs à volume. La forme d'endpoint est familière : https://api.autom.dev/v1/google/search, x-api-key, query / gl / hl / tbs / page. Voir la doc Autom Google Search. Le pricing est spécialisé SERP (crédits à l'usage, pas de plafond type CSE à 10k/jour).
Choisissez Piloterr pour rester dans la famille Google : Google Search, Images, Autocomplete, AI Mode.
Choisissez Autom.dev pour Google et d'autres moteurs (Bing, Brave, Yahoo, DuckDuckGo, Baidu) sur un seul compte, ou un pricing SERP only à volume.
Même équipe. Même schéma de migration depuis Custom Search. Surface différente selon que vous restez Google-only ou multi-moteurs.
Ce que vous obtenez avec Google Search Piloterr
Le même contrat que vous avez déjà codé : envoyer une requête, recevoir des résultats classés en JSON. Comparé à Custom Search :
| Custom Search JSON API | Google Search Piloterr | |
|---|---|---|
| Disponibilité | Fermée aux nouveaux ; fin le 1er janv. 2027 | Ouverte |
| Setup | Clé API + Programmable Search Engine (cx) | Une x-api-key |
| Modèle de coût | 100 gratuites/jour, puis 5 $ / 1k, plafond 10k/jour | 1 crédit par requête |
| Plafond journalier | 10k requêtes | Plans à crédits, pas de plafond type CSE à 10k/jour |
| Pays / langue | gl, lr, hl | Mêmes noms : gl, hl, lr, plus cr |
| Résultats locaux | Niveau pays | Pays + location / uule optionnel (ville) |
| Filtre site | siteSearch / siteSearchFilter | Opérateurs Google dans query (site:, -site:, …) |
| Filtre date | dateRestrict (d7, w1, …) | tbs (qdr:d, qdr:w, qdr:m, qdr:y) |
| Pagination | Limitée | page pour les pages suivantes |
| Payload | Items organiques + meta | Résultats organiques, knowledge graph, related searches, pagination |
| Auth | Paramètre key | Header x-api-key |
Docs : Google Search API · Référence API. GET et POST sont tous les deux supportés.
Comment passer de Custom Search à Piloterr
Vous envoyez toujours une requête et lisez du JSON. Après avoir remapé quelques champs, le code qui consomme titres et liens continue de fonctionner.
- Créez un compte sur app.piloterr.com et copiez votre clé API.
- Mappez les paramètres de requête et les champs de réponse avec les tableaux ci-dessous.
- Pointez l'appel HTTP vers
https://api.piloterr.com/v2/google/search.
Mapping des paramètres de requête
| Paramètre Piloterr | Rôle | Équivalent Custom Search |
|---|---|---|
query | Chaîne de recherche (requis). Opérateurs Google supportés | q |
gl | Biais pays (us, fr, uk, …) | gl |
hl | Langue UI / résultats | hl |
lr | Restreindre à une/des langue(s), ex. lang_fr | lr |
cr | Restreindre à un/des pays, ex. countryFR | Plus proche : filtres pays / config moteur |
tbs | Récence : qdr:h, qdr:d, qdr:w, qdr:m, qdr:y | dateRestrict |
location / uule | SERP au niveau ville | Pas d'équivalent CSE direct |
google_domain | google.com, google.fr, … | Locale / domaine du moteur |
page | Numéro de page de résultats | Partiel / limité en CSE |
safe | SafeSearch active / off | safe |
Header x-api-key | Auth | key |
| Non requis | cx (ID du moteur) |
L'include/exclude siteSearch passe dans la requête : site:example.com coffee ou -site:pinterest.com coffee.
Mapping des champs de réponse
| Custom Search | Google Search Piloterr |
|---|---|
items[].title | organic_results[].title |
items[].link | organic_results[].link |
items[].snippet | organic_results[].snippet |
items[].displayLink | organic_results[].domain |
items[].formattedUrl | organic_results[].displayed_link |
searchInformation.totalResults | search_information.total_results |
organic_results[].position, knowledge_graph, related_searches, pagination |
Python : avant et après
Avant : Custom Search JSON API :
import os
import requests
resp = requests.get(
"https://www.googleapis.com/customsearch/v1",
params={
"key": os.environ["GOOGLE_API_KEY"],
"cx": os.environ["SEARCH_ENGINE_ID"],
"q": "best coffee shops",
"gl": "fr",
"hl": "fr",
"lr": "lang_fr",
"num": 10,
},
timeout=30,
)
for item in resp.json().get("items", []):
print(item["title"], item["link"])
Après : Google Search Piloterr :
import os
import requests
resp = requests.post(
"https://api.piloterr.com/v2/google/search",
headers={"x-api-key": os.environ["PILOTERR_API_KEY"]},
json={
"query": "best coffee shops",
"gl": "fr",
"hl": "fr",
"lr": "lang_fr",
},
timeout=30,
)
for result in resp.json().get("organic_results", []):
print(result["position"], result["title"], result["link"])
Ce qui change vraiment :
- L'URL de l'endpoint
- L'auth passe de
key(+cx) au headerx-api-key q→queryitems→organic_results(des champs commetitleetlinkrestent familiers)gl/hl/lrgardent les mêmes valeurs
GET fonctionne de la même façon si vous préférez la query string à un body JSON.
Sur Autom.dev, le swap est le même principe : droppez cx, envoyez query + gl / hl, authentifiez avec x-api-key, et pointez vers https://api.autom.dev/v1/google/search (library). Les champs de réponse restent dans le style organic_results.
Au-delà de Google : Bing, Brave, Yahoo, DuckDuckGo
Custom Search était Google-only. Beaucoup de pipelines veulent aujourd'hui un second index pour la redondance, la couverture géo ou le SEO multi-moteurs. Sur Autom.dev, le même schéma requête → JSON marche sur plusieurs moteurs :
- Bing Search
- Brave Search
- Yahoo Search
- DuckDuckGo Search
- Baidu Search quand vous visez ce marché
- Ou
/v1/search: essaie Google, puis Brave, Bing, DuckDuckGo, Yahoo, Baidu jusqu'à des résultats organiques
Sur Piloterr, restez côté Google avec AI Mode, Images et Autocomplete sur la même clé API que Google Search.
Migrer avant le 1er janvier 2027
Custom Search JSON API s'arrête début 2027. Google n'offre pas de remplaçant self-serve JSON pour le web entier. Si votre code fait déjà « requête → résultats JSON », vous pouvez passer à Google Search (ou Autom.dev pour du SERP only / multi-moteurs) en changeant l'endpoint, en abandonnant cx, et en renommant quelques champs.
Besoin d'estimer les crédits ou de valider un mix de requêtes prod ? Partez des docs Google Search, comparez avec le pricing Autom.dev, ou ouvrez une conversation depuis le site.
FAQ
Quand l'API Custom Search JSON de Google s'arrête-t-elle ?
Google l'arrête le 1er janvier 2027. Elle est déjà fermée aux nouveaux clients ; les clients existants peuvent l'utiliser jusqu'à cette date.
Existe-t-il une API Google officielle pour le web entier ?
Pas en self-serve. Les options documentées couvrent la recherche de site / domaines limités (Agent Search / Vertex AI Search) et le grounding entreprise. Pour des résultats programmatiques sur le web entier, Google renvoie vers un formulaire d'intérêt.
Quelle est la meilleure alternative à Custom Search JSON API ?
Ça dépend du job. Site search → un produit de site search. Jusqu'à ~50 domaines dans Google Cloud → Agent Search / Vertex AI Search. JSON web entier pour apps et pipelines → une API SERP comme Google Search Piloterr. SERP only à volume (y compris d'autres moteurs que Google) → Autom.dev.
Piloterr ou Autom.dev : lequel ?
Même société. Piloterr couvre la famille SERP Google (Search, Images, Autocomplete, AI Mode). Autom.dev est le sous-produit SERP pour Google plus Bing, Brave, Yahoo, DuckDuckGo et Baidu, avec un pricing volume. Si vous n'avez besoin que de résultats Google en JSON, les deux conviennent. Si vous voulez d'autres moteurs ou un failover multi-moteurs, partez sur Autom.dev.
Ai-je encore besoin d'un Programmable Search Engine (cx) ?
Non. Google Search Piloterr et Autom.dev ne demandent que votre clé API et un query.
Google Search Piloterr gère-t-il la pagination ?
Oui. Passez page (1, 2, …). Custom Search était bien plus limité ; les jobs SERP multi-pages sont une raison fréquente de quitter CSE tôt.
Comment filtrer par date après migration ?
Remplacez dateRestrict par tbs : dernier jour qdr:d, semaine qdr:w, mois qdr:m, année qdr:y. Les plages calendaires exactes de CSE ne se mappent pas 1:1 ; les fenêtres relatives couvrent la plupart des cas de monitoring.