Parameters
How the selector interacts with the datamodel
The selector parameter behaves very differently between STATIC and LLM_DOM — be careful not to confuse the two.
STATIC: Theselectoris a readiness gate only. Before extracting, the runtime waits up towait_timems for the selector to resolve (throwingselector_error_messageif it never does). It is not prepended to field paths and does not restrict what is extracted — everypathinsideextract_data_modelis evaluated against the full document (including iframes and open shadow DOM). To scopeSTATICextraction to a specific region, put the XPath on the array or field’s ownpathinstead (e.g.,"path": "//table//tbody/tr"for row containers with relative".//td[1]"children).LLM_DOM: Theselectoris required. The runtime waits for the element, then takes itsouterHTMLand sends only that subtree to the model as the extraction input. Choose the smallest element that still contains every field you want the model to extract.LLM_VISIONandPROMPT: Theselectoris not used.
Schema Structure
Theextract_data_model follows JSON Schema with CloudCruise extensions:
Schema Properties
Examples
Basic Extraction with LLM_DOM
Extract user information using AI:STATIC Extraction with XPath
Extract data using explicit XPath selectors:id, href, data-*) by pointing the XPath to the attribute:
Arrays
Extract Array of Items
Extract a list of items from the page:Static Array Extraction
To extract an array usingSTATIC execution, provide an XPath that matches multiple elements. Each matched element becomes an item in the array:
path on the array to match the repeating container elements, then use relative XPaths for each property within the items:
path matches each <tr> row, and each property uses a relative XPath to extract the corresponding cell within that row.
Overwrite Arrays
Arrays are ‘append’ by default. If you extract into the same array twice e.g. in a loop, new items will be appended. You can override this behavior by adding the array key to theoverwriteArrayKeys array. Here’s an example JSON schema you could use in a ExtractDatamodel node:
Access Browser Variables
We allow extraction of some browser variables:- The complete URL the browser agent is on:
{{window.location.href}} - The path name of the current URL:
{{window.location.pathname}} - The query string of the current URL:
{{window.location.search}}
STATIC.
Extract Raw HTML
You can extract the HTML content of the current page using document variables:- Sanitized HTML (
{{document.sanitized}}): Extracts a simplified version of the HTML that removes most attributes and only maintains the structure, tags, and content. This is useful for cleaner data extraction and reduces noise when processing HTML. - Complete HTML (
{{document}}): Extracts the entire raw HTML with all attributes intact, including classes, IDs, data attributes, styles, and other metadata.
STATIC.
Extract OS Clipboard
Use the{{clipboard}} variable to read the worker’s operating-system clipboard as the extraction source. When an application can copy the exact text you need to the clipboard, you can read it back verbatim: the full, character-exact content (including multi-line text), without the transcription errors or truncation of screenshot/vision extraction.
First trigger the copy (a Copy button via a CLICK node, or a {{ctrl+c}} keystroke), then extract {{clipboard}}. The extract waits for the clipboard to be populated, so no manual DELAY is needed. It also clears the clipboard after reading, so a copy-per-row loop reads each new value rather than a stale prior one, whichever way you copy.
This is especially useful for native or remote-desktop (RDP/DCV) applications, where the content isn’t part of the page DOM but the app can still copy it to the clipboard.
Here’s an example JSON schema you can use in a ExtractDatamodel node:
STATIC. If the clipboard can’t be read, the node fails with error code CLIPBOARD-E0001. If it is still empty after the wait (the copy never landed), it fails with CLIPBOARD-E0002 rather than returning empty data.
Notes
- Use
STATICexecution with XPaths for speed and reliability when page structure is stable - Use
LLM_DOMfor complex pages or when selectors frequently change - Add clear descriptions for each field to help the LLM understand what data to extract
- Arrays extracted multiple times (e.g., in a loop) append by default; use
overwriteArrayKeysto replace - For
STATIC, scope row containers via the array’s ownpath(not the nodeselector), and prefer relative child paths like.//td[1]for cleanest semantics

