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

Guide · Python · code testé · en vigueur en octobre 2026

Comment obtenir les résultats de recherche Google en Python (2026)

Récupérer google.com avec requests n'est plus une option depuis 2025. Ce guide explique pourquoi, puis fournit du code Python court et vérifié syntaxiquement qui obtient les mêmes résultats en JSON via une API SERP.

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

Réponse rapide

Comment obtenir les résultats de recherche Google en Python en 2026 ?

Appelez une API SERP depuis Python et lisez le JSON renvoyé ; ne récupérez pas google.com vous-même, car Google exige JavaScript depuis le 17 janvier 2025 et son robots.txt interdit /search. Avec SerpCrypto, une requests.get à https://serpcrypto.com/api/v1/search renvoie les résultats organiques, People Also Ask et plus encore, pour un crédit par recherche à partir de 0,30 $US/1K requêtes en octobre 2026. Sans KYC ; payez en crypto.

Ce qu'il vous faut

Python3.9 ou plus récent
Paquetsrequests pour les bases ; pandas pour les tableaux ; httpx pour l'asynchrone
Clé APIDepuis votre tableau de bord SerpCrypto, stockée dans la variable d'environnement SERPCRYPTO_API_KEY
EndpointGET https://serpcrypto.com/api/v1/search
Coût1 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
Plus petit pack10 000 recherches pour 7,50 $US ; les crédits n'expirent jamais

Pourquoi requests.get sur google.com ne fonctionne-t-il plus ?

Parce que les résultats ne figurent plus dans le HTML qu'un client HTTP simple reçoit. Le 17 janvier 2025, Google a commencé à exiger JavaScript pour la recherche ; il a déclaré que JavaScript l'aide à protéger ses services contre les bots et que moins de 0,1 % des recherches provenaient d'utilisateurs ayant désactivé JavaScript, comme l'a rapporté TechCrunch.

Le robots.txt de Google, consulté le 22 octobre 2026, liste également Disallow: /search pour tous les user agents. Une API SERP se charge d'exécuter la recherche et d'analyser la page, et votre code Python ne manipule que du JSON. C'est l'approche utilisée dans la suite de ce guide.

Comment effectuer la première requête ?

Installez requests, placez votre clé dans une variable d'environnement et envoyez la requête avec un pays et une langue. La réponse est un dictionnaire avec une clé par bloc de la page de résultats ; organic_results contient les liens classés.

Gardez la clé hors de votre code source. Sur macOS et Linux, export SERPCRYPTO_API_KEY=... dans le shell ; sur Windows PowerShell, $env:SERPCRYPTO_API_KEY="...".

Première requête avec requests
import os

import requests

API = "https://serpcrypto.com/api/v1/search"
KEY = os.environ["SERPCRYPTO_API_KEY"]

resp = requests.get(
    API,
    headers={"Authorization": "Bearer " + KEY},
    params={"engine": "google", "q": "best hiking boots", "gl": "us", "hl": "en"},
    timeout=60,
)
resp.raise_for_status()
results = resp.json()

for item in results.get("organic_results", []):
    print(item["position"], item["title"])
    print("   ", item["link"])

for q in results.get("people_also_ask", []):
    print("PAA:", q["question"])

Comment convertir les résultats en DataFrame pandas ?

Créez une ligne par résultat organique et conservez la requête à côté. Un DataFrame facilite le tri, le filtrage par domaine ou l'export vers CSV et Excel. Les champs manquants, comme date sur la plupart des résultats, deviennent des cellules vides au lieu d'erreurs.

Plusieurs requêtes dans un seul DataFrame
import os
from urllib.parse import urlparse

import pandas as pd
import requests

API = "https://serpcrypto.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]}


def organic_rows(query, gl="us", hl="en"):
    params = {"engine": "google", "q": query, "gl": gl, "hl": hl}
    resp = requests.get(API, headers=HEADERS, params=params, timeout=60)
    resp.raise_for_status()
    for r in resp.json().get("organic_results", []):
        yield {
            "query": query,
            "position": r.get("position"),
            "title": r.get("title"),
            "domain": urlparse(r.get("link", "")).netloc,
            "link": r.get("link"),
            "snippet": r.get("snippet"),
        }


queries = ["crm for small business", "invoice software", "time tracking app"]
df = pd.DataFrame([row for q in queries for row in organic_rows(q)])
print(df.groupby("domain").size().sort_values(ascending=False).head(10))
df.to_csv("serp_results.csv", index=False)

Comment exécuter de nombreuses recherches en même temps ?

Utilisez httpx avec asyncio et limitez le nombre de requêtes en cours avec un sémaphore. Votre compte a une limite de concurrence, affichée dans le dashboard ; rester en dessous évite les erreurs 429. Commencez par un petit nombre, par exemple 5, puis réglez-le sur la limite indiquée par votre dashboard.

Recherches asynchrones avec httpx et un sémaphore
import asyncio
import os

import httpx

API = "https://serpcrypto.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]}
LIMIT = asyncio.Semaphore(5)


async def search(client, query):
    async with LIMIT:
        resp = await client.get(API, params={"engine": "google", "q": query, "gl": "us", "hl": "en"})
        resp.raise_for_status()
        data = resp.json()
        top = data.get("organic_results", [])[:3]
        return query, [r["link"] for r in top]


async def main(queries):
    async with httpx.AsyncClient(headers=HEADERS, timeout=60) as client:
        for query, links in await asyncio.gather(*(search(client, q) for q in queries)):
            print(query, links)


if __name__ == "__main__":
    asyncio.run(main(["python web framework", "python orm", "python task queue"]))

Comment obtenir plus de 10 résultats et les enregistrer ?

Demandez les pages suivantes avec page=2, page=3, etc., jusqu'à page=10. Chaque page correspond à une requête et à un crédit, car Google sert environ 10 résultats organiques par page depuis qu'il ne respecte plus num=100 en septembre 2025.

Enregistrez chaque réponse brute sur une ligne d'un fichier JSONL. Le JSON brut conserve tous les blocs, ce qui vous permet de répondre à de nouvelles questions plus tard sans repayer les mêmes requêtes.

Pages 1 à 3 enregistrées en JSONL
import json
import os

import requests

API = "https://serpcrypto.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]}


def fetch_pages(query, pages=3, path="serp.jsonl"):
    with open(path, "a", encoding="utf-8") as out:
        for page in range(1, pages + 1):
            params = {"engine": "google", "q": query, "gl": "us", "hl": "en", "page": page}
            resp = requests.get(API, headers=HEADERS, params=params, timeout=60)
            resp.raise_for_status()
            data = resp.json()
            out.write(json.dumps(data, ensure_ascii=False) + "\n")
            if not data.get("organic_results"):
                break


fetch_pages("electric cargo bike", pages=3)

Combien coûte l'exécution de ce code ?

Chaque appel dans ces exemples correspond à une requête. Le premier exemple coûte un crédit, l'exemple DataFrame trois, et l'exemple JSONL jusqu'à trois. Une requête échouée n'est pas facturée.

10 000 recherches coûtent 7,50 $US et 100 000 recherches coûtent 56,25 $US, en octobre 2026 ; le tarif descend à 0,30 $US/1K requêtes à 5 000 000 de requêtes. Les crédits n'expirent jamais. Vous payez en BTC, USDT, USDC, ETH, SOL, LTC depuis une recharge de 25 $US, sans envoi de pièce d'identité. Voir tarifs.

Résultats Google en Python : questions fréquentes

Peut-on utiliser BeautifulSoup sur les pages de résultats Google ?

Pas de manière fiable. Google exige JavaScript depuis janvier 2025, donc le HTML reçu par un client simple ne contient pas les résultats, et le robots.txt de Google interdit /search. Une API SERP renvoie à la place les champs parsés en JSON.

Existe-t-il une bibliothèque Python officielle pour SerpCrypto ?

Non. L'API est un simple endpoint HTTPS, donc requests ou httpx suffit. Les exemples de cette page et de la page de doc Python sont du code à copier-coller, pas un package publié.

Comment obtenir des résultats pour un autre pays ?

Définissez gl sur le code pays et hl sur la langue, par exemple gl=fr et hl=fr pour la France. Ajoutez location pour une ville. La page des localisations liste les codes courants.

Comment gérer les erreurs et les retries ?

Appelez raise_for_status(), puis réessayez les réponses 429, 502 et 504 après un délai croissant. Les requêtes échouées ne sont pas facturées. La page des erreurs contient une fonction de retry complète.

Peut-on obtenir des résultats Bing avec le même code ?

Oui. Remplacez engine par bing ; la réponse garde la même structure, avec organic_results et related_searches.

Sources (3)
  1. Google commence à exiger JavaScript pour Google Search — TechCrunch (2025-01-17)
  2. robots.txt de google.com — Google (read 2026-10-22)
  3. Google contraint les trackers de positions à 500 à 1 000 requêtes par mot-clé — PPC Land (2026-08-27)

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

Obtenir une clé API