Two parallel fetches — plain HTML and JS-rendered DOM. Compare links, headings, JSON-LD blocks, visible text. The headline metric is ai_bot_blind_pct: how much of your page is invisible to AI crawlers that don't execute JavaScript.
Google's crawler now renders JavaScript reliably. Most AI search crawlers do not. GPTBot, Claude-Web, PerplexityBot, CCBot all default to a non-rendering fetch — they see your static HTML, never the post-hydration DOM. If your content lives in client-rendered React components, your AEO presence is whatever's in the initial HTML payload — typically a near-empty shell.
render-diff measures the gap. It fetches the page twice in parallel — once with a plain reqwest GET, once through a headless Chrome render — and diffs the results.
curl -X POST https://api.crawlcrawl.com/v1/actors/render-diff \
-H "Authorization: Bearer crk_..." \
-d '{"url":"https://your-spa.example.com"}'
# → 200
{
"actor": "render-diff",
"elapsed_ms": 4444,
"data": {
"static": { "word_count": 12, "link_count": 0, "json_ld_count": 0 },
"rendered": { "word_count": 2482, "link_count": 39, "json_ld_count": 2 },
"delta": {
"ai_bot_blind_pct": 0.995,
"assessment": "severe — most content invisible to non-rendering crawlers",
"links_only_after_render": [ "..." ],
"headings_only_after_render": [ "..." ]
},
"rendered_cost_usd": 0.0024
}
}
| ai_bot_blind_pct | Assessment | Interpretation |
|---|---|---|
| ≥ 0.5 | severe | Most content invisible to non-rendering crawlers. SPA-only site. |
| 0.2 – 0.5 | moderate | Significant content requires JS. Above the fold OK, below the fold lost. |
| 0.05 – 0.2 | minor | Small share of content is JS-rendered. Mostly OK for AI. |
| < 0.05 | negligible | Static HTML matches rendered DOM. Full AI visibility. |
AEO migration checklist. Before pushing SPA-style pages, run render-diff against the staging URL. Any page with ai_bot_blind_pct > 0.2 needs SSR/SSG or a fallback strategy.
Competitive AEO. Compare your render-diff to a competitor's. If theirs scores 0.0 and yours scores 0.6, you have a structural gap to AI visibility that no amount of content writing fixes.
Periodic monitoring. Combine with Monitors to track render-diff over time. A regression to "severe" usually means a deploy broke SSR.
One page-credit + one cloud-credit per call (covers the chrome render). Typical cost per call: ~$0.0024 USD. See full pricing →
The single most useful number for AEO audits in 2026. ~$0.0024 per measurement.
Get an API key — free