Guides & API reference
Build from the source.
Turn one accessible public page into structured data. Describe what you need, or supply a supported JSON Schema when every field matters. Inspect the returned evidence and limitations before acting on the result.
Choose your starting point
Quickstart
Start with one page and one question. A recorded example demonstrates the response; your own authenticated request exercises live extraction.
Sign up and get an API key
See recorded examples run on the home page, or replay one yourself with the keyless requests in Examples, with no signup. For live extraction, create an account and generate an API key in the dashboard. Copy the complete key when it is shown and keep it in your agent's secret store. Never put it in a URL or a shared prompt.
Before starting, check your dashboard or call
GET /api/v1/account/statuswith that key. The check shows used and reserved credits, the next UTC reset and current restrictions. It costs zero extraction credits and reserves no capacity.Read a product name and price
Put your key in
CONTRIE_API_KEY, then run this request as printed. Contrie has answered this question on this page before: the Track a price recipe replays that recorded answer with no key. For your own product, changeurlto a public page showing one product, a price and its currency.curlcurl -X POST https://www.contrie.com/api/v1/scrape \ -H "Authorization: Bearer $CONTRIE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html", "extract": "The product name and its current price", "schema": { "type": "object", "properties": { "name": { "type": "string" }, "offers": { "type": "object", "properties": { "price": { "type": "number" }, "priceCurrency": { "type": "string" } }, "required": [ "price", "priceCurrency" ], "additionalProperties": false } }, "required": [ "name", "offers" ], "additionalProperties": false } }'With your key the request runs live: it fetches the page as it is now and may use credits. Credit allowances and service capacity are separate limits; remaining credits do not guarantee availability.
Get structured JSON back
Recorded run of this request, 2026-09-24, abridged{ "success": true, "data": { "name": "A Light in the Attic", "offers": { "price": 51.77, "priceCurrency": "GBP" } }, "metadata": { "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html", "qualityScoreKind": "structural_and_textual", "valid": true, "requestedFields": { "total": 3, "returned": 3, "missing": [] }, "qualityScore": 100, "grounding": 1, "groundingCoverage": { "total": 3, "checkable": 3, "grounded": 3 }, "cached": false, "credits": 1, "source": { "mode": "fetched", "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html", "fetchedAt": "2026-09-24T22:43:23.316Z" } } }Check
successbefore using data. A refusal contains a reason and charges 0 credits. Quality and matching source text do not prove field attribution or factual truth. When a signed receipt is available, it proves response integrity; verify it independently.
Guides
Start here
Web data APIs
Verification & evidence
Connect an agent
Operate reliably
Recover, then repeat intentionally
Recovery needs an Idempotency-Key sent with the original request, and the quickstart request sends none: repeating it starts new work, which may use credits. When recovery matters, send a fresh key such as $(uuidgen) up front (see Safe retries). If the connection then drops, repeat the identical JSON request with that same key. A completed response can be recovered for 24 hours without another extraction or charge. If it is still running, wait before checking again. An unknown or expired outcome needs review; do not silently replace the key.
A new question or a fresh check needs a new key. Set options.maxAge to zero (the default) to fetch the page anew, or opt into an account-private copy up to a chosen age in seconds. Reuse still performs an extraction and uses credits. Compare the returned source time with your job's freshness needs.
For your agent, connect the hosted Model Context Protocol (MCP) endpoint. The agent tools accept an optional idempotencyKey argument for the same recovery behavior. Streaming calls do not accept the REST replay header. For repeated price checks, monitor one validated question after confirming the first result. Each scheduled run needs available credits and service capacity.
Base URL
https://www.contrie.com/api/v1
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/account/status | Credits, next UTC reset and current restrictions; uses no extraction credits |
| POST | /api/v1/scrape | Fetch a URL and extract data |
| POST | /api/v1/extract | Extract data from raw HTML |
| POST | /api/v1/verify | Check data against its source page |
| POST | /api/v1/monitors | Watch a page for one question; before/after on change, signed when the run's answer was accepted |
| GET | /api/v1/monitors | List your active monitors |
| GET | /api/v1/monitors/:id | One monitor with its latest events |
| DELETE | /api/v1/monitors/:id | Stop a monitor and its charges |
| POST | /api/v1/evidence/verify | Verify a signed response (free, no key) |
| GET | /api/v1/evidence/keys | The public key evidence is signed with (no key) |
| GET | /api/health | Health check |