Page data
Some data describes the whole page rather than an element: structured data for search engines, metadata, or the content itself as Markdown for an LLM. Ask for it with extract instead of a selector:
Actions
Data
extract | Returns |
|---|---|
"json-ld" | Every <script type="application/ld+json"> block, parsed, as an array. @graph contents are listed one by one; invalid blocks are skipped |
"microdata" | Every top-level itemscope item, as { "type", "id", "properties" }, nested items included |
"open-graph" | The og: tags, without the prefix: { "title": …, "image": … }. Repeated tags become arrays |
"script-data" | JSON the app ships for the browser: Next.js __NEXT_DATA__, <script type="application/json">, and window.__X__ = {…} states (Nuxt, Redux, Apollo…), also as JSON.parse("…"). An object keyed by script id or variable name |
"meta" | title, canonical (absolute), lang, and every <meta> tag by name or property |
"markdown" | The page's main content as Markdown |
"text" | The page's main content as plain text, one line per paragraph |
Structured data is often the most reliable source: the price, stock or rating the site publishes for search engines, already typed:
"product": [{
"@type": "Product", "name": "Desk lamp", "sku": "DL-42",
"offers": {
"@type": "Offer",
"price": "1299.50",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
}
}]App data (Next.js, Nuxt…)
Sites built with Next.js, Nuxt or a Redux store often embed all of a page's data as JSON for the browser. It's usually more complete than what the page shows: ids, stock, every variant…
Actions
Data
"app": {
"__NEXT_DATA__": {
"props": {
"pageProps": {
"product": {
"id": 42,
"name": "Desk lamp",
"stock": 12,
"variants": [{ "color": "black", "price": 1299.5 }, …]
}
}
},
…
},
"__INITIAL_STATE__": { "cart": { "items": 0 }, "user": null }
}To read one value, or a list, use a json field instead of a selector: a path in that data, with [*] for every item of an array. Inside items of a JSON list, paths are relative to each item. Transforms apply as usual:
Actions
Data
"data": {
"stock": 12,
"variants": [{ "color": "black", "price": 1299.5 }, { "color": "white", "price": 1349 }]
}Only data is read: scripts are never run. Data that a page loads afterwards with its own requests is a different case: use browser.capture.
Markdown and text for LLMs
"markdown" gives a model the page without its markup: headings, lists, links and tables kept, menus and scripts gone:
Actions
Data
The main content is <main>, [role=main] or <article> when the page has one, else <body>. Navigation, headers, footers, sidebars, forms, scripts and hidden elements are left out, and links and images are made absolute.
"text" is the same content without any formatting.
For one section rather than the whole page, use a selector with "output": "markdown", see HTML and Markdown.
Both are capped at 200,000 characters.