Zonder KYC — geen ID, geen selfie, geen documenten. Betalen met crypto: BTC, USDT, USDC, ETH, SOL, LTC
Taal: Nederlands
API-sleutel aanvragen

Gids · Python · geteste code · per oktober 2026

Hoe je Google-zoekresultaten in Python krijgt (2026)

google.com ophalen met requests is sinds 2025 geen optie meer. Deze gids legt uit waarom, en geeft daarna korte, op syntax gecontroleerde Python die dezelfde resultaten als JSON krijgt via een SERP-API.

Laatst bijgewerkt: · 5 min leestijd

Snel antwoord

Hoe krijg ik in 2026 Google-zoekresultaten in Python?

Roep een SERP-API aan vanuit Python en lees de JSON die het teruggeeft; haal google.com niet zelf op, want Google vereist sinds 17 januari 2025 JavaScript en zijn robots.txt staat /search niet toe. Met SerpCrypto geeft één requests.get naar https://serpcrypto.com/api/v1/search organische resultaten, People Also Ask en meer, voor één credit per zoekopdracht vanaf US$ 0,30/1K zoekopdrachten per oktober 2026. Zonder KYC; betalen met crypto.

Wat je nodig hebt

Python3.9 of nieuwer
Packagesrequests voor de basis; pandas voor tabellen; httpx voor async
API-sleutelUit je SerpCrypto-dashboard, opgeslagen in de omgevingsvariabele SERPCRYPTO_API_KEY
EndpointGET https://serpcrypto.com/api/v1/search
Kosten1 credit = 1 geslaagde zoekopdracht, die één pagina met resultaten oplevert op elke ondersteunde engine. Een mislukte zoekopdracht wordt niet in rekening gebracht
Kleinste pack10.000 zoekopdrachten voor US$ 7,50; credits verlopen nooit

Waarom werkt requests.get op google.com niet meer?

Omdat de resultaten niet meer in de HTML staan die een gewone HTTP-client ontvangt. Op 17 januari 2025 begon Google JavaScript vereist te maken voor Search; Google zei dat JavaScript helpt zijn diensten tegen bots te beschermen en dat minder dan 0,1% van de zoekopdrachten afkomstig was van gebruikers met JavaScript uit, zoals TechCrunch berichtte.

Google's robots.txt, gelezen op 22 oktober 2026, vermeldt ook Disallow: /search voor alle user agents. Een SERP-API regelt het uitvoeren van de zoekopdracht en het parsen van de pagina, en je Python-code heeft alleen met JSON te maken. Dat is de aanpak in de rest van deze gids.

Hoe doe ik de eerste request?

Installeer requests, zet je sleutel in een omgevingsvariabele en stuur de zoekopdracht met een land en een taal. De response is een dictionary met één sleutel per blok van de resultatenpagina; organic_results bevat de gerangschikte links.

Houd de sleutel buiten je broncode. Op macOS en Linux export SERPCRYPTO_API_KEY=... in de shell; op Windows PowerShell $env:SERPCRYPTO_API_KEY="...".

Eerste request met 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"])

Hoe zet ik de resultaten om naar een pandas DataFrame?

Maak één rij per organisch resultaat en houd de zoekopdracht ernaast. Met een DataFrame kun je makkelijk sorteren, filteren op domein of exporteren naar CSV en Excel. Ontbrekende velden, zoals date bij de meeste resultaten, worden lege cellen in plaats van fouten.

Meerdere zoekopdrachten in één 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)

Hoe voer ik veel zoekopdrachten tegelijk uit?

Gebruik httpx met asyncio en beperk het aantal gelijktijdige requests met een semaphore. Je account heeft een concurrency-limiet, die je in het dashboard ziet; blijf eronder om 429-fouten te voorkomen. Begin met een klein aantal, bijvoorbeeld 5, en zet het op de limiet die je dashboard toont.

Async zoekopdrachten met httpx en een semaphore
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"]))

Hoe krijg ik meer dan 10 resultaten en sla ik ze op?

Vraag de volgende pagina's op met page=2, page=3 enzovoort, tot page=10. Elke pagina is één zoekopdracht en één credit, omdat Google sinds het in september 2025 stopte met het respecteren van num=100 ongeveer 10 organische resultaten per pagina levert.

Sla elke ruwe response op als één regel in een JSONL-bestand. Ruwe JSON bewaart elk blok, zodat je later nieuwe vragen kunt beantwoorden zonder opnieuw voor dezelfde zoekopdrachten te betalen.

Pagina's 1 tot 3 opgeslagen als 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)

Wat kost het om deze code uit te voeren?

Elke call in deze voorbeelden is één zoekopdracht. Het eerste voorbeeld kost één credit, het DataFrame-voorbeeld drie en het JSONL-voorbeeld tot drie. Een mislukte request wordt niet in rekening gebracht.

10.000 zoekopdrachten kosten US$ 7,50 en 100.000 zoekopdrachten kosten US$ 56,25, per oktober 2026; het tarief daalt naar US$ 0,30/1K zoekopdrachten bij 5.000.000 zoekopdrachten. Credits verlopen nooit. Je betaalt in BTC, USDT, USDC, ETH, SOL, LTC uit een US$ 25-top-up, zonder ID te uploaden. Zie pricing.

Google-resultaten in Python: veelgestelde vragen

Kan ik BeautifulSoup gebruiken op Google-zoekresultatenpagina's?

Niet betrouwbaar. Google vereist sinds januari 2025 JavaScript, dus de HTML die een gewone client ontvangt bevat de resultaten niet, en Google's robots.txt staat /search niet toe. Een SERP-API geeft de geparseerde velden als JSON terug.

Is er een officiële Python-bibliotheek voor SerpCrypto?

Nee. De API is een gewoon HTTPS-endpoint, dus requests of httpx is alles wat je nodig hebt. De voorbeelden op deze pagina en op de Python-documentatiepagina zijn copy-paste-code, geen gepubliceerd package.

Hoe krijg ik resultaten voor een ander land?

Zet gl op de landcode en hl op de taal, bijvoorbeeld gl=fr en hl=fr voor Frankrijk. Voeg location toe voor een stad. De locations-pagina vermeldt veelgebruikte codes.

Hoe ga ik om met errors en retries?

Roep raise_for_status() aan en probeer 429-, 502- en 504-responses opnieuw na een groeiende vertraging. Mislukte requests worden niet in rekening gebracht. De errors-pagina bevat een volledige retry-functie.

Kan ik met dezelfde code Bing-resultaten krijgen?

Ja. Verander engine in bing; de response behoudt dezelfde vorm, met organic_results en related_searches.

Bronnen (3)
  1. Google begint JavaScript vereist te maken voor Google Search — TechCrunch (2025-01-17)
  2. google.com robots.txt — Google (read 2026-10-22)
  3. Google dwingt rank trackers tot 500 tot 1.000 requests per query — PPC Land (2026-08-27)

Vanaf US$ 0,30/1K zoekopdrachten · zonder KYC

API-sleutel aanvragen