n8nen.nl logo n8nen.nl

Search Console API koppelen met een service account in n8n

2026-06-07 Sam Hutting

Kort samengevat

Stap-voor-stap: koppel de Search Console API aan n8n met een service account. Van GCP-project en JSON-key tot property-rechten, veelvoorkomende fouten en een voorbeeldflow die query-data naar Google Sheets schrijft.

Wil je je zoekprestaties automatisch ophalen en wegschrijven naar een dashboard, dan koppel je de Search Console API het slimst via een service account. In tegenstelling tot een OAuth-flow met een persoonlijk Google-account hoef je bij een service account nooit handmatig in te loggen of tokens te verversen: n8n draait de workflow volledig onbemand, dag en nacht. In deze gids zet je stap voor stap een Google Cloud-project op, schakel je de Search Console API in, maak je een service account met JSON-key aan, geef je dat account leesrechten op je property en bouw je een n8n-flow die query-data naar Google Sheets schrijft. Onderweg behandelen we de fouten waar bijna iedereen op vastloopt.

Waarom een service account in plaats van OAuth?

Een service account is een soort robot-gebruiker: het heeft een eigen e-mailadres, eigen rechten en authenticeert zichzelf met een private sleutel zonder browser. Voor geautomatiseerde rapportages is dat precies wat je wilt. Een OAuth2-credential vraagt om een refresh token dat kan verlopen of ingetrokken worden zodra een collega zijn wachtwoord wijzigt. Een service account blijft werken zolang de sleutel geldig is en het account rechten heeft op de property.

De prijs: je moet het service-account-e-mailadres handmatig toevoegen aan elke property die je wilt uitlezen. Dat wordt vaak vergeten, met de beruchte fout "user does not have sufficient permission" tot gevolg.

Stap 1 — Google Cloud-project en API inschakelen

  1. Ga naar de Google Cloud Console en maak een nieuw project aan (of kies een bestaand project). Geef het een herkenbare naam, bijvoorbeeld n8n-search-console.
  2. Open in het menu APIs & Services → Library.
  3. Zoek op Google Search Console API en klik op Enable. Let op: dit is een andere API dan de oude "Webmaster Tools API"-naamgeving; de huidige heet Search Console API.

Zonder deze stap krijg je later een 403 met de melding dat de API niet is ingeschakeld voor het project. Schakel hem dus expliciet in voor het project waarin je service account leeft.

Stap 2 — Service account aanmaken en JSON-key downloaden

  1. Ga naar APIs & Services → Credentials.
  2. Klik op Create credentials → Service account.
  3. Geef een naam op (bijvoorbeeld gsc-reader). Een rol op projectniveau is voor de Search Console API niet nodig; sla die stap over of laat hem leeg. De rechten regel je straks in Search Console zelf.
  4. Open het zojuist gemaakte service account, ga naar het tabblad Keys en kies Add key → Create new key → JSON.
  5. Er wordt een JSON-bestand gedownload. Bewaar dit veilig: het bevat de private sleutel en kan niet opnieuw worden gedownload.

In dat JSON-bestand vind je twee velden die je nodig hebt: client_email (het service-account-e-mailadres, eindigt op @...iam.gserviceaccount.com) en private_key. Kopieer het client_email-adres alvast; dat heb je in de volgende stap nodig.

Stap 3 — Service account als gebruiker toevoegen in Search Console

Dit is de stap die het vaakst misgaat. Het service account staat los van je eigen Google-account en heeft standaard nul rechten op je properties. Je moet het expliciet toevoegen.

  1. Open Search Console en selecteer de property die je wilt uitlezen.
  2. Ga naar Settings → Users and permissions.
  3. Klik op Add user en plak het client_email-adres van je service account.
  4. Kies permissie Full of Restricted. Voor alleen lezen van rapportdata volstaat Restricted.

Herhaal dit voor elke property die je via n8n wilt benaderen. Eén service account kan rechten hebben op tientallen properties tegelijk.

Property-type: domain vs URL-prefix

Search Console kent twee soorten properties, en het verkeerde type kiezen levert lege resultaten of een 403 op. Het type bepaalt namelijk hoe je de property-URL (de siteUrl) in de API-aanroep schrijft.

TypeDektsiteUrl in de API
DomainAlle subdomeinen en protocollen (http/https, www/non-www)sc-domain:n8nen.nl
URL-prefixExact dat protocol + padhttps://n8nen.nl/

Schrijf je sc-domain:n8nen.nl terwijl je in werkelijkheid een URL-prefix-property hebt (of andersom), dan vindt de API niets. Controleer in Search Console welk type je property is en kopieer de exacte schrijfwijze.

Stap 4 — Credential opslaan in n8n (credential hygiene)

Plak de inhoud van je JSON-key nooit rechtstreeks in een node-veld of in een Code-node. Gebruik altijd de credentials store van n8n; die versleutelt secrets en houdt ze buiten je workflow-export.

  1. Ga in n8n naar Credentials → Add credential en kies Google Service Account API (of Google API → Service Account).
  2. Plak het client_email en de complete private_key (inclusief de -----BEGIN PRIVATE KEY----- regels) uit het JSON-bestand.
  3. Sla de credential op onder een duidelijke naam, bijvoorbeeld GSC service account.

Door de credential apart op te slaan kun je hem hergebruiken in meerdere workflows, en blijft de sleutel buiten je versiebeheer als je workflows als JSON exporteert. Wil je breder leren hoe je credentials veilig beheert? Lees dan onze gids over n8n-credentials veilig beheren.

Stap 5 — Voorbeeldflow: query-data naar Google Sheets

Een minimale rapportage-flow ziet er zo uit:

  • Schedule Trigger — draait bijvoorbeeld elke maandag om 07:00.
  • HTTP Request (of de Google API-node) — roept de searchanalytics.query-endpoint aan met je service-account-credential.
  • Code / Set — vlakt de respons af tot losse rijen.
  • Google Sheets — schrijft de rijen weg (Append).

De API-aanroep gaat naar dit endpoint, waarbij je de siteUrl url-encodeert:

POST https://www.googleapis.com/webmasters/v3/sites/sc-domain%3An8nen.nl/searchAnalytics/query

Stel in de HTTP Request-node de authenticatie in op je opgeslagen service-account-credential (n8n regelt dan de OAuth2-token-uitwisseling op de achtergrond) en stuur deze JSON-payload mee:

{
  "startDate": "2026-05-01",
  "endDate": "2026-05-31",
  "dimensions": ["query", "page"],
  "rowLimit": 1000,
  "dataState": "final"
}

Een rij uit de respons ziet er zo uit:

{
  "keys": ["n8n search console api", "https://n8nen.nl/blog/..."],
  "clicks": 42,
  "impressions": 980,
  "ctr": 0.0428,
  "position": 7.3
}

In de Code-node splits je keys uit naar kolommen (query en page) en koppel je clicks, impressions, ctr en position eraan. De Google Sheets-node schrijft elke rij weg als nieuwe regel. Vervang Sheets gerust door een database-node of een webhook naar je eigen dashboard; de rest van de flow blijft identiek.

Veelvoorkomende fouten oplossen

FoutmeldingOorzaak en oplossing
user does not have sufficient permissionHet service-account-e-mailadres staat niet als gebruiker in deze property. Voeg het client_email toe via Settings → Users and permissions.
email not found / invalid_grantDe private_key is onvolledig geplakt (regeleindes weggevallen) of het verkeerde client_email staat ingevuld. Plak de volledige sleutel opnieuw uit het JSON-bestand.
403 — API niet ingeschakeldDe Search Console API is niet aangezet voor dit project. Schakel hem in via APIs & Services → Library.
Lege resultaten / 404 op siteUrlVerkeerd property-type: je gebruikt sc-domain: terwijl het een URL-prefix-property is (of omgekeerd). Controleer het type in Search Console.

Loop je vast op de Search Console API-authenticatie, controleer dan altijd in deze volgorde: is de API ingeschakeld, is het service-account toegevoegd aan de juiste property, en klopt de schrijfwijze van de siteUrl. In negen van de tien gevallen zit het probleem in één van deze drie.

Aan de slag

Je hebt nu een service account dat de Search Console API onbemand uitleest en de data wegschrijft naar Sheets of een dashboard. Plan de workflow in op een vaste dag en je rapportages vullen zichzelf. Wil je dieper de automatisering in, bekijk dan meer praktische gidsen op de n8nen.nl homepage.

#n8n #google search console #search console api #service account #automatisering #api
WA Stel je vraag