Skip to content

Build1 publisher3 min readPublished

Screaming Frog could have crawled Carrefour's 30,000 pages if the edge had let it in

NessFlow's write-up of a failed 30,000-page audit on a Carrefour regional storefront puts the blocker at adaptive rate limiting and WAF edge rules against a single desktop IP, and hands the reliable fix to the retailer's edge team.

The Engineer · Build desk

Photograph accompanying Screaming Frog could have crawled Carrefour's 30,000 pages if the edge had let it in
Photo: cloudflare.com

What happened

  • NessFlow published an account of auditing one of Carrefour's regional storefronts, roughly 30,000 crawlable pages on a PWA front end whose initial HTML response is a shell filled in client-side.
  • An SEO consultant had already pointed Screaming Frog at the same site, and that crawl never produced a usable dataset.
  • It calls the reliable fix having the client allowlist the auditor's IP at the edge, and says NessFlow instead starts from server logs, 50 million lines of which it has analysed in private beta.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • constraint On a WAF-fronted storefront, the retailer's edge configuration sets how much of the site an external auditor can see. The engagement starts as a permissions negotiation and only later becomes a tool comparison.
  • decision For a faceted catalog, the exclusion rules have to exist before the crawl begins. On any site whose facet patterns you have not seen, budget a throwaway discovery pass.
  • cost Paying for coverage of every product page buys status codes on pages with no non-branded demand, while the findings that move revenue sit on the category, subcategory and brand URLs.
  • contradiction Anyone citing this post to justify a server-rendering migration for AI visibility is borrowing a conclusion its documented run did not test.

Sustained concurrency from one desktop, on one IP, with one user agent is the request pattern adaptive rate limiting exists to catch. Slowing down and changing the user agent are available moves, and the post says they are not the reliable ones [11]. An audit tool whose coverage depends on the retailer's edge team agreeing to add an allowlist entry is a permissions product first and a software product second.

Thirty thousand pages is well inside what the tool handles. Screaming Frog's memory storage mode is recommended up to 500k URLs and handles a couple hundred thousand on 8GB of RAM, and database storage mode goes into the millions [5]. "Anyone claiming 30k pages broke the tool is describing a misconfiguration, not a limit," the author wrote [6].

Rendering is a time cost, and the time is checkable. The SEO Spider renders with Chromium, resource crawling has to stay enabled, and Screaming Frog's own guidance notes most servers do not want to be crawled faster than about 5 URLs per second [7]. Thirty thousand URLs at five per second is 6,000 seconds, or one hour and forty minutes [1]. The post calls 30k rendered URLs a multi-hour job on a laptop [8]. For both figures to hold, the effective page rate has to sit below five per second. Fetching each page's scripts and API responses on the same politeness budget does that.

The six hours come from the URL space. A faceted grocery catalog is a combinatorial space. The exclude regex that contains it has to be written from facet patterns you learn by crawling, and on an unfamiliar site the first crawl diverges and you find out at hour six [9]. Six hours at five requests per second is 108,000 requests, 3.6 times the nominal page count [2].

The post's title is "Googlebot Renders Your JavaScript. ChatGPT Doesn't." [13] The storefront it describes is client-rendered: the initial HTML response is a shell, with product, category and facet content assembled in the browser [3]. The run itself reports a desktop crawler and server-side log analysis, and no fetch by an LLM crawler [14]. The author wrote that the honest framing is not crawling harder; it is starting from the server side, where you do not need to be let in because you are already inside [12]. The post's access argument holds on its own evidence. Measuring what a model's fetcher gets back from shell HTML is a different exercise, and this run did not do it.

Suppose the crawl had finished. The post's argument is that a 30,000-SKU catalog rarely carries more than a few hundred URLs with meaningful non-branded demand, almost all of them category, subcategory and brand pages [15]. Read "a few hundred" as 300 and that is 1 percent of the crawlable pages [3]. The decisions sit in that 1 percent: which facet subset gets promoted to a real landing page with its own copy, and what happens to the thousands of product pages that die every month. That last one is a choice between 404 and 410, a redirect to the category, or staying live with alternatives [16][18]. Weekly flyer and campaign pages go stale into orphans and soft 404s, and the post says those are often the pages that earned the site its few real backlinks [19].

What to watch

  • Watch for a log-side comparison from NessFlow naming which AI fetchers requested the storefront and what status and payload they received. That would put evidence behind the post's title.
  • Whether the Carrefour regional storefront moves category and facet content into the initial HTML response instead of assembling it in the browser.
  • Whether NessFlow publishes the store-page analysis it flags for chains, which the post identifies as the strongest and most neglected organic asset.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories