{"uid":"cap_IE3ZsWQGqh6Gz-pkp3R91","slug":"page-change-fingerprint-5c649cf9","name":"Page Change Fingerprint","description":"Fingerprint a public page so agents can detect changes: final url, etag, lastModified, sha256 contentHash of normalized visible text, raw byteLength, and fetchedAt. POST JSON {\"url\":\"https://example.com\"}. Public http(s) only; private hosts blocked. $0.04 USDC on Base (eip155:8453). No API key.","url":"https://scrooge-x402-tool-mill.vercel.app/v1/change-fingerprint?utm_source=zero.xyz","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"queryParams":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public http(s) URL to fetch (SSRF-safe; private/link-local blocked)"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","required":["url","etag","lastModified","contentHash","byteLength","fetchedAt"],"properties":{"url":{"type":"string","format":"uri","description":"Final URL after redirects"},"etag":{"type":["string","null"],"description":"Upstream ETag header, or null"},"fetchedAt":{"type":"string","format":"date-time","description":"ISO-8601 time the page was fetched"},"byteLength":{"type":"integer","minimum":0,"description":"Raw upstream response size in bytes"},"contentHash":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"sha256 hex of normalized visible text"},"lastModified":{"type":["string","null"],"description":"Upstream Last-Modified header, or null"}},"additionalProperties":false}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.04","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.04/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.04","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.04","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_koYzjNW7b2YNCT_1cES11","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.04","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches a public URL and returns a stable fingerprint (ETag, Last-Modified, SHA-256 content hash, byte length, and fetch timestamp) for detecting future changes","exampleAgentPrompt":"Can you fingerprint https://example.com/pricing so I can tell later if the page content or headers have changed — give me the SHA-256 hash, ETag, Last-Modified, and byte size?","exampleUseCases":[{"title":"Price page change alerting","prompt":"Fingerprint https://acme.com/pricing for me so I can compare it next week and know if anything changed — I want the content hash, ETag, and byte length."},{"title":"Competitor announcement monitoring","prompt":"Take a fingerprint snapshot of https://competitor.com/blog right now — SHA-256 hash, Last-Modified, and fetch time — so I can detect when they publish something new."},{"title":"Regulatory document verification","prompt":"Grab the current fingerprint of https://sec.gov/filings/latest including content hash and raw byte size so I can confirm later whether the document has been updated or tampered with."}],"resultDescription":"A JSON object containing: the final URL after redirects, the ETag header (or null), the Last-Modified header (or null), a SHA-256 hex digest of the normalized visible text content, the raw byte length of the upstream response, and an ISO-8601 timestamp of when the page was fetched.","failureModes":["Private or link-local hosts (e.g. localhost, 192.168.x.x) are blocked with an SSRF-safe error","Non-HTTP/HTTPS URLs are rejected","Unreachable or down URLs return a fetch error","Payment of $0.04 USDC on Base must succeed before the request is processed; payment failure blocks execution","Pages with no visible text produce a hash of empty/normalized content","Very large pages may hit byte or timeout limits"],"whenToPreferThis":"Choose this endpoint when you need a lightweight, deterministic signal to detect whether a public webpage has changed — without downloading or storing the full page content. It is ideal for polling loops, change-alert pipelines, or audit trails where you want to compare a current fingerprint against a stored baseline. Prefer it over full-page extraction endpoints when you only need to know *if* content changed, not *what* changed.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-02T00:31:58.292Z","isFirstParty":false,"canonicalSlug":"page-change-fingerprint-5c649cf9"}