Diepteanalyse· Competitive Intelligence · 13 min lezen

De content-gapanalyse die zichzelf terugverdient met een kopje koffie aan API-credit

Vind elke pagina waarop een concurrent rankt en jij niet — en zet die kaart om in campagnes, assortiment en content. Modern, AI-gematcht, bijna gratis.

Een archeoloog die stof afborstelt van ontbrekende tegels in een kaart van een website
De serieuze feiten zijn echt — de artikelcovers niet.

Kort gezegd: Een content-gapanalyse vindt elke pagina waarop een concurrent rankt en jij niet, en verdeelt het resultaat over drie teams. Trek de zoekwoorden en landingspagina's van je concurrent op met DataForSEO voor een paar euro, laat een LLM hun pagina's matchen met de jouwe, en de niet-gematchte rijen worden SEO-fixes, assortimentsuitbreiding, betaalde campagnes en content. De match hoeft niet perfect te zijn — de waarde zit in de gaten.

~100k
zoekwoorden + landingspagina's van concurrenten per pull
$0.60
per 1.000 SERP-queries (DataForSEO Regular)
$500/mo
Semrush Business — het niveau dat API-toegang ontgrendelt (units apart)
5 stappen
queries → AI-paginamatch → gapkaart

De hele zet in één zin

Vind de pagina’s waarop je concurrenten ranken en die je niet eens in je portfolio hebt — en zet die lijst om in drie winsten: meer SEO-zichtbaarheid, zoekcampagnes gericht op landingspagina’s die je miste, en niet-commercieel verkeer dat je anders nooit zou aanraken. Eén kaart, drie verschillende uitbetalingen, landend bij drie verschillende teams. Dat is de hele analyse; alles hieronder is hoe je er daadwerkelijk komt.

Elke SEO-deck heeft de slide die je dit aanraadt — analyseer de concurrentie, vind de gaten in je content en categorieën. Bijna niemand volgt hem op, want de oude manier was een gezwoeg: exporteer de zoekwoorden van een concurrent, schat met het oog in naar welke landingspagina’s ze leidden, leg ze met de hand naast je sitemap, en ruzie een week lang over matches in een spreadsheet. Dus de slide bleef een slide.

Twee dingen veranderden. De data optrekken werd niet langer duur: DataForSEO doet voor centen wat Semrush voor een maandabonnement doet. En het matchen werd niet langer handmatig: een LLM koppelt de pagina’s van een concurrent aan de jouwe in minuten, en het hoeft niet perfect te zijn om nuttig te zijn.

Wat overblijft is het deel dat altijd de echte waarde was — en het was nooit echt een SEO-taak. Een content gap is een ontbrekende categoriepagina, een productlijn die je niet voert, een blog die een remarketinglijst voedt. Het raakt SEO, betaald, assortiment en contentstrategie tegelijk. Zo draai ik het.

De analyse in één kader

  • Waar we op uit zijn Elke pagina waarop een concurrent rankt en jij niet
  • Tools DataForSEO API · een willekeurige LLM · een site-crawler
  • Kosten Een paar euro aan API-credit, geen abonnement
  • Wat je krijgt Een gerangschikte shortlist van content-, assortiments- en campagnegaten

Eén shop, vier concurrenten — hoe dit er in het echt uitziet

Voor de mechaniek, de vorm ervan. Stel ABC is een middelgrote outdoor-gear webshop: tenten, trailschoenen, regenjassen, rugzakken. Je trekt de echte concurrentenset op en er komen vier namen terug — en het interessante is waarom elk ABC organisch verslaat:

Die ene kaart geeft ABC drie concrete zetten:

  1. Content — schrijf de gidsen over trailschoenen en jasonderhoud, vang het onderzoeksfase-verkeer dat de blogs opeten, en laat die lezers in een remarketinglijst vallen.
  2. Betaald — zodra de fijnmazige landingspagina’s bestaan, richt je zoekcampagnes op die (kinderregenjassen → de kinderregenjassen-pagina) in plaats van elke klik op één botte categoriepagina te dumpen.
  3. Assortiment & structuur — bouw de ontbrekende categoriepagina’s voor lijnen die ABC al voert maar nooit een fatsoenlijk onderkomen gaf, en markeer productlijnen die een concurrent voert en ABC niet.

Dezelfde analyse, drie teams, drie budgetten. (Illustratief voorbeeld.) En zo produceer je die kaart.

De flow, van begin tot eind

Identificeer de echte concurrenten — op drie manieren

Niet wie je denkt dat concurreert — wie er daadwerkelijk opduikt waar jouw geld zit. Gebruik drie signalen samen. Eén: draai je belangrijkste zoekopdrachten door DataForSEO en noteer wie verschijnt in betaald én organisch. Twee: lees Auction Insights in Google Ads — veilingoverlap vertelt je hoe dichtbij een rivaal werkelijk zit. Drie: trek de data over zoekwoordoverlap op, waar het aantal queries dat je met een domein deelt een schone proxy is voor verwantschap. Drie lijsten klappen samen tot één shortlist van echte concurrenten. Waarom eerst: doe dit fout en elke latere stap erft de vergissing — je zou je gaten in kaart brengen tegen een rivaal die nooit echt om jouw geld concurreerde.

Trek de zoekwoorden en landingspagina's van de concurrent op

Trek voor elke concurrent hun top organische zoekwoorden op — tot ~100k — en, cruciaal, op welke landingspagina elk zoekwoord rankt. Uit positie × zoekvolume kun je het verkeer schatten dat naar elk van hun pagina’s stroomt. Waarom pagina’s, geen zoekwoorden: een zoekwoord is een abstractie; een pagina is iets dat je kunt kopiëren, herbouwen of waar je een campagne op kunt richten. Dus klap je de zoekwoordenlijst samen tot een kaart: concurrentpagina × geschat verkeer × de zoekwoorden die hem voeden. Eén rij zou kunnen luiden: rival.com/trail-running-shoes · top zoekwoord trail running shoes · ~8.000 geschatte bezoeken/maand. (Illustratief voorbeeld.)

Breng je eigen site in kaart

Je hebt het spiegelbeeld van je eigen pagina’s nodig. Waarom deze stap: je kunt iets pas een “gap” noemen als je zeker weet dat het aan jouw kant ontbreekt — dus je eigen kaart moet compleet zijn, anders jaag je op “gaten” die eigenlijk gewoon pagina’s zijn die je inventarisatie vergat op te sommen. Crawl de site (Screaming Frog, of een wegwerp-crawler in Python die een LLM in vijf minuten schrijft), exporteer categorieën uit je webshopplatform, lees de product feed, of parse de XML-sitemap — meestal een combinatie. Eén waarschuwing: vertrouw niet op de sitemap alleen. Hij mist standaard parametrische pagina’s, gefilterde categorieweergaven en de blog — precies de oppervlakken waar een gapanalyse om geeft.

Laat AI hun pagina's matchen met de jouwe

Dit is de stap die vroeger een week kostte. Geef beide inventarissen aan een LLM — een open-source model volstaat — en laat hem elke concurrentpagina koppelen aan je dichtstbijzijnde tegenhanger. Je hebt geen 100% nauwkeurigheid nodig; je hebt de niet-gematchte rijen nodig. De output is de prijs: de pagina’s die zij hebben, die hen verkeer en rankings opleveren, en die jij simpelweg niet hebt.

Bepaal wat elke gap betekent — hier houdt het op SEO te zijn

Een gap is niet één ding. Sorteer elke gap in een bak: producten die je al verkoopt maar geen categoriepagina voor hebt → fix je landingspaginastructuur. Producten die je niet verkoopt maar je leverancier wel voert → een shortlist voor assortimentsuitbreiding met vraag eraan vast. De sterke niet-commerciële blog van een concurrent die jouw exacte doelgroep trekt → een contentstrategie. Elke bak landt bij een ander team — en meerdere ervan voeden recht in je campagnes.

Bijvoorbeeld: hun /cordless-drills-pagina trekt ~12.000 bezoeken/maand, je verkoopt accuboormachines maar alleen op een generieke /power-tools-pagina — dat is een landingspaginastructuur-fix, geen nieuwe blogpost. De volgende niet-gematchte rij, /drill-bit-buying-guide, is pure content. Dezelfde gapkaart, twee verschillende teams. (Illustratief voorbeeld.)

De match hoeft niet perfect te zijn. Mensen blijven hier hangen, wachtend op 100% precisie. Je hebt het niet nodig. Een paar verkeerd gelabelde paren kosten je niets; de waarde zit in de duidelijk niet-gematchte concurrentpagina’s, en die overleven een rommelige match prima. Lever de analyse op 90% en handel ernaar, in plaats van een model te polijsten dat alleen ooit een middel tot een shortlist was.

Zie het draaien: wat elke stap daadwerkelijk uitspuugt

De vijf stappen hierboven zijn de kaart; dit is het terrein. Hieronder staat het concrete artefact dat elke stap je aanreikt — waar je letterlijk naar staart voordat je verder gaat. De vormen zijn precies wat de tools teruggeven; de rijen zijn illustratief, geen echte klant. (Illustratieve voorbeelden overal.)

Stap 1 → een concurrenten-shortlist, gescoord. Je draait de drie signalen en klapt ze samen tot één tabel. De merken die je op gevoel had genoemd, zijn niet altijd degene die alle drie overleven:

Domain        Paid/Org  Overlap  Shared  Verdict
rival-a.com   yes/yes   71%      4,120   core
niche-c.com   yes/yes   44%      2,300   core
rival-b.com   no /yes   12%      3,880   content-only rival
bigbox.com    yes/yes    9%        910   too broad — drop

Drie van de vier overleven; de megastore die “vanzelfsprekend” concurreert valt af omdat de overlap ruis is.

Stap 2 → een paginakaart met geld eraan. Voor elke overlevende concurrent geeft één API-call gerangschikte zoekwoorden én de landingspagina die elk raakt. Aggregeer per pagina en je kijkt niet langer naar zoekwoorden:

Page                 Keyword             Pos  Vol     Visits/mo
/trail-shoes         trail running shoe   2   18,100  ~8,000
/waterproof-jackets  waterproof jacket    4   12,000  ~3,200
/blog/clean-shoes    clean trail shoes    1    2,400  ~1,500
/gaiters             running gaiters      6      900    ~640

Elke rij is een pagina die een concurrent echt verkeer oplevert — een doelwit, geen zoekopdracht.

Stap 3 → je eigen inventaris, en hoeveel de sitemap miste. Spiegel het voor je site uit crawl + feed + categorie-export. Het punt van vier bronnen optrekken wordt zichtbaar op het moment dat je ze telt:

Source                 Pages found
XML sitemap                  412
Screaming Frog crawl         938
Product feed               1,205 SKUs
Category export               64
Deduped own-site map       1,010 URLs

De sitemap zag 412 pagina’s. De echte kaart telt er 1.010. De analyse leeft in de ~600 die de sitemap je nooit liet zien.

Stap 4 → de NO MATCH-rijen, gerangschikt. Geef beide inventarissen aan de LLM met de matchprompt. Hij geeft één verdict per concurrentpagina terug; je houdt alleen de gaten, gesorteerd op verkeer:

Competitor page        Closest OURS     Verdict   Visits/mo
/trail-shoes           /running-shoes   MATCH       —
/waterproof-jackets    —                NO MATCH    3,200
/blog/clean-shoes      —                NO MATCH    1,500
/gaiters               —                NO MATCH      640

Eén MATCH valt weg; drie gerangschikte gaten blijven over. Die tabel van vier rijen is de hele deliverable in embryonale vorm.

Stap 5 → de gapkaart met een eigenaar. Tag elke gap met een bak en het team waar hij landt. Nu is het geen SEO-rapport — het is een werkorder:

Gap                   Visits/mo  Bucket              Lands on
/waterproof-jackets   3,200      sell it, no LP      SEO / web
/blog/clean-shoes     1,500      non-commercial      Content + ads
/gaiters                640      don't stock it yet  Assortment

Eén kaart, drie teams, elke rij op maat van het verkeer. Dat is het moment waarop een “content-gapanalyse” ophoudt een SEO-klusje te zijn en een teamoverstijgend plan wordt.

Semrush vs. DataForSEO: waarom het prijsverschil ertoe doet

De reden dat deze analyse van “we zouden eens” naar “we deden het” ging is de kostprijs — en het Semrush-getal dat hier telt ligt hoger dan de prijs die men citeert. Het Pro-plan van $139,95/maand draait een content-gapcheck in de interface, met de hand, met exportlimieten. Maar de analyse in dit artikel is programmatisch: één API-call per concurrentdomein, ~100k gerangschikte zoekwoorden en hun landingspagina’s per keer. Semrush zet zijn API achter het Business-plan van $499,95/maand — en zelfs dan begin je met nul API-units. Die koop je apart (ruwweg $50 per miljoen units, ~10 units per gerangschikte-zoekwoordrij), bovenop het abonnement. DataForSEO is pay-as-you-go: een top-up van $50 gaat maanden mee, er is geen abonnement te huren of niveau te ontgrendelen, en je betaalt alleen voor de queries die je daadwerkelijk optrekt.

SemrushDataForSEO
PrijsmodelVast abonnement; API daarbovenop gefactureerdPay-as-you-go tegoed
UI-instapplan$139,95/maand (Pro), terugkerend, exportgelimiteerd— (geen abonnement; alleen API)
Programmatische / API-toegangBusiness $499,95/maand + API-units apart gekochtInbegrepen — je betaalt gewoon per call
Organische SERP, per 1.000 queriesGebundeld in het abonnement$0,60 (Regular) – $3,50 (Advanced, live)
Eén eenmalige gapanalyseEen Business-maand + units, terugkerendEen paar euro aan tegoed

Voor een eenmalig, diep technisch karwei als een content-gappull is dat het verschil tussen een API-niveau van $500/maand ontgrendelen en een kopje koffie aan tegoed uitgeven. De datakwaliteit is er voor deze use case; de economie is niet eens in de buurt.

Twee verhalen uit twintig jaar dit doen

De mechaniek is nieuw. De zetten die ze ontgrendelen zijn er die ik twee decennia heb zien werken — ze waren alleen te bewerkelijk om op te zetten.

De kinderblog die een verkoopkanaal werd

Een klant in het kindersegment werd verslagen op een klasse queries die niets met producten te maken had. De concurrent runde een sterke blog — kleurplaten, slaapliedjes — met enorm zoekvolume gericht op precies de doelgroep: ouders. De gapanalyse bracht het hele cluster boven water. De klant nam de strategie over, bouwde de content, trok het verkeer, liet die bezoekers in remarketing vallen, en zette een “niet-commerciële” content gap om in aankopen. (Geanonimiseerd.)

Recepten voor een dieet dat maaltijdboxen verkoopt

Een meal-prep- en coachingbedrijf zat naast een categorie met twee prachtige eigenschappen: receptqueries hebben extreem zoekvolume en CPC’s op centniveau. De strategische concurrenten hadden gestructureerde receptsecties gebouwd — en oogstten een stroom mensen die, per definitie, beter wilden eten. Vandaar is het een kleine stap naar een product of een coachingaanbod. De gapanalyse is wat de kans zichtbaar maakte en op maat bracht. (Geanonimiseerd.)

De twist die niemand draait: leen van een sterkere markt

Hier is de invalshoek die dit van een defensieve audit in een oneerlijk voordeel verandert.

Stel je bent leider in een kleine markt zonder serieuze concurrentie om van te leren. De gapanalyse thuis geeft niets bruikbaars terug — er is niemand voor je om te kopiëren. Dus draai hem niet thuis. Draai exact dezelfde analyse tegen de sterkste, meest competitieve buitenlandse markt in jouw categorie.

Taal is geen barrière: de LLM brengt hun categorieën en content over op de jouwe, ongeacht de taal waarin ze zijn geschreven. Je importeert de strategieën die de leiders in een volwassen markt al hebben bewezen — categoriestructuren, invalshoeken voor content, assortimentsideeën — naar een markt waar letterlijk nog niemand ze doet. Je wordt de first mover thuis door de toekomst uit het buitenland te kopiëren. Het past natuurlijk bij een volledige marktexpansieanalyse wanneer je beslist waar die sterkere markt zit.

Waarom dit de cirkel rondmaakt

Merk op wat er net gebeurde. We begonnen met een nette SEO-taak — “vind content gaps” — en het stroomde over in assortimentsbeslissingen, betaalde campagnes, remarketing-doelgroepen en contentstrategie. Dat is geen scope creep. Dat is de werkelijke vorm van het werk.

De data was altijd op te trekken; niemand nam de moeite, omdat de handmatige kosten de opbrengst overtroffen. Nu is de pull goedkoop en is het matchen geautomatiseerd. Wat als schaars ingrediënt overblijft is wat altijd schaars was: het idee — de senioriteit om naar een gapkaart te kijken en te weten dat de kleurplatenblog van een concurrent eigenlijk een remarketingkanaal is, en de breedte om SEO, betaald en assortiment in één hoofd te verbinden. De uitvoering werd makkelijk. Het oordeel is het werk.

The part you can steal

Het deel dat je kunt jatten

Paginamatch-prompt — koppelt de pagina’s van een concurrent aan de jouwe en markeert de gaten:

You are a site-structure analyst. You get two lists of pages:
COMPETITOR (url, top keywords, estimated monthly traffic) and OURS (url, title).
For each COMPETITOR page, return the single closest OURS page, or "NO MATCH".
Then output only the NO MATCH rows, sorted by estimated traffic descending.
Match on intent and topic, not exact wording. Cross-language matches are allowed.
100% precision is not required — never invent a match to avoid "NO MATCH".

Gerangschikte zoekwoorden + landingspagina’s — DataForSEO Labs, één call per concurrentdomein:

curl -s "https://api.dataforseo.com/v3/dataforseo_labs/google/ranked_keywords/live" \
  -u "$LOGIN:$PASSWORD" -H "Content-Type: application/json" \
  -d '[{"target":"competitor.com","location_code":2840,"language_code":"en","limit":1000}]'

Drie dingen die je een verspilde middag besparen:

  1. Vertrouw nooit op de sitemap alleen voor je eigen kaart. Hij slaat parametrische pagina’s, gefilterde weergaven en de blog over — precies de oppervlakken waar gaten zich verschuilen. Combineer crawl + feed + categorie-export.
  2. Lever op “goed genoeg” matchen. De waarde zit in de niet-gematchte concurrentpagina’s; een paar verkeerde paren veranderen de shortlist niet. Polijst het model niet — handel naar de lijst.
  3. Draai het op een buitenlandse markt wanneer thuis te makkelijk is. Geen sterke lokale concurrent betekent geen gaten om te vinden. Leen in plaats daarvan van de sterkste markt in jouw categorie.

FAQ

Heb ik echt geen 100% matchnauwkeurigheid nodig?

Klopt. Je jaagt op de concurrentpagina’s zonder tegenhanger aan jouw kant — de niet-gematchte rijen. Een handvol verkeerd gelabelde paren verschuift die shortlist niet. Hier perfectie eisen vertraagt alleen het handelen op een lijst die al goed genoeg was.

Waarom DataForSEO in plaats van Semrush?

De kostenstructuur, en achter welke deur de API zit. De content-gaptools van Semrush zitten in de UI op het Pro-plan van $139,95/maand; de programmatische pull die dit artikel gebruikt vereist het Business-plan van $499,95/maand plus API-units die je er bovenop koopt (je begint op nul). DataForSEO is pay-as-you-go vanaf een tegoed van $50 dat maanden meegaat, tegen $0,60–$3,50 per 1.000 SERP-queries. Voor een eenmalige technische pull is dat een paar euro versus het ontgrendelen van een terugkerend Business-abonnement.

Hoe kies ik welke concurrenten ik analyseer?

Drie signalen samen: wie verschijnt er in betaald en organisch voor jouw belangrijkste queries (via DataForSEO), wie overlapt met jou in Google Ads Auction Insights, en wie deelt de meeste zoekwoorden met jou in de tooldata. De doorsnede is je echte concurrentenset — vaak niet de merken die je zelf had genoemd.

Is dit niet gewoon SEO?

Het lijkt op SEO en is het niet. De gaten splitsen zich op in landingspaginastructuur (SEO), producten die je zou moeten voeren (assortiment), doelgroepen die remarketing waard zijn (betaald) en onderwerpen die het schrijven waard zijn (content). De analyse is hetzelfde; de acties landen bij vier verschillende teams.

Kan ik dit echt over talen en markten heen doen?

Ja — dat is de sterkste versie ervan. De LLM matcht pagina’s op intentie, niet op bewoording, dus hij koppelt de categorieën van een buitenlandse concurrent prima aan de jouwe. Heeft je thuismarkt geen concurrentie om van te leren, draai de analyse dan op een sterkere buitenlandse markt en importeer wat werkt.

Mijn sitemap somt al mijn pagina's op — is dat niet genoeg voor mijn kant?

Nee. Sitemaps laten standaard parametrische URL’s, gefilterde categorieweergaven en delen van de blog weg — precies waar de gaten zitten. Bouw je eigen sitemap uit een crawl plus de product feed plus een categorie-export, en behandel de sitemap als één input, niet als de bron van waarheid.


CTA: Benieuwd waarop je sterkste concurrent rankt en jij niet? Laten we de gapkaart optrekken.

Waar het allemaal om draait

Wil je dit niveau van inzicht in je eigen account?

Eén e-mail. Ik zeg je eerlijk of het de moeite waard is voor jouw setup.

Contact →