# JavaScript-webshops en AI-crawlers: wat ziet de bot?

Bron: https://citetune.com/nl/blog/javascript-webshops-en-ai-crawlers

Geschreven door: Het CiteTune-team · Gepubliceerd op: 2026-10-09 · Bijgewerkt op: 2026-10-09 · 6 min leestijd

## Kort antwoord

Een onderzoek van Vercel van december 2024 stelde vast dat de crawlers van OpenAI, Anthropic en Perplexity geen JavaScript uitvoerden. Staan de naam, prijs en beschrijving van je producten pas na het laden van een script op de pagina, dan kan zo’n bot ze missen. Test je pagina’s: de bron, niet de inspecteur.

## Wat jij ziet is niet wat de crawler krijgt

In je browser lijkt de pagina compleet: foto’s, een prijs, een koopknop, reviews. Maar een browser voert JavaScript uit en bouwt de pagina op. Een crawler die geen JavaScript uitvoert, krijgt alleen de HTML die de server als eerste terugstuurt. Bij een webshop met een klassiek thema is dat vaak al de hele pagina. Bij een webshop waarvan de voorkant in de browser wordt opgebouwd, kan het een bijna lege schil zijn met een script erin.

Wat zegt het onderzoek? Vercel analyseerde het verkeer op zijn netwerk en publiceerde op 17 december 2024 dat de crawlers van OpenAI, Anthropic (ClaudeBot) en Perplexity (PerplexityBot) geen JavaScript uitvoeren, terwijl AppleBot dat wel doet omdat hij pagina’s via een browsergebaseerde crawler rendert. In de maand die het onderzoek beschrijft, deed GPTBot 569 miljoen verzoeken op het netwerk van Vercel, Claude 370 miljoen, AppleBot 314 miljoen en PerplexityBot 24,4 miljoen. Het zijn cijfers over één netwerk en één maand: ze tonen de omvang van het ophalen, niet wat jouw pagina’s opleveren.

> **!** Het onderzoek is bijna twee jaar oud en crawlers veranderen. Neem het als reden om je eigen pagina’s te testen, niet als bewijs dat een bepaalde bot vandaag geen JavaScript uitvoert.

## En Google?

Google verwerkt JavaScript in drie fasen: crawlen, renderen en indexeren. Pagina’s die met statuscode 200 antwoorden komen in een wachtrij voor rendering, die een paar seconden of langer kan duren; daarna voert een headless Chromium het script uit. Google blijft desondanks server-side rendering of prerendering aanbevelen, omdat het sites sneller maakt voor gebruikers en crawlers en niet alle bots JavaScript kunnen uitvoeren. Dynamic rendering, waarbij crawlers een voorgerenderde versie krijgen, noemt Google een noodoplossing en geen aanbevolen oplossing.

| Manier van opbouwen | Wat de crawler krijgt | Oordeel van Google |
|---|---|---|
| Alleen in de browser gerenderd | Een lege schil, daarna scripts | Googlebot voert ze met vertraging uit; andere crawlers volgens Vercel niet |
| Server-side rendering | De volledige HTML | Aanbevolen |
| Statische rendering (prerendering) | De volledige, vooraf gegenereerde HTML | Aanbevolen |
| Hydratie | De volledige HTML, daarna de interactiviteit | Aanbevolen |
| Dynamische rendering | Een voorgerenderde versie voor crawlers | Een noodoplossing, geen aanbevolen oplossing |

Voor je AI-zichtbaarheid is vooral het verschil met andere bots belangrijk: dat Google een pagina uiteindelijk kan renderen, zegt niets over wat ChatGPT-, Claude- of Perplexity-crawlers zien. Googles AI-overzichten en AI-modus leunen op Googlebot, maar de zoekcrawlers van de andere assistenten werken los van Google.

## Welke webshops lopen risico?

Een klassiek thema dat de server als kant-en-klare HTML uitlevert, slaagt meestal voor de test hieronder. Risico loop je bij:

- **Headless-frontends** (een aparte voorkant op de webshopsoftware) die in de browser worden opgebouwd.
- **Apps die inhoud inladen:** reviews, maattabellen, veelgestelde vragen, voorraadmeldingen en “vaak samen gekocht” komen vaak pas na een scriptaanroep.
- **Prijzen en voorraad via een API-aanroep** na het laden van de pagina.
- **Inhoud achter tabbladen of “lees meer”** die pas bij een klik wordt opgehaald.

Het gaat dus niet om de platformkeuze maar om wat er in de eerste HTML staat. Eén productpagina kan hoofdtekst in de HTML hebben en je reviews of prijs verbergen achter een script.

## De test: bekijk de bron, niet de inspecteur

1. Open een productpagina en kies “Paginabron weergeven” (niet “Inspecteren”, want die toont de pagina nadat het script is uitgevoerd).
2. Zoek met Ctrl+F of Cmd+F de productnaam, de prijs en een zin uit de beschrijving.
3. Staan ze er niet, dan verschijnen ze pas na het uitvoeren van JavaScript en kan een crawler zonder JavaScript ze missen.

```bash
# Staat de prijs in de eerste HTML? (vervang de URL en de tekst)
curl -s https://jouw-webshop.nl/producten/voorbeeld | grep -c "29,95"

# Staat de productnaam erin?
curl -s https://jouw-webshop.nl/producten/voorbeeld | grep -i "voorbeeldproduct" | head -3
```

Geeft de eerste opdracht 0, dan staat de prijs niet in de eerste HTML. Let op: een prijs kan er met een ander formaat in staan (29.95 in plaats van 29,95, of in een data-attribuut): zoek ook op het getal zonder valutateken. Onze [gratis scan](https://citetune.com/nl/gratis-scan) doet deze controle voor tot 30 openbare pagina’s: hij haalt de ruwe HTML op en voert geen JavaScript uit, precies zoals een bot zonder renderer.

## Wat doe je eraan?

De sterkste oplossing is server-side of statische rendering van de pagina’s die ertoe doen: categorieën, producten, gidsen. Dat is een ontwikkelproject en geen instelling. Kun je de voorkant niet snel ombouwen, ga dan in deze volgorde te werk:

1. Zet minstens de productnaam, de prijs, de valuta, de beschikbaarheid en de eerste alinea van de beschrijving in de eerste HTML. Laat het script aanvullen, niet vervangen.
2. Zet je gestructureerde gegevens (Product, Organization) als JSON-LD in de eerste HTML in plaats van ze met een script in te laden, en houd ze gelijk aan de zichtbare pagina.
3. Laat apps die reviews of veelgestelde vragen tonen hun inhoud server-side meeleveren, of schrijf de belangrijkste antwoorden zelf in de pagina.
4. Overweeg dynamic rendering alleen als tijdelijke brug: Google noemt het zelf een noodoplossing met extra complexiteit en kosten.

| Onderdeel van de pagina | Eerste HTML? | Waarom het ertoe doet voor een antwoord |
|---|---|---|
| Productnaam en merk | Ja | Zonder naam weet een machine niet waar de pagina over gaat |
| Prijs, valuta (EUR) en beschikbaarheid | Ja | Kopersvragen gaan vaak over wat iets kost en of het er is |
| Eerste alinea van de beschrijving | Ja | Hier staat het citeerbare antwoord op de vraag van de koper |
| Levertijd en retourvoorwaarden | Ja, of op een gelinkte pagina in gewone HTML | Dit zijn de feiten waar kopers in Nederland en België naar vragen |
| Reviews, veelgestelde vragen | Bij voorkeur ja | Ze geven inhoud die alleen jij hebt, maar mogen de basis niet vervangen |
| Aanbevolen producten, interactieve filters | Mag via een script | Aanvullend: een machine heeft ze niet nodig om het product te begrijpen |

Zorg dat de pagina’s niet in je robots.txt of een firewall blokkeren: Google rendert geen JavaScript van bestanden of pagina’s die de robots.txt verbiedt. Zie [Is je webshop geblokkeerd voor AI-crawlers?](https://citetune.com/nl/blog/webshop-geblokkeerd-voor-ai-crawlers). Een volledige diagnose staat in [waarom ChatGPT je webshop niet noemt](https://citetune.com/nl/blog/waarom-chatgpt-je-webshop-niet-noemt).

## Veelgestelde vragen

### Voeren AI-crawlers JavaScript uit?

Volgens het onderzoek van Vercel van december 2024 niet: de crawlers van OpenAI, Anthropic en Perplexity voerden geen JavaScript uit, AppleBot wel. Dat onderzoek is oud; test je eigen pagina’s in plaats van op één bron te vertrouwen.

### Is een server-side gerenderde webshop altijd veilig?

Niet altijd. Ook dan kunnen onderdelen zoals reviews, prijzen of veelgestelde vragen pas via een script verschijnen. De test is per pagina: staan de naam, de prijs en een zin van de beschrijving in de bron?

### Is dynamic rendering een goede oplossing?

Google noemt het een noodoplossing en geen langetermijnoplossing, met extra complexiteit en kosten, en raadt server-side rendering, statische rendering of hydratie aan. Gebruik het hoogstens als tijdelijke brug.

### Helpt het toevoegen van een llms.txt als mijn pagina’s JavaScript nodig hebben?

Niet als vervanging. Een llms.txt is een voorstel voor een overzichtsbestand voor agents; het lost niet op dat de inhoud van je pagina’s pas na een script verschijnt. Zie [Is llms.txt nuttig?](https://citetune.com/nl/blog/llms-txt-nuttig-of-niet)

### Hoe vaak moet ik dit opnieuw testen?

Na elke wijziging van het thema, elke nieuwe app die inhoud inlaadt en elke migratie van de voorkant. Een app-update kan een stuk inhoud van de eerste HTML naar een script verplaatsen zonder dat het op je scherm opvalt.

## Bronnen

- [Vercel: The rise of the AI crawler (17 december 2024)](https://vercel.com/blog/the-rise-of-the-ai-crawler) (geraadpleegd op: 2026-10-09)
- [Google Search Central: Basis van JavaScript-SEO](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics?hl=nl) (geraadpleegd op: 2026-10-09)
- [Google Search Central: Dynamische rendering als noodoplossing](https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering) (geraadpleegd op: 2026-10-09)
- [Google Search Central: Je website optimaliseren voor generatieve AI-functies in Google Zoeken](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide?hl=nl) (geraadpleegd op: 2026-10-09)
- [OpenAI: Overzicht van de crawlers van OpenAI](https://developers.openai.com/api/docs/bots) (geraadpleegd op: 2026-10-09)

## Gerelateerde pagina’s

- [Prerendering en SSR](https://citetune.com/nl/woordenlijst/prerendering-ssr)
- [AI-crawlers](https://citetune.com/nl/woordenlijst/ai-crawlers)
- [Is je webshop geblokkeerd voor AI-crawlers?](https://citetune.com/nl/blog/webshop-geblokkeerd-voor-ai-crawlers)
- [Waarom ChatGPT je webshop niet noemt: 7 oorzaken](https://citetune.com/nl/blog/waarom-chatgpt-je-webshop-niet-noemt)
- [Is llms.txt nuttig voor je webshop? Wat de cijfers zeggen](https://citetune.com/nl/blog/llms-txt-nuttig-of-niet)
- [Worden AI-agents geblokkeerd?](https://citetune.com/nl/tools/ai-bot-toegang-controleren)
- [Gratis scan](https://citetune.com/nl/gratis-scan)
