POST /web/crawl response carries metadata at two levels. Each item in results has a metadata object describing that page, and the response itself has a run-level metadata object with counters for the whole crawl, plus cache_metadata.
Read a crawl response
Send this body toPOST /web/crawl. See the Quickstart for authentication and SDK setup.
Per-page metadata
results[].metadata always has these crawl-specific fields:
The same object also carries the fields Scrape extracts from page HTML:
description, language, keywords, canonicalUrl, author, siteName, image, favicon, publishedTime, modifiedTime, robots, openGraph, twitter, alternates, headings, jsonLd, and additionalMeta. They are omitted when not found. See Scrape page metadata for each field.
A failed page keeps its metadata entry with success: false and an empty markdown string, so check success before using the content.
Run metadata
The top-levelmetadata object summarises the run. Every counter is always present.
Read
partial alongside these counters. It is true when timeoutOpts.behavior is return-partial and the crawl returned the usable results collected before the deadline; partial collections are not cached as complete results.
Cache metadata
Set
maxAgeMs to control how old cached page content may be; see page content.
Related
- Crawl overview: the request and how to iterate
results. - Scrape page metadata: descriptions of the shared per-page fields.
- Scope and limits: the filters that decide which URLs are crawled or skipped.
- Freshness and caching: how cached outputs are reused.