{"uid":"cap_kpL7K8M7SABV9hq3V2reN","slug":"web-change-detection-monitor-x402-def1582e","name":"Web Change-Detection Monitor (x402)","description":"One maintained, normalized jobs data API that scrapes open job postings and listings across 10 applicant-tracking systems (Greenhouse, Lever, Ashby, SmartRecruiters, Workday, Recruitee, Workable, BambooHR, Breezy, Personio) with company-domain auto-detection. Use it to list a company’s open roles, find remote software-engineering / sales / any jobs, detect whether a company is hiring, and pull recruiting, salary and requirements data. Pay per call in USDC on Base via x402 (HTTP 402) — no account, no API key. Adapters are drift-monitored and maintained so the feed does not rot.","url":"https://assetfactory-jobs-x402.sigrunner.workers.dev/web/monitor?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","required":["urls"],"properties":{"urls":{"type":"string","description":"Comma-separated page URLs to check for changes (up to 10). Each is fetched LIVE and reduced to a compact content fingerprint (hashes + counts, never the body). Watch a pricing page, docs changelog, status page, job board or a competitor's site and be told WHAT changed since you last looked."},"since":{"type":"string","description":"Optional base64-encoded JSON object mapping each url to the prior fingerprint returned by a previous call (or a bare prior content_hash string). Supply it to get a changed verdict + category diff; omit it to establish a baseline to store. STATELESS — the agent holds the fingerprints, the service holds no snapshot."},"ignore":{"type":"string","description":"Optional pipe-separated CSS selectors dropped before fingerprinting (cookie banner, last-updated stamp)."},"pointer":{"type":"string","description":"JSON endpoints: optional RFC-6901 JSON-Pointer scoping the structured diff to a subtree (e.g. /paths for OpenAPI)."},"maxChars":{"type":"integer","default":40000,"maximum":200000,"description":"Per-URL ceiling on the text region fingerprinted."},"selector":{"type":"string","description":"Optional CSS selector scoping the watch to one region of the page (price table, changelog list)."},"ignoreText":{"type":"string","description":"Optional '|||'-separated regexes blanked from the text before hashing (timestamps, counters)."}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":{"type":"json","example":{"count":1,"stats":{"ok":1,"failed":0,"changed":1,"baseline":0,"requested":1,"unchanged":0},"records":[{"ok":true,"url":"https://openai.com/pricing","diff":{"title_changed":false,"status_changed":false,"content_changed":true,"headings_changed":false,"word_count_delta":14},"title":"Pricing","status":200,"changed":true,"final_url":"https://openai.com/pricing","checked_at":"2026-10-31T00:00:00.000Z","fingerprint":{"title":"Pricing","status":200,"link_count":null,"word_count":512,"content_hash":"0a080719be9fbb82a86a45b80dc8c2a4","heading_count":8,"headings_hash":"e3b0c44298fc1c149afbf4c8996fb924"}}],"generated_at":"2026-10-31T00:00:00.000Z"}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.003","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.003/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_NRrFVYr3zaGDoOndgr42M","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.003","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches up to 10 public URLs live and returns compact content fingerprints (hashes + counts), plus a change verdict and category diff when a prior fingerprint is supplied.","exampleAgentPrompt":"Check openai.com/pricing and stripe.com/pricing for any changes since my last fingerprints — here's the prior snapshot: {\"https://openai.com/pricing\":\"0a080719be9fbb82a86a45b80dc8c2a4\",\"https://stripe.com/pricing\":\"b3f1c22a91de4e7f\"} — and tell me if content, headings, or title changed on either.","exampleUseCases":[{"title":"Competitor pricing page tracker","prompt":"Monitor openai.com/pricing and anthropic.com/pricing for me — I checked them last week and here are the fingerprints I saved: {\"https://openai.com/pricing\":\"0a080719be9fbb82a86a45b80dc8c2a4\",\"https://anthropic.com/pricing\":\"d4e9f112ab3c7821\"} — tell me if anything changed in the content, headings, or word count."},{"title":"Status page incident detection","prompt":"Fetch status.github.com and status.openai.com live right now and compare them against these prior fingerprints I stored: {\"https://status.github.com\":\"c8a1f334b2de9102\",\"https://status.openai.com\":\"77bc4412ef098731\"} — flag immediately if the status or content changed on either."},{"title":"Docs changelog watch","prompt":"Check docs.stripe.com/changelog for changes since my last visit — the fingerprint I saved was \"e3b0c44298fc1c149afbf4c8996fb924\" — scope the watch to the section matching the CSS selector \".changelog-list\" and tell me what category of change happened."}],"resultDescription":"A JSON object containing a records array (one entry per URL) with: ok status, HTTP status code, final URL after redirects, checked_at timestamp, a fingerprint object (content_hash, headings_hash, word_count, heading_count, link_count, title), and — when a prior fingerprint was supplied — a diff object with boolean flags (content_changed, headings_changed, title_changed, status_changed) and word_count_delta plus a top-level changed boolean. Also includes aggregate stats (ok, failed, changed, baseline, unchanged counts) and a generated_at timestamp.","failureModes":["URL is unreachable or returns non-2xx without redirect — record marked ok:false with status code","SSRF guard blocks private/internal IP ranges — request rejected","More than 10 URLs submitted — excess URLs ignored or error returned","Malformed base64 in since parameter — diff skipped or error returned","Target page behind authentication or bot-detection blocks fetch — returns failed record","Network timeout on slow pages — record marked failed"],"whenToPreferThis":"Choose this endpoint when you need a stateless, lightweight change-detection primitive that the agent manages: you store the fingerprints, the service holds no state. Ideal for polling loops where you want to know WHAT category changed (content vs headings vs title vs status) without storing or transmitting the full page body. Prefer over full-scrape endpoints when privacy, payload size, or statelessness matters. Use when monitoring up to 10 URLs per call on a scheduled basis with no server-side subscription required.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-11-01T06:30:24.641Z","isFirstParty":false,"canonicalSlug":"web-change-detection-monitor-x402-def1582e"}