data ▸ explorer opened 0

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.

Your extracted data is yours: isolated per tenant and never used to train a model.
catalog-extractor · Data Succeeded
titlepricein_stock
Wireless headphones199.00true
USB-C cable12.50false
Mechanical keyboard89.99true
run_8c1f2a · 3 rows · deduped Export JSON
pf ▸ signal check 2
Typednamed output fields
Dedupedrows, ready to read
One logevery run, traceable
JSONAPI, webhook, sheet
get ▸ clean rows 4
01
what you get

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.

Browse rows in a clean tableEvery workflow has a Data tab: the structured rows it extracted, typed to its output manifest, ready to read, filter, and export.
Deduped by defaultRows come back deduplicated, so repeated runs over the same listings give you a clean set instead of a growing pile of copies.
Typed output shapesEach workflow declares an output manifest (named, typed fields), so the JSON you get back has a stable shape your code can rely on.
Call it as an APIRun a workflow from your code and read the extracted rows straight off the JSON response, or pull them from its REST endpoint on demand.
Export anywhereTake the data as JSON from the API, POST it to a destination over a webhook, or send it downstream to a spreadsheet or warehouse.
Run IDs you can traceEvery row carries the run that produced it. When something looks off, the run ID ties the data to exactly what happened.
run ▸ page to pipeline 7
02
from a page to your pipeline

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.

01ExtractA workflow reads a page and returns clean, structured rows, typed to its output manifest and deduped for you.
02BrowseRead the rows in the workflow's Data tab and trace the run in the unified Runs log.
03DeliverPull as JSON from the API, POST to a webhook, or send to a spreadsheet or warehouse.
api ▸ output shape 11
03
output + export

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.

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 it
# 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
// 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 */ ]
  }
}
JSON via APIWebhook POSTSpreadsheetsWarehouses

Endpoints follow /v1/{slug}/{path}, authenticated with your own wt_ keys. See managed endpoints and the webhooks docs.

log ▸ every run observed 15
04
runs log

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.

ntf ▸ act on change 19
05
notifications

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.

Email / SMTPSMS (Twilio)WhatsAppSignalPushoverCustom webhook

See Monitors and automations.

own ▸ your data stays yours 23
06
Your data stays yours

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.

faq ▸ questions logged 27
07
faq

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.

go ▸ first extraction 31

Turn the messy web into JSON you can use

Extract it once, browse it in one place, and export it anywhere.