← All Articles

Voor- en nadelen van het Cloudflare Crawl Endpoint bij Shopify-winkels

Cloudflare /crawl endpoint benchmarks en vergelijking met Scrapy-pipeline bij vijf Shopify-winkels

Wat is het Cloudflare /crawl Endpoint?

Cloudflare’s /crawl endpoint maakt deel uit van hun Browser Rendering API, momenteel in open bèta. Het scrapt content vanaf een start-URL, volgt links over de site tot een configureerbare diepte of paginalimiet, en retourneert de resultaten als HTML, Markdown of gestructureerde JSON aangedreven door Workers AI. Cloudflare positioneert het als een tool voor het trainen van modellen, het bouwen van RAG-pipelines en het onderzoeken of monitoren van content op een site.

Het endpoint functioneert als een signed-agent die standaard robots.txt en Cloudflare’s AI Crawl Control respecteert, wat een opmerkelijke ontwerpkeuze is. Het is bedoeld om het voor ontwikkelaars gemakkelijk te maken om websiteregels na te leven en het voor crawlers moeilijker te maken om richtlijnen van site-eigenaren te negeren.

Het endpoint bevindt zich op:

https://api.cloudflare.com/client/v4/accounts/<account_id>/browser-rendering/crawl

Je hebt een Cloudflare API-token nodig met Browser Rendering Edit-toestemming om het te gebruiken.

Hoe het werkt

De crawl draait als een asynchrone taak in twee stappen:

  1. Start de crawl met een POST-verzoek dat een start-URL bevat. De API retourneert onmiddellijk een taak-ID.
  2. Poll voor resultaten met GET-verzoeken met dat taak-ID. Wanneer de taakstatus verandert van running naar completed, zijn je gecrawlde gegevens klaar.

Taken kunnen tot zeven dagen draaien. Resultaten worden 14 dagen na voltooiing opgeslagen.

Wat je verstuurt

Minimaal stuur je een URL:

curl -X POST 'https://api.cloudflare.com/client/v4/accounts/{account_id}/browser-rendering/crawl' \
  -H 'Authorization: Bearer <apiToken>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com"
  }'

Belangrijke parameters

Parameter Standaard Wat het doet
limit 10 Max pagina’s om te crawlen (tot 100.000)
depth 100.000 Max linkdiepte vanaf start-URL
source all Waar URL’s ontdekt worden: all, sitemaps of links
formats HTML Responsformaat: html, markdown of json
render true JavaScript uitvoeren (true) of snelle HTML-fetch (false)
maxAge 86.400 Cache TTL in seconden (max 604.800)
modifiedSince geen Unix-timestamp: crawl alleen pagina’s gewijzigd na dit tijdstip
options.includePatterns geen Crawl alleen URL’s die overeenkomen met deze wildcard-patronen
options.excludePatterns geen Sla URL’s over die overeenkomen met deze patronen

Wat je terugkrijgt

Elke gecrawlde pagina wordt geretourneerd als een record met de URL, status, content in het gekozen formaat en basismetadata (HTTP-statuscode, paginatitel, definitieve URL na redirects). Met render: true krijg je ook Open Graph-tags. Het antwoord bevat ook browserSecondsUsed voor factureringsinzicht, en een cursor voor het pagineren van resultaten die 10 MB overschrijden.

Hier is het daadwerkelijke taakniveau-antwoord van een gerenderde crawl van 24 pagina’s van een live Shopify-winkel:

{
  "job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "completed",
  "total": 24,
  "finished": 24,
  "browserSecondsUsed": 58.38,
  "record_count": 24,
  "records": [
    {
      "url": "https://www.example-store.com/products/premium-widget-bundle",
      "status": "completed",
      "metadata": {
        "status": 200,
        "title": "Premium Widget Bundle | Example Store",
        "url": "https://www.example-store.com/products/premium-widget-bundle",
        "lastModified": "",
        "og:type": "product",
        "og:site_name": "Example Store",
        "og:title": "Premium Widget Bundle | Example Store",
        "og:image": "https://www.example-store.com/cdn/shop/files/product-image.jpg",
        "og:description": "Our best-selling bundle with everything you need..."
      },
      "markdown": "Store\n\nexample-store\n\nURL\n\nhttps://www.example-store.com\n\nCurrency\n\nUSD\n\n# Premium Widget Bundle\n\nOur best-selling bundle with everything you need..."
    }
  ]
}

Met render: true bevat het metadata-object de volledige set Open Graph-velden: type, sitenaam, titel, afbeeldings-URL en beschrijving. Deze worden uit de OG-metatags van de pagina gehaald tijdens de browserrender. Met render: false bevat de metadata alleen de HTTP-statuscode, paginatitel en definitieve URL. Er worden geen Open Graph-velden geëxtraheerd.

Het markdown-veld bevat de volledige pagina-output, niet alleen de hoofdcontent. Navigatiemenu’s, mega-menu’s, footers en herhaalde templateblokken zijn in elk record opgenomen. In onze tests retourneerde de gemiddelde pagina ongeveer 158 KB aan markdown, waarvan ongeveer 90% herhaalde boilerplate was. Als je dit in een LLM of RAG-pipeline invoert, heb je je eigen content-extractielogica nodig om de template te verwijderen en de daadwerkelijke paginacontent te isoleren.

Hier is wat dezelfde winkel retourneerde toen we render: false draaiden:

{
  "job_id": "f9e8d7c6-b5a4-3210-fedc-ba9876543210",
  "status": "completed",
  "total": 266,
  "finished": 266,
  "browserSecondsUsed": 0,
  "record_count": 256,
  "records": [
    {
      "url": "https://www.example-store.com/products/classic-knit-sweater",
      "status": "completed",
      "metadata": {
        "status": 200,
        "title": "Classic Knit Sweater | Example Store",
        "url": "https://www.example-store.com/products/classic-knit-sweater",
        "lastModified": ""
      },
      "markdown": "Skip to content\n\nFree Shipping $150+\n\n# Classic Knit Sweater\n\nOur best-selling sweater made from premium natural fibers..."
    }
  ]
}

Nul browserseconden, 256 records van 266 pagina’s. De metadata is minimaal vergeleken met de gerenderde versie: geen Open Graph-velden, alleen de HTTP-status, paginatitel en URL. Maar de markdown bevat nog steeds de volledige paginacontent inclusief navigatie, productdetails en footer. Voor server-gerenderde Shopify-winkels heeft de statische HTML al alles wat je nodig hebt.

URL-ontdekking

De crawler ontdekt URL’s via drie bronnen (wanneer source is ingesteld op all):

  1. De start-URL die je opgeeft
  2. Sitemap-links gevonden op het domein
  3. Interne links gevonden op gecrawlde pagina’s

Je kunt dit beperken tot alleen sitemaps of alleen paginalinks met de source parameter. excludePatterns heeft altijd voorrang op includePatterns, dus je kunt breed beginnen en vervolgens secties wegsnijden die je niet nodig hebt.

Renderen vs. snelle fetch

render: true (de standaard) start een headless browser, voert JavaScript uit en wacht tot de pagina volledig is geladen. Dit is nodig voor single-page applicaties en JavaScript-gerenderde content, maar het gebruikt browserseconden die worden gefactureerd.

render: false doet een snelle HTML-fetch zonder JavaScript uit te voeren. Tijdens de bèta worden deze fetches niet gefactureerd. Dit is de juiste keuze voor statische sites of server-gerenderde pagina’s waar de content al in de initiële HTML staat.

Facturering en beschikbaarheid

Het endpoint is beschikbaar op zowel Workers Free als Paid plannen. Gerenderde crawls worden gefactureerd onder Cloudflare’s Browser Rendering-prijzen van $0,09 per browseruur boven je inbegrepen toewijzing.

Workers Free: 10 minuten browsertijd per dag. Het /crawl endpoint is beperkt tot 5 opdrachten per dag, 100 pagina’s per crawl en 6 API-verzoeken per minuut.

Workers Paid ($5/maand): 10 uur browsertijd per maand inbegrepen. Geen per-crawl paginalimiet. 600 API-verzoeken per minuut. Extra browseruren kosten $0,09 per stuk.

Crawls met render: false gebruiken nul browsertijd. Ze zijn gratis tijdens de bèta, maar zullen uiteindelijk onder standaard Workers-prijzen vallen.

Wat is wall clock-tijd?

Wall clock-tijd is de totale verstreken tijd vanaf het moment dat een crawl start tot het eindigt, gemeten op dezelfde manier als met een stopwatch. Het omvat alles: netwerklatentie, Cloudflare’s interne wachttijd, DNS-lookups, serverresponstijd en (als rendering is ingeschakeld) browserexecutietijd.

Wall clock-tijd verschilt van browsertijd. Browsertijd telt alleen de seconden dat Cloudflare’s headless browser actief pagina’s rendert. Een crawl kan 22 minuten browsertijd gebruiken maar 25 minuten wall clock duren vanwege wachtrij- en netwerkoverlast. Crawls zonder rendering gebruiken nul browsertijd maar hebben nog steeds wall clock-tijd van het fetch- en wachtrijproces.

In onze benchmarks rapporteren we beide getallen, zodat je kunt zien waarvoor je betaalt (browsertijd) versus hoe lang je daadwerkelijk wacht (wall clock-tijd).

De kleine lettertjes

Het endpoint respecteert robots.txt-richtlijnen inclusief crawl-delay. Het identificeert zichzelf als CloudflareBrowserRenderingCrawler/1.0. Het omzeilt geen CAPTCHAs, Turnstile-uitdagingen of andere botbescherming. Als je je eigen site crawlt en geblokkeerd wordt, moet je een WAF-uitzonderingsregel maken om de crawler toe te staan.

Hoe Cloudflare /crawl zich gedraagt bij vijf Shopify-winkels

We hebben het /crawl endpoint getest op vijf live Shopify-winkels om snelheid, slagingspercentage, kosten en de interactie van de crawler met elke site te meten. Elke winkelnaam is geanonimiseerd. Dit zijn echte cijfers van echte crawls. Wall clock-tijden zijn geschatte waarden. Sommige vroege tests gebruikten scripts met beperkte foutafhandeling, wat de gerapporteerde slagingspercentages bij bepaalde winkels beïnvloed kan hebben. Waar dit van toepassing is, vermelden we het hieronder.

Dit is geen endpoint dat je instelt en vergeet. Elke winkel reageerde anders op endpoint-verzoeken. Sommige hadden resource-blokkering nodig om een gerenderde crawl te voltooien. Andere retourneerden 429-fouten op de ene modus maar werkten prima op de andere. Crawl-delay-richtlijnen, pagina-aantallen en winkelarchitectuur veranderden allemaal het resultaat. Reken erop dat je de instellingen voor elke site die je crawlt moet testen en afstemmen.

Testpaneel: vijf live Shopify-winkels
A
Grote e-commerce
~3.000 producten
B
Middelgrote kleding
256 pagina's
C
Gezondheid & supplementen
Grote catalogus
D
Kleine winkel
24 pagina's
E
Groot multicategorie
~1.200 pagina's

Test 1: grote e-commerce catalogus (Store A)

We hebben het /crawl endpoint gericht op een grote Shopify-winkel met bijna 3.000 pagina’s. Content kwam snel terug, de markdown was bruikbaar en het endpoint had geen moeite met het ophalen van productpagina’s, collectiepagina’s en blogcontent. Geen proxy-problemen, geen blokkades, geen rate limiting.

We hebben meerdere crawls uitgevoerd op verschillende schalen:

Crawlgrootte Pagina’s geretourneerd Modus Browsertijd Wall clock
20 pagina’s steekproef 20 / 20 (100%) no-render 0s ~1 min
500 pagina’s crawl 500 / 500 (100%) no-render 0s ~18 min
5 pagina’s gerenderd 4 / 5 (80%) render: true 0,9s ~10s

Crawlen zonder JavaScript-rendering behaalde 100% succes op beide schalen. Volledige browserrendering retourneerde 4 van de 5 pagina’s in een kleine steekproeftest. Bij zo’n kleine steekproef kan de enkele ontbrekende pagina een browser-timeout, een tijdelijke fout of een scriptprobleem zijn.

Test 2: kleine Shopify-winkel (Store D, 24 pagina’s)

Een kleinere winkel waar we de volledige workflow testten:

Crawlen zonder rendering retourneerde fouten. Onze eerste test retourneerde 429-responses op de platte HTML-fetch. We hebben deze winkel niet opnieuw getest met verbeterde foutafhandeling, dus we kunnen niet bevestigen of de 429s afkomstig waren van de rate limiting van de winkel of van tijdelijke problemen tijdens de test.

Volledig renderen met op sitemap gebaseerde ontdekking was een volledig succes. 24 van de 24 pagina’s gecrawld, 100% voltooid.

Paginatype Aantal
Products 9
Collections 4
Pages 3
Blogs/News 5
Overig (homepage, blogindex) 3

Een belangrijke ontdekking: de standaard URL-ontdekkingsmodus vond slechts 1 pagina omdat de homepage bijna geen interne links had. Overschakelen naar op sitemap gebaseerde ontdekking vond alle 24. Als je homepage minimaal of JavaScript-heavy is, kan de crawler mogelijk geen pagina’s vinden via alleen links.

Test 3: middelgrote kledingwinkel (Store B, 256 pagina’s), met en zonder rendering

Onze meest gedetailleerde test. Een middelgrote kledingwinkel met 256 indexeerbare pagina’s: producten, collecties, blogposts en informatiepagina’s. We hebben beide modi op de volledige site gedraaid om het werkelijke verschil te meten.

Metriek render: false render: true Verschil
Pagina’s gecrawld 256 / 266 256 / 266 Gelijk
Totale markdown-output 11,0 MB 12,5 MB +14%
Browsertijd 0s 1.338s (22 min) +22 min
Geschatte kosten $0 (bèta) ~$0,03 +$0,03
Wall clock-tijd ~5 min ~25 min 5x langzamer
Belangrijkste bevinding: crawlen zonder rendering vangt 90% van de content op, gratis
De 14% toename in content door volledig renderen kwam bijna volledig van JavaScript-geladen elementen op de homepage en blogindexpagina's. Individuele blogartikelen en productpagina's waren nagenoeg identiek tussen beide modi. Voor winkels met voornamelijk statische content is het overslaan van rendering de duidelijke winnaar: 90% van de bruikbare content, nul browserkosten en 5x snellere afronding.

Test 4: gezondheids- en supplementenretailer (Store C), gedeeltelijk succes op schaal

Een grote retailer in gezondheidsproducten met een enorme catalogus. We hebben twee crawls zonder rendering uitgevoerd op verschillende schalen:

Crawlgrootte Pagina’s geretourneerd Slagingspercentage Wall clock
5 pagina’s steekproef 2 / 5 40% ~25s
100 pagina’s crawl 89 / 100 89% ~3,5 min

Het gedeeltelijke slagingspercentage kan erop wijzen dat de infrastructuur van deze winkel sommige niet-browserverzoeken laat vallen, maar onze eerste test miste robuust foutherstel, dus sommige van deze mislukkingen waren mogelijk herstelbaar met betere retry-afhandeling aan onze kant. Het slagingspercentage verbeterde van 40% naar 89% op grotere schaal. We hebben deze winkel niet opnieuw getest met verbeterde foutafhandeling om de oorzaak te isoleren.

Test 5: grote multicategorie-winkel (Store E, ~1.200 pagina’s)

Onze grootste en meest onthullende test. Een Shopify-winkel met ongeveer 1.200 URL’s verdeeld over vier sitemaps: 521 producten, 626 collecties, 22 pagina’s en 31 blogposts.

Metriek render: false render: true (geoptimaliseerd)
Pagina’s gecrawld 1.200 / 1.200 100 / 100
Totale markdown-output 148,5 MB 11,3 MB
Browsertijd 0s 475s (~8 min)
Geschatte kosten $0 (bèta) ~$0,012
Wall clock-tijd ~55 min ~12 min

De no-render crawl behaalde 100% succes over alle 1.200 pagina’s met nul browserkosten. De gerenderde crawl werd uitgevoerd op een steekproef van 100 pagina’s met resource-blokkeeroptimalisaties ingeschakeld.

Belangrijkste bevinding: renderen kan juist minder content opleveren
Bij Store E retourneerde de no-render crawl 6,8% meer content per pagina dan de gerenderde crawl. Dit is contra-intuïtief. Het blokkeren van afbeeldingen, lettertypen en stylesheets om browsertijd te optimaliseren verhinderde ook dat sommige JavaScript dynamische elementen vulde. De statische HTML bevatte al alle bruikbare content. Voor server-gerenderde Shopify-winkels kan renderen content verminderen in plaats van toevoegen.

Resource-blokkering maakte het verschil tussen een vastgelopen crawl en een schone. Zonder resource-blokkering bleef de gerenderde crawl hangen op 99 van de 100 pagina’s en verbruikte 649 seconden browsertijd voor die 99 pagina’s. Het inschakelen van resource-blokkering (afbeeldingen, media, lettertypen, stylesheets) met een domcontentloaded-wachtconditie voltooide alle 100 pagina’s in 475 seconden, een reductie van 27% in browsertijd zonder vastlopen.

Crawl-delay in robots.txt veroorzaakte zichtbare stagnaties. Store E’s robots.txt specificeert een crawl-delay van 10 seconden voor bepaalde bots. In onze no-render pollingdata verscheen dit als plateaus van meerdere minuten waar het paginaaantal stagneerde voordat het hervatte. De Cloudflare-crawler respecteert crawl-delay-richtlijnen, wat de wall clock-tijd direct verlengt bij sites die deze instellen.

Wat het /crawl endpoint daadwerkelijk accepteert

Het endpoint neemt één start-URL, geen lijst. Het ontdekt pagina’s door naar buiten te spideren vanaf die URL via sitemaps, paginalinks of beide. Als je al een URL-lijst hebt van een Scrapy-crawl en Cloudflare wilt gebruiken voor markdown-conversie, moet je de aparte /markdown of /scrape endpoints afzonderlijk per URL aanroepen.


Wat doet Cloudflare /crawl daadwerkelijk aan de serverzijde?

We hebben de volledige serverlogs opgehaald tijdens een volledig gerenderde crawl van Store D (25 pagina’s) om de werkelijke verkeersfootprint te analyseren. De resultaten onthullen fundamentele verschillen tussen browser-gerenderd crawlen en traditioneel bot-crawlen, met onbedoelde neveneffecten voor analytics, serverbelasting en monitoring van botverkeer.

Metriek Waarde
User-Agent CloudflareBrowserRenderingCrawler/1.0 (100% van hits)
Crawl-venster 134 seconden (~2 minuten)
Piekdoorvoer 82 verzoeken/seconde
Unieke IP’s 23, over 5 Cloudflare-datacenters
GET-verzoeken 2.071
POST-verzoeken 163
Totale verzoeken 2.234
Daadwerkelijk gerenderde pagina’s ~25
Verzoeken per pagina ~89x versterking

Hoeveel verkeer genereert een volledig gerenderde Cloudflare /crawl daadwerkelijk?

De grootste bevinding: slechts 1,1% van de 2.234 verzoeken was daadwerkelijke paginacontent. De overige 98,9% bestond uit JavaScript, CSS, analytics-beacons, trackingpixels en checkout-preloads die werden geactiveerd doordat de browser elke pagina laadde zoals een echte bezoeker dat zou doen.

Verdeling verzoeken per resourcetype: Store D, 25 pagina's gerenderd
JavaScript (75%)
1.676
Analytics-beacons (6,3%)
141
CSS (4,3%)
96
Trackingpixels (3,4%)
74
Checkout-preloads (3,3%)
76
Paginacontent (1,1%)
25

Een niet-gerenderde bot zoals Amazonbot of ChatGPT-User genereert 1 verzoek per pagina. De Cloudflare browserrenderer genereert er 89.

Verhoogt Cloudflare /crawl Shopify Analytics kunstmatig?

Onbedoeld effect: analytics-inflatie
Omdat de browser elke pagina laadt als een echte bezoeker, activeert hij de volledige analytics-stack van Shopify: monorail-beacons, tracking-events, Shop Pay checkout-preloads en web-pixel scripts. Wij geloven dat een enkele gerenderde crawl van je winkel je bezoekersaantallen, sessiemetrieken en conversietrechtergegevens in Shopify Analytics kan opblazen. We hebben dit niet rechtstreeks bevestigd in Shopify's rapportage, maar de serverlogs tonen dezelfde analytics-events die worden geactiveerd als bij een echte klant. Als je regelmatig gerenderde crawls uitvoert, neem dit dan mee in je analytics-basislijn.

De 163 POST-verzoeken in onze logs waren volledig Shopify analytics- en tracking-endpoints die tijdens de crawl werden geactiveerd. Dit zijn dezelfde events die worden geactiveerd wanneer een echte klant je winkel bezoekt. Vanuit het perspectief van Shopify Analytics lijkt de Cloudflare-crawler op een bezoeker die in 2 minuten elke pagina op je site bekijkt.

Hoe snel raakt Cloudflare /crawl je server?

Alle 2.234 verzoeken landden in een venster van 134 seconden. Piekdoorvoer bereikte 82 verzoeken per seconde. De crawler renderde de volledige site van 25 pagina’s in iets meer dan 2 minuten, maar de server zag een aanhoudende burst van verkeer die er niet uitziet als organische browsepatronen.

Voor kleine winkels is dit beheersbaar. Voor grotere winkels met duizenden pagina’s kan de verzoekversterking (89x per pagina) gecombineerd met aanhoudende doorvoer aanzienlijke belasting op de origin server creëren, vooral als je op een gedeeld hostingplan zit of agressieve rate limiting hebt ingesteld.

Waar komt Cloudflare /crawl vandaan?

De crawl werd verdeeld over 5 Cloudflare-datacenters in de VS:

Datacenter % van verzoeken Locatie
ATL 38% Atlanta
ORD 25% Chicago
MIA 23% Miami
EWR 9% Newark
IAD 5% Washington DC

Dit is niet één server die verzoeken doet. Cloudflare verdeelt de renderingwerklast over zijn edge-netwerk. Alle 23 IP’s vielen in het 104.28.x.x-bereik en de user-agent was CloudflareBrowserRenderingCrawler/1.0 bij elk verzoek.

Welke browserfingerprint laat Cloudflare /crawl achter?

De renderer stuurt correcte Sec-Fetch-headers die een echte Chrome-browser nabootsen:

Header Waarde Echte Chrome?
sec-fetch-dest script, document, etc. Ja, komt overeen
sec-fetch-mode cors, navigate Ja, komt overeen
sec-fetch-site same-origin, cross-site Ja, komt overeen
sec-ch-ua (Client Hints) Niet verzonden Nee, echte Chrome verzendt dit
HTTP-versie HTTP/1.1 Nee, echte Chrome onderhandelt HTTP/2 of HTTP/3

Twee fingerprint-hiaten vallen op: de renderer laat sec-ch-ua Client Hints-headers volledig weg (een echte Chrome-browser verzendt deze altijd), en alle verzoeken gebruiken HTTP/1.1 in plaats van HTTP/2 of HTTP/3. Als je botdetectieregels bouwt, zijn dit betrouwbare signalen om Cloudflare’s browserrenderer te onderscheiden van echt bezoekersverkeer.

Hoe verhoudt Cloudflare /crawl zich tot andere AI-bots in serverlogs?

We hebben de Cloudflare-crawl vergeleken met andere bots die dezelfde winkel in hetzelfde 12-uursvenster bezochten:

Totale serververzoeken: dezelfde winkel, hetzelfde 12-uursvenster
Cloudflare Renderer
2.234 reqs
AhrefsBot
~18 reqs
Amazonbot
8 reqs
ChatGPT-User
4 reqs
Traditionele bots halen alleen HTML op (1 verzoek = 1 pagina). De browserrenderer voert de volledige client-side stack uit, wat een 89x verzoekversterking creëert.

Amazonbot en ChatGPT-User halen ruwe HTML op: één verzoek, één pagina, geen JavaScript-executie. AhrefsBot crawlt sitemaps voor ontdekking. De Cloudflare browserrenderer voert een volledige Shopify-storefront uit op elke pagina, waarbij elk script, pixel en preload wordt geactiveerd alsof een echte klant aan het browsen was.

Het kernpunt: browser-gerenderd crawlen creëert een fundamenteel ander verkeersprofiel
Shopify-sites worden bijzonder getroffen vanwege de zware JavaScript-, analytics- en trackingpixel-overhead die op elke pagina wordt geladen. Als je volledig gerenderde crawls uitvoert op een Shopify-winkel, kun je het volgende verwachten: waarschijnlijk opgeblazen analytics-sessies, 89x verzoekversterking in serverlogs en een botverkeersignatuur die er heel anders uitziet dan traditionele crawlers. Neem deze effecten mee in je monitoring, analytics-basislijnen en WAF-regels.

Cloudflare /crawl snelheid en kosten: de volledige benchmark

Elke crawl die we hebben uitgevoerd, in één tabel. Alle winkels geanonimiseerd, alle cijfers van echte tests. Wall clock-tijden zijn geschat. Slagingspercentages voor Stores C en D kunnen zijn beïnvloed door beperkte foutafhandeling in onze eerste testscripts.

Winkel Pagina’s Modus Slagingspercentage Browsertijd Wall clock Kosten
A: Grote e-commerce 500 / 500 no-render 100% 0s ~18 min $0
B: Middelgrote kleding 256 / 266 no-render 96% 0s ~5 min $0
C: Gezondheid & supplementen 89 / 100 no-render 89% 0s ~3,5 min $0
D: Kleine Shopify 24 / 24 render: true 100% 58s ~2 min ~$0,002
E: Groot multicategorie 1.200 / 1.200 no-render 100% 0s ~55 min $0

Hoe snel is Cloudflare /crawl met vs. zonder rendering?

De duidelijkste vergelijking komt van Store B, waar we beide modi op exact dezelfde 256 pagina’s hebben gedraaid:

Wall clock-tijd: Store B, 256 pagina's, dezelfde content
Zonder rendering
5 min
Met rendering
25 min
Volledig renderen voegt ongeveer 5 seconden browsertijd per pagina toe bovenop Cloudflare's wachtrij- en fetch-overhead.

Het patroon over alle elf crawls is consistent: crawlen zonder rendering is dramatisch sneller. Wall clock-tijd zonder rendering is voornamelijk Cloudflare’s interne wachtrij- en fetch-overhead. Volledig renderen voegt ruwweg 5 seconden browsertijd per pagina toe bovenop die basislijn.

Hoeveel kost een volledig gerenderde Cloudflare-crawl per pagina?

Cloudflare’s Browser Rendering-prijzen zijn gebaseerd op browseruren, de tijd die hun headless browser besteedt aan het actief renderen van je pagina’s. Crawlen zonder rendering gebruikt nul browseruren en is gratis tijdens de bèta.

Workers Free-plan: 10 minuten browsertijd per dag. Het /crawl endpoint is verder beperkt tot 5 crawl-opdrachten per dag, met maximaal 100 pagina’s per crawl.

Workers Paid-plan ($5/maand): 10 uur browsertijd per maand inbegrepen. Daarboven betaal je $0,09 per extra browseruur. Geen per-crawl limieten op het /crawl endpoint. Tot 600 API-verzoeken per minuut.

Hier is wat onze testcrawls daadwerkelijk kostten bij $0,09/uur:

Crawl Gebruikte browsertijd Kosten bij $0,09/uur
Store D: 24 pagina’s gerenderd 58 seconden ~$0,002
Store B: 256 pagina’s gerenderd 1.338 seconden (~22 min) ~$0,03
3.000 pagina’s catalogus (geschat) ~4 uur ~$0,36

Bij ruwweg 5 seconden browsertijd per pagina vallen al deze kosten ruim binnen de 10 uur die bij het betaalde plan zijn inbegrepen. Een gerenderde crawl van 3.000 pagina’s zou ongeveer 4 van je 10 inbegrepen uren gebruiken, wat betekent dat je twee volledige crawls per maand kunt uitvoeren voordat je iets boven de $5 basis betaalt. Crawlen zonder rendering is gratis en heeft geen browsertijdkosten op beide plannen.

Wanneer moet je rendering overslaan vs. volledig renderen bij Cloudflare /crawl?

Sla rendering over wanneer:
  • Content al in de HTML-bron staat
  • Snelheid belangrijker is dan volledigheid
  • Je crawling zonder kosten nodig hebt
  • Blogposts, statische pagina's, productcatalogi
Gebruik volledig renderen wanneer:
  • Content door JavaScript wordt geladen
  • Platte HTML-fetch fouten retourneert
  • Je Open Graph-metadata nodig hebt
  • Single-page apps, React/Vue-storefronts

De conclusie

Voor de meeste Shopify-winkels met server-gerenderde content levert crawlen zonder rendering je meer dan 90% van de bruikbare content op, zonder kosten en in een fractie van de tijd.

Wat we hebben geleerd bij het testen van Cloudflare /crawl op Shopify-winkels

Na het uitvoeren van 11 crawls bij 5 live Shopify-winkels en het analyseren van volledige serverlogs, zijn dit de bevindingen die er het meest toe doen.

90% van de content komt binnen zonder rendering

Voor Shopify-winkels met standaard server-gerenderde pagina’s ving crawlen zonder JavaScript-rendering meer dan 90% van de bruikbare content op. De 14% toename in content door volledig renderen kwam bijna volledig van JavaScript-geladen elementen op homepagina’s en indexpagina’s. Individuele productpagina’s en blogartikelen waren hoe dan ook nagenoeg identiek. Tenzij je winkel is gebouwd als een single-page app, heb je waarschijnlijk geen volledig renderen nodig.

Volledig renderen creëert een 89x verkeersvermenigvuldiger

Het renderen van 25 pagina’s genereerde 2.234 serververzoeken. Slechts 25 daarvan waren daadwerkelijke paginacontent. De overige 98,9% bestond uit JavaScript-bestanden (75%), analytics-beacons (6,3%), CSS (4,3%), trackingpixels (3,4%) en checkout-preloads (3,3%). Elke gerenderde pagina activeert de volledige Shopify client-side stack alsof een echte klant aan het browsen was.

Je Shopify Analytics worden waarschijnlijk kunstmatig opgeblazen

Gerenderde crawls activeren de volledige analytics-stack van Shopify: monorail-beacons, tracking-events, Shop Pay-preloads en web-pixel scripts. Wij geloven dat dit betekent dat Shopify Analytics deze als echte bezoekersessies telt. Als dat het geval is, kan een enkele gerenderde crawl je sessieaantallen, paginaweergaven en conversietrechtergegevens opblazen. We hebben dit niet rechtstreeks bevestigd in Shopify’s rapportage, maar de serverlogs tonen alle dezelfde analytics-events die worden geactiveerd als bij een echte klant.

Volledig renderen kan rate limits van de winkel omzeilen

Store D retourneerde 429-fouten op elke pagina zonder rendering. Overschakelen naar volledig renderen op dezelfde winkel produceerde 100% succes. Als je rate limits tegenkomt zonder rendering, is volledig renderen je oplossing.

Sitemap-ontdekking is betrouwbaarder dan linkontdekking

De standaard linkgebaseerde ontdekking vond bijna niets op Store D omdat de homepage heel weinig interne links had. Overschakelen naar op sitemap gebaseerde ontdekking vond alle 24 pagina’s. Gebruik altijd sitemap-ontdekking.

De crawler komt uit 5 Amerikaanse datacenters

Cloudflare verdeelt de renderingwerklast over zijn edge-netwerk. Onze crawl kwam van 23 unieke IP’s verdeeld over Atlanta (38%), Chicago (25%), Miami (23%), Newark (9%) en Washington DC (5%). Alle IP’s vallen in het 104.28.x.x-bereik.

Twee fingerprint-hiaten identificeren het als een bot

De renderer laat sec-ch-ua Client Hints-headers weg (echte Chrome verzendt deze altijd) en gebruikt HTTP/1.1 in plaats van HTTP/2 of HTTP/3. Als je botdetectieregels bouwt, zijn dit betrouwbare signalen.

Renderen kan juist minder content opleveren

Bij Store E retourneerde de no-render crawl 6,8% meer content per pagina dan de gerenderde crawl. Het blokkeren van afbeeldingen, lettertypen en stylesheets om browsertijd te optimaliseren verhinderde ook dat sommige JavaScript dynamische elementen vulde. De statische HTML had al alles. Voor server-gerenderde Shopify-winkels is het niet gegarandeerd dat renderen meer content opvangt.

Resource-blokkering voorkomt vastgelopen crawls

Zonder resource-blokkering bleef de gerenderde crawl op Store E hangen op 99 van de 100 pagina’s en werd nooit voltooid. Het inschakelen van blokkering voor afbeeldingen, media, lettertypen en stylesheets met een domcontentloaded-wachtconditie voltooide alle 100 pagina’s en verminderde de browsertijd met 27%. Als je gerenderde crawls stagneren voordat ze klaar zijn, is resource-blokkering de oplossing.

robots.txt crawl-delay verlengt wall clock-tijd

Store E’s robots.txt specificeert een crawl-delay van 10 seconden. In onze no-render pollingdata verscheen dit als plateaus van meerdere minuten waar het paginaaantal stagneerde voordat het hervatte. De Cloudflare-crawler respecteert crawl-delay-richtlijnen, dus sites met agressieve vertragingen zullen aanzienlijk langere wall clock-tijden hebben dan het paginaaantal alleen zou suggereren.

Kosten zijn laag, maar het gratis plan heeft limieten

Het renderen van 256 pagina’s kostte ongeveer $0,03 bij $0,09 per browseruur. Het renderen van 24 pagina’s kostte ongeveer $0,002. Het Workers Free-plan beperkt browsertijd tot 10 minuten per dag met maximaal 5 crawl-opdrachten en 100 pagina’s per crawl. Het Workers Paid-plan ($5/maand) bevat 10 uur browsertijd per maand zonder per-crawl limieten. Een gerenderde crawl van 3.000 pagina’s zou ongeveer 4 van die 10 inbegrepen uren gebruiken, dus de meeste winkels passen comfortabel in het betaalde plan zonder overschrijding. Crawlen zonder rendering gebruikt nul browsertijd en is gratis op beide plannen tijdens de bèta.


De voordelen

Snelheid

Pagina’s worden bijna onmiddellijk opgehaald versus een Scrapy-crawl van meerdere uren met autothrottle. Geen wachtrij, geen beleefdheidsvertragingen, geen wachten tot je spider duizenden verzoeken op een respectvol tempo heeft verwerkt.

Markdown-output

Het endpoint retourneert voorgeconverteerde HTML-naar-Markdown voor elke pagina. Dit is direct bruikbaar voor LLM-inname, RAG-pipelines en contentanalyse zonder enige nabewerking. Je slaat de volledige extractielaag over en gaat direct naar schone tekst. Voor teams die AI-toepassingen bouwen bovenop website-content, verwijdert dit een stap uit de pipeline.

Rendermodusoptie

Door render: true in te stellen wordt JavaScript uitgevoerd en worden automatisch Open Graph-metadata geëxtraheerd (og:title, og:description, og:image, og:site_name). Voor JavaScript-heavy sites waar content client-side wordt gerenderd, is dit het verschil tussen de echte pagina zien en een lege shell zien.

Geen proxy- of rate-limit-problemen

Cloudflare handelt anti-botmaatregelen en rate limiting af op hun eigen infrastructuur. Je hoeft geen proxy-pools te beheren, user agents te roteren of met CAPTCHAs om te gaan. Eén API-aanroep.

Incrementeel crawlen

De modifiedSince- en maxAge-parameters laten je pagina’s overslaan die niet zijn gewijzigd of recent zijn opgehaald. Voor terugkerende crawls waarbij je contentwijzigingen monitort, bespaart dit zowel tijd als kosten door alleen pagina’s te verwerken die daadwerkelijk nieuw of bijgewerkt zijn.

Eenvoud

Eén API-aanroep. JSON-response. Geen spider-code, geen middleware, geen item-pipelines, geen instellingenbestanden.

Standaard een nette bot

De crawler is een signed-agent die robots.txt, crawl-delay en Cloudflare’s AI Crawl Control respecteert. Hij identificeert zichzelf als CloudflareBrowserRenderingCrawler/1.0 en kan botbescherming of CAPTCHAs niet omzeilen. Je krijgt ethische crawling-compliance zonder de logica zelf te bouwen.


Wat het Cloudflare Crawl Endpoint niet ondersteunt

Hoe verschilt Cloudflare /crawl van een volledige crawl-pipeline?

De onderstaande tabel toont precies welke mogelijkheden aanwezig zijn in Cloudflare’s /crawl endpoint versus een productie Scrapy-pipeline. Dit is gebaseerd op onze echte tests bij Shopify-winkels.

Mogelijkheid Cloudflare /crawl Scrapy-pipeline
Content ophalen (HTML/Markdown) Ja Ja
JavaScript-rendering Ja (render: true) Ja (Splash/Playwright)
Linkontdekking / spidering Ja (platte lijst) Ja (volledige crawl-graaf)
Parent-child linkmapping Nee Ja
Detectie van weespagina’s Nee Ja
Redirect-ketentracking Nee Ja
JSON-LD-extractie Nee Ja
Microdata-extractie Nee Ja
Schemavalidatie + probleemrapportage Nee Ja
Niet-200 statuscodes (404s, 403s) Nee Ja (2.547 404s gevangen in onze test)
URL-limiet 100.000 Geen

Welke gestructureerde data extraheert Cloudflare /crawl?

Met render: false, geen. Geen JSON-LD, geen Microdata, geen OpenGraph-parsing.

Met render: true, alleen basis OG-tags (og:title, og:description, og:image, og:site_name). JSON-LD en schema.org-markup worden niet geparsed, geëxtraheerd of gevalideerd.

Ter vergelijking: onze Scrapy-pipeline produceert schemas_found, issues (ontbrekend contactPoint, address, etc.), top_level_schemas en nested_schemas voor elke URL. Je kunt zien welke pagina’s Product-schema hebben, welke Organization-markup missen en welke validatiefouten hebben die ervoor zorgen dat AI-systemen de content verkeerd lezen.

Welke HTTP-statuscodes retourneert Cloudflare /crawl?

Alleen 200-responses. Onze Scrapy-crawl van dezelfde site ving 2.547 404-fouten op, plus 403-responses en verbindingsfouten. 404-detectie is cruciaal voor spookpagina-analyse, reparatie van gebroken links en redirect-mapping. Zonder dit mis je de pagina’s die actief linkequity lekken en AI-crawlers in verwarring brengen.

Hoeveel URL’s kan Cloudflare /crawl verwerken?

Tot 100.000 per opdracht. Dit dekt de meeste sites, maar grote e-commerce catalogi met honderdduizenden productpagina’s, variant-URL’s en gefilterde collectiepagina’s zullen de limiet overschrijden. Scrapy heeft geen inherente URL-limiet.

Heeft Cloudflare /crawl een URL-resolutiebug?

We vonden 233 van de 908 links op een enkele productpagina met gebroken paden. De markdown-converter lost relatieve URL’s verkeerd op ten opzichte van de pagina-URL, wat dubbele-pad-URL’s oplevert zoals /products/slug//www.example.com/.... Dit is een bevestigde bug in Cloudflare’s converter die elke downstream linkanalyse beïnvloedt.

Hoeveel boilerplate zit er in de markdown-output van Cloudflare /crawl?

De gemiddelde pagina retourneerde 158 KB aan markdown. Ruwweg 90% is herhaalde templatecontent: volledige navigatie, mega-menu en footer in elk record. Voor contentanalyse betekent dit zware deduplicatiewerk, en voor LLM-tokengebruik lopen de kosten snel op. Je hebt je eigen content-extractielogica nodig bovenop de markdown om de daadwerkelijke paginacontent te isoleren.

Wat classificeert Cloudflare /crawl niet?

Er is geen contenttype-tagging. Productpagina’s, collectiepagina’s, blogposts en homepagina’s komen allemaal terug als ongedifferentieerde records. Scrapy classificeert elke URL op type, wat essentieel is om crawldekking per paginacategorie te begrijpen en om te identificeren welke contenttypes AI-bots prioriteren.

Welke finalisatiefuncties ontbreken bij Cloudflare /crawl?

Geen screenshots van spookpagina’s. Geen JavaScript-renderingvergelijking (wat de bot ziet versus wat de browser ziet). Geen robots.txt AI-botanalyse. Geen crawlkwaliteitsrapport. Geen clientmanifest. Geen CDN-synchronisatie. De Cloudflare-data is alleen ruwe content. Elk onderdeel van de rapportage- en analysepipeline zou apart gebouwd moeten worden.

Hoeveel kost Cloudflare /crawl voor grote sites?

Over onze tests heen kostte render: true gemiddeld ruwweg 5 seconden browserexecutie per pagina. Een crawl van 256 pagina’s gebruikte 1.338 browserseconden (22 minuten) en kostte ongeveer $0,03 bij $0,09 per browseruur. Een crawl van 24 pagina’s gebruikte 58 browserseconden en kostte ongeveer $0,002. Geëxtrapoleerd naar een catalogus van 3.000 pagina’s: ongeveer 4 uur browsertijd. Het Workers Free-plan is beperkt tot 10 minuten browsertijd per dag, 5 crawl-opdrachten per dag en 100 pagina’s per crawl. Het Workers Paid-plan ($5/maand) bevat 10 uur browsertijd per maand zonder per-crawl limieten, dus een crawl van 3.000 pagina’s zou ongeveer 4 van die 10 inbegrepen uren gebruiken. render: false gebruikt nul browsertijd en is gratis tijdens de bèta op beide plannen.


De conclusie

Cloudflare’s crawl endpoint is uitstekend voor:

  • Snelle contentsnapshots wanneer je snel paginatekst nodig hebt
  • LLM-klare markdown voor RAG-pipelines en contentinname
  • Ad-hoc paginacontroles waar je de exacte URL’s kent die je nodig hebt
  • Snelle sitewide contentpulls wanneer je markdown-tekst nodig hebt zonder een spider te bouwen

Het kan een volledige crawl-pipeline niet vervangen omdat de waarde van de pipeline ligt in:

  • Volledige crawl-graaf met linktopologie, detectie van weespagina’s en 404-dekking
  • Gestructureerde data-extractie en -validatie (JSON-LD, Microdata, OpenGraph)
  • Contentclassificatie op paginatype
  • De volledige finalisatiepipeline inclusief spookpagina-analyse, JavaScript-renderingvergelijking, schemarapporten en LLM-gereedheidsscoring

De beste hybride aanpak

Gebruik Cloudflare als aanvullende gegevensbron. Nadat een volledige crawl je URL’s heeft geïdentificeerd, gebruik je Cloudflare’s markdown-output om LLM-gereedheidsscoring of contentkwaliteitsanalyse te voeden waar je de daadwerkelijke paginatekst nodig hebt in plaats van gestructureerde metadata. De crawl-pipeline ontdekt en classificeert. Het Cloudflare-endpoint levert schone tekst voor de pagina’s die ertoe doen.

Wil je de volledige crawl-pipeline in actie zien?

Plan een gesprek

Veelgestelde vragen

Welke website-auditfuncties worden niet ondersteund door Cloudflare /crawl?

Cloudflare /crawl ondersteunt niet: volledige crawl-graafconstructie, parent-child linkmapping, detectie van weespagina's, redirect-ketentracking, JSON-LD- of Microdata-extractie, schemavalidatie, niet-200 statuscodes (404s, 403s), contenttype-classificatie, paginabytegrootte-meting, detectie van spookpagina's, JS vs HTML renderingvergelijking, robots.txt AI-botanalyse of backlink-kruisverwijzing. Het is een content-fetcher, geen site-audittool.

Hoe verschilt Cloudflare /crawl van Scrapy voor e-commerce crawling?

Cloudflare /crawl haalt content snel op zonder infrastructuur te beheren. Scrapy bouwt een complete crawl-graaf met linktopologie, extraheert en valideert gestructureerde data (JSON-LD, Microdata, OpenGraph), vangt alle HTTP-statuscodes op inclusief 404s, classificeert pagina's op contenttype en voedt een downstream pipeline voor spookpagina-analyse, schemarapporten en LLM-gereedheidsscoring. Cloudflare geeft je de paginatekst; Scrapy geeft je de volledige site-architectuur.

Wat is de exacte URL-limiet voor Cloudflare /crawl?

100.000 URL's per crawl-opdracht. De standaard limit is 10, dus je moet deze expliciet instellen. De maximale depth is ook 100.000. Voor sites die 100K pagina's overschrijden, is Scrapy of een andere crawler zonder inherente URL-limiet vereist.

Extraheert Cloudflare /crawl JSON-LD of valideert het schema-markup?

Nee. Met render: false wordt er nul gestructureerde data geëxtraheerd. Met render: true worden alleen basis Open Graph-tags geretourneerd (og:title, og:description, og:image, og:site_name). JSON-LD, Microdata en schema.org-markup worden in geen van beide modi geparsed, geëxtraheerd of gevalideerd.

Hoeveel kost Cloudflare /crawl voor het renderen van grote sites?

Over onze tests heen kostte render: true gemiddeld ruwweg 5 seconden browsertijd per pagina. Een site met 256 pagina's gebruikte 1.338 browserseconden (22 minuten) en kostte ongeveer $0,03 bij $0,09 per browseruur. Een site met 24 pagina's gebruikte 58 seconden en kostte ongeveer $0,002. Geëxtrapoleerd naar een catalogus van 3.000 pagina's: ongeveer 4 uur browsertijd. Het Workers Free-plan is beperkt tot 10 minuten per dag, 5 crawl-opdrachten per dag en 100 pagina's per crawl, dus grote gerenderde crawls vereisen het Workers Paid-plan ($5/maand), dat 10 uur browsertijd per maand bevat zonder per-crawl limieten. render: false gebruikt nul browsertijd en is gratis tijdens de bèta op beide plannen.

Heeft Cloudflare /crawl een bekende URL-resolutiebug?

Ja. In onze test hadden 233 van de 908 links op een enkele productpagina misvormde paden. De markdown-converter plaatst de pagina-URL voor relatieve paden zoals //www.example.com/cdn/..., waardoor gebroken dubbele-pad-URL's ontstaan. Dit beïnvloedt elke downstream linkgraafanalyse of interne linkingsaudit die is opgebouwd uit de markdown-output.

Waarom retourneert Cloudflare /crawl met render false 429-fouten op sommige Shopify-winkels?

render: false doet een ruwe HTML-fetch zonder een headless browser. In een van onze tests retourneerde render: false 429-fouten terwijl render: true met 100% succes werkte op dezelfde winkel. We hebben dit niet opnieuw getest met verbeterde foutafhandeling, dus de 429s kunnen zijn veroorzaakt door de rate limiting van de winkel, tijdelijke API-problemen of een combinatie. Als je 429-fouten ziet zonder rendering, probeer dan render: true als eerste stap.

Accepteert Cloudflare /crawl een lijst met URL's?

Nee. Het endpoint neemt een enkele start-URL en ontdekt pagina's door naar buiten te spideren via sitemaps, paginalinks of beide. Als je al een URL-lijst hebt en Cloudflare's markdown-conversie wilt gebruiken, gebruik dan de aparte /markdown of /scrape endpoints, die individuele URL's per verzoek accepteren.

Waarom vindt Cloudflare /crawl met source all slechts één pagina op sommige sites?

De standaard source: all ontdekt URL's via zowel sitemaps als paginalinks. Als de start-URL heel weinig interne links heeft (gebruikelijk bij minimale homepagina's of JavaScript-heavy SPA's), kan de crawler mogelijk geen extra pagina's vinden via alleen linkontdekking. Schakel over naar source: sitemaps om ervoor te zorgen dat de crawler de volledige sitemap.xml leest en alle vermelde URL's ontdekt.

Wat is de beste manier om Cloudflare /crawl te gebruiken met een volledige crawl-pipeline?

Gebruik eerst de volledige crawl-pipeline (Scrapy of equivalent) om URL's te ontdekken, de linkgraaf op te bouwen, gestructureerde data te extraheren, 404s vast te leggen en content te classificeren. Gebruik vervolgens Cloudflare's /markdown of /scrape endpoints om schone markdown op te halen voor LLM-gereedheidsscoring, contentkwaliteitsanalyse of RAG-inname waar je de daadwerkelijke paginatekst nodig hebt in plaats van gestructureerde metadata.

Hoeveel sneller is Cloudflare /crawl render false vergeleken met render true?

In onze directe vergelijking op dezelfde site met 256 pagina's was render: false in ongeveer 5 minuten klaar. render: true duurde ongeveer 25 minuten voor dezelfde pagina's. Dat is een 5x snelheidsverschil. Het wall clock-verschil komt door ruwweg 5 seconden browserexecutie die per pagina wordt toegevoegd wanneer rendering is ingeschakeld. render: false kostte $0 tijdens de bèta. render: true kostte ongeveer $0,03 voor dezelfde crawl.

Hoeveel extra content vangt Cloudflare /crawl render true op vergeleken met render false?

In onze test met 256 pagina's produceerde render: true 12,5 MB aan markdown tegenover 11,0 MB van render: false, een toename van 14%. De extra content kwam bijna volledig van JavaScript-geladen elementen op de homepage en blogindexpagina's. Individuele productpagina's en blogartikelen waren nagenoeg identiek tussen beide modi. Voor sites met voornamelijk server-gerenderde content vangt render: false meer dan 90% van de bruikbare tekst op, zonder kosten en 5x sneller.

Werkt Cloudflare /crawl betrouwbaar op alle Shopify-winkels?

Dat hangt af van de winkel en de rendermodus. In onze tests bij vijf Shopify-winkels: Store A (grote catalogus) behaalde 100% succes met render: false. Store B (middelgrote kleding) behaalde 96% succes met beide modi. Store C (gezondheid en supplementen) behaalde 40% op een steekproef van 5 pagina's en 89% op een crawl van 100 pagina's met render: false, hoewel onze eerste test robuust foutherstel miste en sommige mislukkingen mogelijk herstelbaar waren. Store D (kleine winkel) retourneerde 429-fouten met render: false maar behaalde 100% met render: true. Store E (groot multicategorie, ~1.200 pagina's) behaalde 100% succes met render: false en 100% op een gerenderde steekproef van 100 pagina's met resource-blokkeeroptimalisaties. We hebben Stores C en D niet opnieuw getest met verbeterde foutafhandeling. Test beide modi op je specifieke winkel voordat je je vastlegt op een crawl-strategie.

Wat is de wall clock-tijd voor een Cloudflare /crawl van 500 pagina's met render false?

In onze test was een crawl van 500 pagina's met render: false in ongeveer 18 minuten klaar met een slagingspercentage van 100%. Een crawl van 256 pagina's op een andere winkel was in ongeveer 5 minuten klaar. Een crawl van 100 pagina's was in ongeveer 3,5 minuten klaar. Deze wall clock-tijden zijn schattingen op basis van pollingintervallen, geen nauwkeurige metingen. De wall clock-tijd is voornamelijk Cloudflare's interne wachtrij- en HTTP-fetch-overhead, niet browserrendering, aangezien er geen browserseconden worden gebruikt met render: false.

Hoeveel serververzoeken genereert een Cloudflare /crawl render true?

In onze serverloganalyse genereerde een enkele render: true-crawl van 25 pagina's 2.234 totale verzoeken: 2.071 GET's en 163 POST's. Dat is ruwweg 89 serververzoeken per daadwerkelijk gerenderde pagina. Slechts 1,1% van de verzoeken was daadwerkelijke paginacontent. De overige 98,9% bestond uit JavaScript-bestanden (75%), analytics-beacons (6,3%), CSS (4,3%), trackingpixels (3,4%) en checkout-preloads (3,3%). Als je botverkeer monitort of serverbelasting beheert, verwacht dan dat een gerenderde crawl 89x het aantal daadwerkelijke paginaverzoeken in je serverlogs genereert.

Welke user-agent gebruikt Cloudflare /crawl en uit welk IP-bereik komt het?

De crawler identificeert zichzelf als CloudflareBrowserRenderingCrawler/1.0 bij 100% van de verzoeken. In onze logs kwamen alle verzoeken van 23 unieke IP's in het 104.28.x.x-bereik, verdeeld over 5 Amerikaanse Cloudflare-datacenters: ATL (38%), ORD (25%), MIA (23%), EWR (9%) en IAD (5%). Er is geen user-agent rotatie of IP-vermomming. De crawler is ontworpen als een ondertekende, identificeerbare bot.

Verhoogt Cloudflare /crawl Shopify-analytics en bezoekersaantallen kunstmatig?

Dat geloven we wel, maar we hebben het niet rechtstreeks bevestigd in Shopify's rapportage. Omdat render: true JavaScript uitvoert, activeert het op elke pagina de volledige analytics-stack van Shopify: monorail-beacons, /api/collect tracking-events, Shop Pay checkout-preloads en web-pixel sandbox-scripts. In onze test waren 163 van de 2.234 verzoeken POST-verzoeken naar Shopify analytics-endpoints. Dit zijn dezelfde events die worden geactiveerd voor echte klanten. Als Shopify deze als echte sessies telt, zouden je sessieaantallen, paginaweergaven en conversietrechtergegevens kunstmatig worden opgeblazen.

Hoe kun je Cloudflare /crawl detecteren in serverlogs versus echt browserverkeer?

Twee betrouwbare fingerprint-hiaten: Cloudflare's browserrenderer laat sec-ch-ua Client Hints-headers weg (een echte Chrome-browser verzendt deze altijd), en alle verzoeken gebruiken HTTP/1.1 in plaats van HTTP/2 of HTTP/3 die een echte browser zou onderhandelen. Het verzendt wel correcte sec-fetch-dest, sec-fetch-mode en sec-fetch-site-headers die overeenkomen met echte Chrome. De user-agent is altijd CloudflareBrowserRenderingCrawler/1.0 en alle IP's vallen in het 104.28.x.x-bereik.