Run a saved crawl
writ_run_saved_crawlRuns a saved crawl with its stored settings. With max_age, the data it already collected comes back when that run is recent enough (the cheap path); otherwise it re-crawls. The response's _cache.hit and _cache.age_seconds say which happened.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Hold until the crawl converges (default false: a crawl is slow). | |
| crawl | Yes | Saved crawl slug, name, or id (from writ_saved_crawls). | |
| limit | No | Rows of collected data to include (default 50). | |
| output | No | Response shape, for an answer a program or an API consumes rather than a reader. {shape: 'envelope' (default: Writ's full answer, projected) | 'table' ({columns, rows, total}) | 'records' (bare list of records) | 'record' (the newest record alone: one entity, a usage meter, a dashboard), fields: ['used', 'percent_used as pct', 'items.0.price as first_price'] (ordered pick, renames, dotted paths; a missing path is null, so keys are stable), exclude: ['depth'], include_meta: false (page metadata content_kind/depth/thumbnails is stripped unless true), key: 'usage' (wrap)}. On writ_crawl_site with save_as it is saved as the API's default shape. | |
| max_age | No | Reuse the last completed crawl if it finished within this many seconds. 0 (default) always re-crawls. | |
| preview_chars | No | Cut each inline page's text cells to this many characters (default 12000; 0 = full). Full page: writ_workflow_data(workflow_id=<data_workflow_id>, refs=[...]). | |
| timeout_seconds | No | Max seconds to wait when wait=true. |