Training crawlers pay for access here.
People read MarkSyncr free. So do search engines and the retrieval crawlers behind AI answers, because they send readers back. A crawler that copies pages into a training corpus sends nobody back, so it pays for the time it spends.
Want longer? Add ?days=<n> to this URL for an offer of up to 30 days at 1.00 USD a day, or simply pay a whole multiple of the price: the pass lasts as many days as you paid for.
Buy a day pass
Pay 1.00 USD a day with any coin CoinPay takes or with PayPal. The pass appears on the next page and works with any HTTP client.
Checkout is hosted by CoinPay. Up to 30 days at once.
Or buy one key for every Profullstack site
A Power Key is bought once and opens this site and every other Profullstack property, with no day passes and no limits. Send it as Authorization: Bearer pfs_... or in x-power-key and this page never answers 402 again.
How it works
- Any page you fetch answers
402 Payment Requiredwith the x402 offer in aPAYMENT-REQUIREDheader (base64 JSON). This page, fetched withAccept: application/json, also returns it as the body: USDC,exactscheme, on eip155:8453, eip155:137, eip155:1. - Sign the payment and retry with the proof in a
PAYMENT-SIGNATURE(orX-PAYMENT) header. The response is a JSON receipt carrying a pass, with the settlement inPAYMENT-RESPONSE. - Send the pass in
x-crawl-pass(orAuthorization: Bearer) on every request until it expires: one day per day paid, so a proof for three times the price buys three. When it expires, buy another. The sale is the pass, not the page: fetch the page again with the pass.
Pay with the CoinPay CLI
Settlement is by CoinPay: the buyer's USDC goes straight to the site's wallet and CoinPay's relayer pays the gas, so you need USDC and nothing else.
npm install -g @profullstack/coinpay
coinpay x402 pay https://marksyncr.com/crawl --output pass.json
# or a week at once:
coinpay x402 pay "https://marksyncr.com/crawl?days=7" --output pass.json
The command fetches this page, reads the offer, opens a browser tab to approve the payment with the CoinPay Wallet extension or any EIP-6963 wallet (MetaMask, Rabby, Coinbase Wallet), and writes the receipt to pass.json. Then:
PASS=$(node -p "require('./pass.json').pass")
curl -H "x-crawl-pass: $PASS" https://marksyncr.com/
Pay from your own x402 client
curl -sS -H "Accept: application/json" https://marksyncr.com/crawl
# 402 with { "x402Version": 2, "accepts": [ ... ] }
# sign an EIP-3009 transferWithAuthorization for one entry, then:
curl -sS -H "X-PAYMENT: <base64 proof>" https://marksyncr.com/crawl
# 200 with { "ok": true, "pass": "cp_...", "expires_at": "...", "days": 1, "header": "x-crawl-pass" }
The days a proof buys are read off the value it authorizes: a whole multiple of the one-day amount, up to 30. ?days=<n> only changes what the offer quotes, so a standard client that pays exactly what is asked gets n days.
The proof is x402 v2 in CoinPay's dialect: { x402Version: 2, scheme: "exact", network: "<CAIP-2>", payload: { signature, authorization } }, base64-encoded. A proof is single-use; retrying with the same one returns the same pass, not a second charge.
Who pays and who does not
| Charged | GPTBot, ClaudeBot, anthropic-ai, CCBot, meta-externalagent, FacebookBot, Bytespider, Applebot-Extended, Amazonbot |
|---|---|
| Free, named in robots.txt | OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended, Bingbot, Meta-ExternalFetcher, DuckAssistBot, MistralAI-User, meta-webindexer, YouBot, ExaSearchBot, AionBot |
| Free | Everyone else: people, Googlebot, Applebot, Bingbot and any crawler not on the first line. |
If your crawler is on the first line and you believe it should not be, or you want more than an hour at a time, get in touch.
The offer, verbatim
{
"x402Version": 2,
"accepts": [
{
"scheme": "exact",
"network": "eip155:8453",
"amount": "1000000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0xEBcEB7b0E8BbC411E7c0AFF3bebc4e5EF54b9702",
"resource": "https://marksyncr.com/crawl",
"description": "1440 minutes of crawl access to https://marksyncr.com",
"mimeType": "application/json",
"maxTimeoutSeconds": 300,
"extra": {
"name": "USD Coin",
"version": "2"
}
},
{
"scheme": "exact",
"network": "eip155:137",
"amount": "1000000",
"asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"payTo": "0xEBcEB7b0E8BbC411E7c0AFF3bebc4e5EF54b9702",
"resource": "https://marksyncr.com/crawl",
"description": "1440 minutes of crawl access to https://marksyncr.com",
"mimeType": "application/json",
"maxTimeoutSeconds": 300,
"extra": {
"name": "USD Coin",
"version": "2"
}
},
{
"scheme": "exact",
"network": "eip155:1",
"amount": "1000000",
"asset": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"payTo": "0xEBcEB7b0E8BbC411E7c0AFF3bebc4e5EF54b9702",
"resource": "https://marksyncr.com/crawl",
"description": "1440 minutes of crawl access to https://marksyncr.com",
"mimeType": "application/json",
"maxTimeoutSeconds": 300,
"extra": {
"name": "USD Coin",
"version": "2"
}
}
]
}