The web, as clean JSON
Every run turns a messy page into structured rows. Browse them, dedup, export anywhere, or call the workflow as an API and read the data off the response.
| title | price | in_stock |
|---|---|---|
| Wireless headphones | 199.00 | true |
| USB-C cable | 12.50 | false |
| Mechanical keyboard | 89.99 | true |
Clean, structured rows, not raw HTML
Writ returns typed JSON from the pages your workflows read, and gives you one place to browse, dedup, trace, and export every row.
From a messy page to your pipeline
A workflow extracts structured rows, you browse them in the Data tab and the Runs log, and you deliver them wherever you work: by API, webhook, or downstream destination.
A predictable JSON shape, on demand
Each workflow declares an output manifest, so your software gets the same named, typed fields every time. Run it from your code and read the data straight off the response.
{
"run_id": "run_8c1f2a",
"status": "succeeded",
"data": [
{ "title": "Wireless headphones", "price": 199.00, "in_stock": true },
{ "title": "USB-C cable", "price": 12.50, "in_stock": false }
],
"extracted_at": "2026-06-22T14:03:11Z"
}# Run a workflow and read the extracted data straight from the response
curl -X POST https://api.usewrit.app/v1/catalog-extractor/run \
-H "Authorization: Bearer wt_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "category_url": "https://example.com/catalog", "max_pages": 3 }'// Deliver each run's extracted data to your own destination
{
"destination_webhook": "https://hooks.example.com/writ",
"payload": {
"run_id": "run_8c1f2a",
"rows": [ /* typed to the workflow's output manifest */ ]
}
} Endpoints follow /v1/{slug}/{path}, authenticated with your own wt_ keys. See managed endpoints and the webhooks docs.
Every run, in one log
Workflows, automations, AI sessions, and scheduled Monitor acts all record to one unified Runs log: the trigger, each step, the page state, and the result. You get an observable, auditable record, not a black box.
Trace any row. Every extracted row carries the run that produced it. When you report a problem, the run ID ties the data to exactly what happened. Read the resources docs for the full data model.
Get pinged when the data changes
Pair the data explorer with Monitors and automations: when a tracked value changes, get notified across any of six channels and let a workflow act on the new data instantly.
See Monitors and automations.
Isolated per tenant, never used to train a model
Writ runs on your own accounts, with your own credentials and data, on sites you are authorized to use. Your extracted data is yours: isolated per tenant, resolved only at run time, and never used to train a model. When you publish a workflow on the Marketplace, your credentials are stripped at publish and never used on anyone else's run.
Data FAQ
What do I actually get back from a run?
Clean, structured JSON: named, typed fields defined by the workflow's output manifest, deduped for you. You can browse the rows in the workflow's Data tab, read them off the API response, or export them downstream.
How do I get the data out?
Pull it as JSON straight from the workflow's REST endpoint, push it to a destination over a webhook, or send it downstream to a spreadsheet or warehouse. Each run carries a run ID so you can trace any row back to the run that produced it.
Is the shape of the data stable?
Yes. Every workflow declares an output manifest (named, typed fields), so your code gets back a predictable JSON shape rather than parsing raw HTML by hand.
Where does my extracted data live?
Each workflow keeps its rows in a Data tab, typed to the workflow's output manifest, and every run is recorded in your unified Runs log. Your data is yours: isolated per tenant and never used to train a model.
What about data from a workflow I bought on the Marketplace?
A purchased workflow is a recipe only; it runs on your own account and the data it produces is yours. The creator's credentials are stripped at publish and never touch your run.
Can I see what an automation or AI session actually did?
Yes. The unified Runs log shows every run end to end: the trigger, each step or action, the page state, and the result. You get an observable, auditable record, not a black box.
Turn the messy web into JSON you can use
Extract it once, browse it in one place, and export it anywhere.