OPERATIONAL anchoring on mainnet · 0/300 anchors this hour no issues in 8h 10m report a problem

📥 Verifiable fetch

Get clean, machine-ready content from a live page and an on-chain receipt committing to exactly the bytes you were handed. Scraping is a commodity; a third-party-checkable record of what the web said at a moment in time is not.

API-only and paid — a browser form cannot carry a bearer token. Get one from pay-per-call, then:

curl -X POST https://bsv.cx/f -H "authorization: Bearer <token>" \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com","mode":"article"}'
price💳 paid 4000 sat buys 10 calls — see pay-per-call
billingmetered by render time, so a slow page costs more than a fast one. A failed render is refunded.
on-chainOP_RETURN bsv.cx fet2 <manifestHash>

Extraction modes

The same page is worth different things to different callers. Each mode produces different bytes, so the mode is recorded in the manifest — a receipt that said only "this URL produced these bytes" would be ambiguous.

articlemarkdown, boilerplate stripped (default)
fullmarkdown of the whole body, nothing dropped
selectormarkdown of one region — pass selector, e.g. "#main"
metaJSON: title, description, canonical, OpenGraph, Twitter, JSON-LD
linksJSON: every outbound link, absolutised, de-duplicated, sorted

Endpoints

POST /f💳 paid { url, mode?, selector?, thorough? }
GET /f/:hashthe proof record — free
GET /f/:hash/manifestthe exact bytes that hash to the receipt id — free
GET /f/:hash/contentthe exact content delivered — free
curl -X POST https://bsv.cx/f -H "authorization: Bearer <token>" \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com","mode":"article"}'

Verify it yourself

Re-hash the content and confirm it matches manifest.contentSha256; re-hash the manifest and confirm it matches the receipt id; then confirm that id appears in the transaction's OP_RETURN. Verification endpoints are free and always will be — a proof nobody can check is not a proof.

← back to bsv.cx