OPERATIONAL anchoring on mainnet · 0 anchors this hour (0/1000 all services) no issues in 18h 42m 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 (first few calls free — see pay-per-call). Pay per call: attach the payment as a PAYMENT-SIGNATURE header (x402, one round trip), or POST once with no payment to get a 402 invoice:

curl -X POST https://bsv.cx/f -H "payment-signature: <x402 payment>" \
  -H 'content-type: application/json' \
  -d '{"url":"https://example.com","mode":"article"}'
price💳 paid 400 sat per call — 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 "payment-signature: <x402 payment>" \
  -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.

And you don't have to trust an explorer for this, either. bsv.cx runs its own block-headers service, syncing the chain's headers directly over the BSV peer-to-peer network. For every anchor it recomputes the transaction's block Merkle root from an SPV proof and confirms it against those headers before publishing the proof on the record. Look for the green "✓ Independently verified against bsv.cx's own block headers" line on any proof page, open it, and recheck the same proof against any header source you trust — no explorer, and no bsv.cx, in the trust path.

← back to bsv.cx