Financial research data
Market pages.
Research-ready snapshots.
Read figures from public or licensed pages you are authorized to access. Capture browser-rendered tables and turn visible values into structured data for your research pipeline.
data.extract{
"instrument": "Example instrument",
"displayed_price": 142.5,
"currency": "USD",
"source_timestamp": null
} Illustrative output. No live quote or freshness guarantee.
Wait for the table, then extract
POST this body to /api/v1/scrape with your x-api-key header. Replace the illustrative URL and .price-table selector with those from your source.
The selector: prefix matters. An element appearing does not prove its data is current; capture the source timestamp separately and preserve missing timestamps as missing.
Check the API HTTP status and success, then read data.extract. For stable tables, CSS/XPath extraction is also available. Chart pixels are not automatically converted into a price series.
{
"url": "https://finance.example.com/markets/example",
"use_js_render": true,
"js_wait_for": "selector:.price-table",
"extract_prompt": "Extract the displayed instrument name, price, currency and source timestamp. Leave missing values null. Do not infer current prices."
} Keep the source context with the numbers
01 · Confirm collection rights
Check source licensing, permitted uses and redistribution restrictions. Being able to open a page is not a license to republish its data.
02 · Capture both timestamps
Store your collection time in UTC and the source timestamp with its timezone. Keep instrument, exchange, currency and units when available.
03 · Validate before analysis
Check missing values, delayed quotes and unit changes. Your application supplies scheduling, history and analysis; this endpoint is not a trading feed.
Snapshots, not streaming quotes
Is this a real-time market data feed?
No. Each request captures a page at a point in time. The source may publish delayed figures, and a successful scrape does not certify their freshness. Use a licensed market data feed for trading or other latency-sensitive decisions.
How does selector-based waiting work?
Set js_wait_for to a value such as selector:.price-table and enable browser rendering. This waits for the element to appear, not for its values to become current. Validate the source timestamp and expected fields separately.
Can I capture values updated through WebSockets?
Browser rendering can capture values that have reached the page DOM. It does not provide a WebSocket subscription, continuous streaming or automatic extraction of chart data drawn only on a canvas.
What if a page takes a long time to load?
The default request timeout is 120 seconds and the supported range is 5–300 seconds. Set your HTTP client timeout higher than the request timeout, or use an async job. Access and redistribution must comply with the source’s licensing terms.
A default fetch with JavaScript rendering and AI extraction is 13 tokens before other features or retries. Domain strategies may change the actual charge; inspect tokens_used. Follow the Acceptable Use Policy.
Validate one source before relying on it
Check values, timestamps and licensing. Failed scrapes are not billed.