- A batch scrape’s
webhookis an object whoseurlmust be public, on port 80 or 443. eventspicks fromstart, sent when the batch scrape is accepted, andfinish; both by default.startalways arrives first.- Each event POSTs
{"success": true, "type": "batch_scrape.start", "id": "<id>", "metadata": {...}}, with the givenmetadataandheaders. No event carries content. finishis sent once the batch scrape’s results are packaged, and carries the package’sdownloadUrl, the statuspackage.url. When packaging failed,finishis still sent, withoutdownloadUrl.- Host, Content-Type, Content-Length, Transfer-Encoding, Connection, User-Agent and X-Webhook-Signature cannot be set as headers.
- Delivery is at-least-once, retried for about 21 hours, and redirects are not followed. Receivers dedupe on
idandtype. - With a
secret(16 to 256 printable ASCII characters), each event carriesX-Webhook-Signature: sha256=<hex HMAC-SHA256 of the raw body, keyed by the secret>. Receivers compute it over the raw bytes before parsing and compare in constant time. - The secret and the headers are stored encrypted (AES-256-GCM under the server’s encryption key), and so is
requestOptions; Postgres and its backups never hold them in plaintext.metadatastays plain, since every event echoes it.
Guides
Webhooks
Get notified when a batch scrape starts and finishes.