Turn Any Rendered Web Page Into Structured Data With the Analyze API

TutoSartup excerpt from this article:
The v3/analyze endpoint takes the other route: it renders the page like a browser would, captures it, and hands back a structured payload describing what rendered, in one call…com”, “format”: “png”, “width”: 1280, “height”: 720, “waitForDom”: true, “enableSummary”: true, “…

Turn Any Rendered Web Page Into Structured Data With the Analyze API

Raw HTML is a poor description of what a page actually shows. Modern sites assemble their real content client-side — after the JavaScript runs, after the data loads, after the layout settles — so scraping the initial markup often gives you a shell, not the page a visitor sees. The v3/analyze endpoint takes the other route: it renders the page like a browser would, captures it, and hands back a structured payload describing what rendered, in one call.

That payload is the useful part. Instead of a screenshot you then have to look at, you get JSON your code can act on directly.

What Analyze Actually Returns

A single POST to /api/v3/analyze gives you both the capture and structured insights about it:

curl --request POST 
  --url https://api.prod.ss.snapshot-site.com/api/v3/analyze 
  --header 'Content-Type: application/json' 
  --header 'x-snapshotsiteapi-key: YOUR_API_KEY' 
  --data '{
    "url": "https://example.com",
    "format": "png",
    "width": 1280,
    "height": 720,
    "waitForDom": true,
    "enableSummary": true,
    "enableQuality": true
  }'

The response bundles the rendered screenshot with the structured data:

{
  "status": "success",
  "fetchTime": "2026-07-22T09:00:00.000Z",
  "message": "Analysis completed",
  "url": "https://example.com",
  "screenshot": {
    "link": "https://api.prod.ss.snapshot-site.com/screenshots/.../capture.png",
    "width": 1280,
    "height": 720
  },
  "summary": "A concise AI-generated description of what the page contains.",
  "topics": [
    "primary subject",
    "secondary theme",
    "notable detail"
  ],
  "quality": {
    "isBlank": false,
    "hasCaptcha": false,
    "httpStatus": 200,
    "readabilityScore": 60
  },
  "fromCache": true
}

Three fields carry the structured data:

  • summary — an AI-generated description of the rendered page (returned when enableSummary is true).
  • topics — an array of key subjects extracted from the page content.
  • quality — a set of validation signals (returned when enableQuality is true): isBlank flags an empty render, hasCaptcha flags a bot wall, httpStatus reports the response code, and readabilityScore estimates how legible the text is.

That is the shape of the “structured data” here: a fixed, predictable insight payload about the rendered page. It is not a scraper — you don’t define your own fields or CSS selectors to pull arbitrary values into a custom schema. Analyze reads the page and returns its structured summary, topics, and quality assessment. If you’re deciding between this and the plainer capture endpoints, Snapshot API v1 vs v2 vs v3: Which Endpoint Should You Use? lays out where each one fits.

Render First, Then Read

The reason this beats parsing HTML for so many pages is timing. analyze accepts the same rendering controls as the capture endpoints, so you can make sure the page is fully settled before anything is read from it:

  • waitForDom waits for the DOM to stabilize before capture — useful on data-heavy pages that keep mutating after first paint.
  • delay (0–10 seconds) buys extra time for content that loads late.
  • hideCookie removes common cookie banners so they don’t dominate the summary or block content.
  • hide takes comma-separated CSS selectors to strip noise (overlays, chat widgets, promo bars) before the page is read.
  • fullSize captures the whole page rather than just the viewport.

If your target lazy-loads images or animates content into view, the same timing tactics from Waiting for Lazy-Loaded Images and Animations Before Screenshots apply directly — a summary generated from a half-loaded page is a summary of the wrong page.

Three Ways to Put It to Work

Content QA

Point analyze at a page after a deploy and check the quality block before a human ever looks. isBlank: true means the render came back empty — a broken build or a failed data fetch. hasCaptcha: true means a bot wall is intercepting your own monitoring. A low readabilityScore on a page that should be text-rich is a signal that the main content didn’t render. These are cheap, automatic gates that catch the failures screenshots alone make you eyeball.

Read the full article on Snapshot Site →

Turn Any Rendered Web Page Into Structured Data With the Analyze API