Bouw je eigen SEO-rangschikkingstracker met een SERP API
Kant-en-klare rangschikkingstrackers zijn een black box die je per trefwoord huurt. Verbind zelf een SERP API met een database en je bezit de geografische diepte, de AI-Overzichtscaptatie en de waarschuwingen — voor een fractie van de prijs.
Commerciële rangschikkingstrackers rekenen per trefwoord en geven je een dashboard dat je niet kunt bevragen. Bouw je eigen op een SERP API en je draait dat om: je bezit de ruwe SERP-snapshots, kiest precies welke geografische locaties en apparaten je wilt volgen, legt de delen van de resultatenpagina vast die nu de zichtbaarheid bepalen — AI Overzichten, People Also Ask, het lokale pakket — en verbind waarschuwingen met wat je al gebruikt. Dit is een complete tutorial: het schema, de dagelijkse run, de AI-Overzicht en PAA-captatie, het vergelijken en waarschuwen, en de valkuilen van 2026 die naïeve trackers breken. Het draait op de QuantumProxies SERP API, dus er is geen proxy pool om te beheren.
De valkuil die rangschikkingstracking veranderde
Twee veranderingen maken een moderne tracker anders dan een uit 2020. Ten eerste heeft Google de &num=100 parameter verwijderd, dus je kunt niet langer 100 resultaten in één verzoek ophalen — je moet ongeveer tien tegelijk pagineren, wat verandert hoe diep je kunt volgen en maakt een efficiënte API verplicht in plaats van optioneel. Ten tweede is de resultatenpagina niet langer een schone lijst van tien blauwe links: een AI Overzicht kan boven alles zitten en de vraag direct beantwoorden, People Also Ask-boxen en uitgelichte fragmenten absorberen klikken, en het lokale pakket bezit commerciële intentie. Het volgen van een eenvoudige positienummer terwijl je die negeert, is het verkeerde ding volgen. Onze uitleg over hoe SERP-scraping werkt in 2026 behandelt de num=100 gevolgen in detail.
Stap 1: een schema gebouwd voor vergelijken
Het hele systeem is een dagelijkse snapshot die je vergelijkt met gisteren, dus het schema is snapshot-eerst: één rij per trefwoord, geografische locatie, apparaat en dag, met de rangschikkingsgegevens en de SERP-functies opgeslagen naast elkaar. Houd het AI Overzicht en PAA als gestructureerde kolommen zodat je ze direct kunt bevragen.
CREATE TABLE serp_snapshot (
id bigserial PRIMARY KEY,
keyword text NOT NULL,
country text NOT NULL, -- gl: us, gb, de...
city text, -- optional city-level
device text NOT NULL, -- desktop | mobile
position int, -- your domain's best rank, null = not found
landing_url text,
aio_present boolean NOT NULL, -- AI Overview shown?
aio_cited boolean NOT NULL, -- did it cite your domain?
paa jsonb, -- People Also Ask questions
top3 jsonb, -- who owns positions 1-3
captured_at date NOT NULL,
UNIQUE (keyword, country, city, device, captured_at)
);
Stap 2: de dagelijkse geografische run
De kernlus herhaalt je trefwoorden over elke doelgeografische locatie en apparaat, roept de SERP API één keer per combinatie aan, en vindt de beste positie van je domein. Omdat de API geparseerde JSON retourneert en rotatie, geografische locatie en blokkering intern afhandelt, blijft dit een eenvoudige lus — geen headless browser, geen proxyrotatiecode, geen CAPTCHA-afhandeling. Stel gl in voor het land en een locatie voor stadsniveau, en de resultaten komen al gelokaliseerd terug.
import requests, datetime
QP = "https://api.quantumproxies.io/serp"
HEAD = {"Authorization": f"Bearer {QP_KEY}"}
def run_keyword(keyword, country, device="desktop", city=None):
params = {"engine": "google", "q": keyword,
"gl": country, "device": device, "num": 20}
if city:
params["location"] = city
data = requests.get(QP, headers=HEAD, params=params, timeout=45).json()
pos, url = None, None
for r in data.get("organic", []):
if "yourdomain.com" in r["link"]:
pos, url = r["position"], r["link"]
break
return data, pos, url
Verkrijg een SERP API-sleutel om je tracker aan te drijven

Stap 3: AI Overzichten en PAA vastleggen
Dit is waar een zelfgemaakte tracker de goedkope commerciële verslaat, waarvan de meeste nog steeds alleen de tien links rapporteren. Een AI Overzicht kan je organische resultaat onder de vouw duwen, zelfs als je "derde" staat, en binnen het AI Overzicht geciteerd worden is nu een eigen zichtbaarheidsmetric die het waard is om apart te volgen. Haal zowel de aanwezigheid van de AIO als of het je domein vermeldt op, en sla de PAA-vragen op — ze dienen als nieuwe trefwoord- en contentideeën.
def extract_features(data, domain="yourdomain.com"):
aio = data.get("ai_overview") or {}
aio_present = bool(aio)
aio_cited = any(domain in s.get("link", "")
for s in aio.get("sources", []))
paa = [q["question"] for q in data.get("people_also_ask", [])]
top3 = [r["link"] for r in data.get("organic", [])[:3]]
return aio_present, aio_cited, paa, top3
Het volgen van AIO-citatie in de tijd wordt snel de belangrijkste SEO-metric — onze gids over AI Overzicht aanwezigheid programmatisch vastleggen gaat dieper in op de signalen die het waard zijn om te loggen. Voer hetzelfde trefwoord uit vanuit verschillende landen en je zult zien dat rangschikkingen en AIO-citaties per geografische locatie divergeren, wat precies de reden is waarom stadsniveau-runs belangrijk zijn voor iedereen met een lokale of internationale voetafdruk, zoals behandeld in SERP-veranderingen wereldwijd monitoren.

Stap 4: vergelijken en waarschuwen
Een tracker die niemand leest, is een logbestand. De waarde zit in de waarschuwing — een bericht op het moment dat er iets beweegt. Vergelijk na elke run de nieuwe snapshot met de vorige dag en reageer op de veranderingen die ertoe doen: een daling van drie of meer posities, het winnen of verliezen van een AI Overzicht-citatie, een concurrent die in de top drie breekt, of een URL die van pagina één valt. Stuur die naar Slack, e-mail of een webhook zodat het SEO-team hoort over een daling voordat het verkeersrapport dat doet.
def diff_and_alert(kw, geo, today, yesterday):
alerts = []
if yesterday.position and today.position:
if today.position - yesterday.position >= 3:
alerts.append(f"{kw} [{geo}] dropped "
f"{yesterday.position} -> {today.position}")
if yesterday.aio_cited and not today.aio_cited:
alerts.append(f"{kw} [{geo}] lost its AI Overview citation")
if today.position and today.position > 10 and \
(yesterday.position or 0) <= 10:
alerts.append(f"{kw} [{geo}] fell off page one")
for a in alerts:
notify(a) # -> Slack / email / webhook
Planning en eerlijk blijven over volume
Voer het geheel uit op een dagelijkse cron, idealiter op een consistent uur zodat dag-over-dag vergelijkingen vergelijkbaar zijn. Wees realistisch over schaal: trefwoorden vermenigvuldigd met landen vermenigvuldigd met steden vermenigvuldigd met apparaten is je ware queryaantal, en het groeit snel — honderd trefwoorden over vijf landen op twee apparaten is duizend SERP-aanroepen per dag. De SERP API rekent per query, dus volg de combinaties waarop je daadwerkelijk zult reageren in plaats van alles denkbaar. Als je dit in een product bouwt in plaats van een intern hulpmiddel, behandelt ons bericht over het kiezen van een SERP API voor AI en SEO-tools de economische aspecten per query. Dezelfde eindpunten zijn beschikbaar via onze MCP-server als je liever runs vanuit een agent uitvoert.
Veelgestelde vragen
Hoe bouw ik een rangschikkingstracker met een SERP API?
Sla één snapshot per trefwoord, geografische locatie, apparaat en dag op; roep de SERP API één keer per combinatie aan om geparseerde resultaten te krijgen; haal de positie van je domein plus AI Overzicht en PAA-gegevens op; vergelijk dan elke dag met de vorige en waarschuw bij betekenisvolle beweging. De API handelt proxies, geografische locatie en blokkering af, dus je code blijft een geplande lus over een database.
Kan ik nog steeds 100 resultaten per query krijgen?
Niet in één verzoek — Google heeft de num=100 parameter verwijderd, dus resultaten komen ongeveer tien per pagina en dieper volgen betekent pagineren. Voor de meeste tracking heb je alleen de top 20 of zo nodig, wat het queryvolume en de kosten laag houdt. Een SERP API die voor je pagineert, verbergt dit detail achter een enkele oproep.
Hoe volg ik AI Overzicht aanwezigheid?
Leg twee dingen per run vast: of er een AI Overzicht verscheen voor de query, en of het je domein onder zijn bronnen vermeldde. Sla beide op als afzonderlijke velden zodat je citatie in de tijd kunt volgen — binnen het AI Overzicht genoemd worden is nu een eigen zichtbaarheidsmetric, los van je organische positie.
Hoe vaak moet een rangschikkingstracker draaien?
Dagelijks is standaard voor SEO, op een consistent tijdstip zodat vergelijkingen vergelijkbaar zijn. Volatiele of waardevolle termen kunnen tweemaal daags rechtvaardigen; stabiele, lage prioriteitstermen zijn prima wekelijks. Stem de frequentie af op hoe snel het trefwoord daadwerkelijk beweegt en op je SERP-API-querybudget, aangezien trefwoorden maal geografische locaties maal apparaten je echte kostenstuurder zijn.
Een rangschikkingstracker is een schema, een dagelijkse SERP-oproep en een vergelijking — de hefboomwerking is het bezitten van alle drie. Leg positie, AI Overzichten en PAA vast over de geografische locaties die je belangrijk vindt, waarschuw bij echte beweging, en je hebt een tracker die een fractie van de commerciële kost en vragen beantwoordt die ze je nooit laten stellen.