{"uid":"cap_mLf99lqzP2GFWK9Jp2uFB","slug":"x402-deployer-x402-deployer-workers-dev-5a9d9593","name":"Webpage Change Detector / Content Diff Monitor","description":"Webpage change detector / website change monitor / content diff / page-watch / visualping-style monitor / price-page monitor / status-page watcher / TOS-policy diff. Fetches a URL, strips HTML to plain text, computes a SHA-256 hash, and (when given a previous hash or text) returns a changed flag plus added/removed line lists. Optional CSS selector scopes the diff to one region. No login required; follows redirects.","url":"https://x402-deployer.x402-deployer.workers.dev/webpage-diff","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body"],"properties":{"body":{"required":["url"],"properties":{"url":{"type":"string","description":"Page URL to fetch (http or https). Server follows redirects and reports the final_url."},"selector":{"type":"string","description":"Optional CSS selector to scope the diff (e.g. 'article', '#price'). When set, only matched element text is hashed and compared."},"previous_hash":{"type":"string","description":"SHA-256 of a prior fetch, hex-encoded. If provided, response.changed compares against this hash."},"previous_text":{"type":"string","description":"Prior plain-text content from a previous fetch. If provided, response.diff returns added/removed line arrays."}}},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object","properties":{"url":{"type":"string"},"diff":{"type":"null"},"changed":{"type":"boolean"},"selector":{"type":"null"},"final_url":{"type":"string"},"char_count":{"type":"integer"},"status_code":{"type":"integer"},"current_hash":{"type":"string"},"current_text":{"type":"string"}}}}}}},"responseSchema":null,"example":{"request":{"input":{"body":{"url":"https://example.com","selector":"body"},"type":"http","method":"POST","bodyType":"json"}},"response":{"url":"https://example.com","diff":null,"changed":null,"selector":"body","final_url":"https://example.com/","char_count":127,"status_code":200,"current_hash":"feb057ddba5ac313506909af05c17370808a81030f057346499d045c25534dbf","current_text":"Example Domain\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\nLearn more"}},"exampleRequest":{"url":"https://example.com","selector":"body"},"tags":["x402"],"displayCostAmount":"0.04","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","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_RmKsElT7dJc8Dn013Lrwz","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.04","costPer":"request","priority":0,"asset":null,"unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches a URL, strips HTML to plain text, hashes it with SHA-256, and returns a changed flag plus added/removed line diffs compared to a previous hash or text, with optional CSS selector scoping.","exampleAgentPrompt":"Check if the pricing page at https://example.com/pricing has changed since last time — I have the previous hash abc123def456, and I only care about the #pricing-table section.","exampleUseCases":null,"resultDescription":"Returns a 'changed' boolean flag, the new SHA-256 hash of the page text, and lists of added and removed lines compared to the previous content. If no previous hash or text is provided, returns only the current hash and extracted text.","failureModes":["URL is unreachable or returns non-200 status — error response indicating fetch failure","Invalid or malformed URL — validation error","CSS selector matches no elements — diff performed on full page or empty scope returned","Redirects loop infinitely — timeout or redirect error","Page content is entirely JavaScript-rendered with no static HTML — returns empty or minimal text"],"whenToPreferThis":"Choose this endpoint when you need to detect whether a specific webpage has changed over time, especially for price monitoring, status page watching, policy/TOS diffs, or any scenario where you have a previous hash or text snapshot and want a structured added/removed line diff. Prefer this over full scraping tools when you only need change detection, not full structured data extraction.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T00:56:43.014Z","isFirstParty":false}