# AgentUtility Webpage Change Report

> AgentUtility Webpage Change Report is a paid API for AI agents from x402.agentutility.ai, paid per call via x402, $0.04/call, status unknown (last checked 2026-11-03).

Fetches a webpage, compares it to a previous version, and returns a structured diff with added/removed lines, a change flag, and an AI-generated change summary.

## Facts

- Endpoint: POST https://x402.agentutility.ai/webpage-change-report?utm_source=zero.xyz
- Price: $0.04/call
- Payment: x402
- Status: unknown
- Last checked: 2026-11-03
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/agentutility-webpage-change-report-b1b24baa
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_wOM30wGJHPvT5EUlyGU1c

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agentutility-webpage-change-report-b1b24baa -d '<json body>'
```

Example prompt: Check if https://example.com/pricing has changed since my last visit — I have the previous page text saved and want to know exactly what lines were added or removed and get a plain-English summary of what changed.

## When to prefer this

Use this endpoint when you need to detect and summarize content changes on a specific webpage without maintaining your own scraping infrastructure. It is ideal for price monitoring, content update tracking, and competitive intelligence workflows where you have prior page content or hash. Prefer this over raw scraping endpoints when you need a human-readable diff and AI-generated summary of what changed, not just the raw current content.

## Known failure modes

- URL unreachable or returns non-200 status — degraded flag set to true
- CSS selector matches no elements — diff computed on full page instead
- previous_text too long (over 100,000 chars) — request rejected
- Page behind authentication or bot protection — fetch fails or returns login page content
- SHA-256 hash mismatch with actual prior page — changed flag may be inaccurate if hash was from different normalization

## How this service works

817 pay-per-call APIs for AI agents. Every endpoint is POST /<name> and is payable in USDC over x402 on Base and Solana — no signup, no API key, just pay-per-call. GET https://x402.agentutility.ai/ returns the same catalog as machine-readable JSON.

## Output

A JSON object with a boolean 'changed' flag, a 'diff' object containing arrays of added and removed lines plus an unchanged line count, the 'current_hash' of the fetched page (for future comparisons), the 'final_url' after redirects, 'status_code', 'char_count', a natural-language 'change_summary', and a 'components' array showing internal processing steps and timings. If 'degraded' is true, the response is partial.

## Request schema (JSON Schema)

```json
{
 "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). Follows redirects."
      },
      "selector": {
       "type": "string",
       "description": "Optional CSS selector to scope the diff (e.g. 'article', '#price')."
      },
      "previous_hash": {
       "type": "string",
       "description": "SHA-256 of a prior fetch, hex-encoded. Sets response.changed."
      },
      "previous_text": {
       "type": "string",
       "description": "Prior plain-text content. Enables the added/removed line diff. Max 100000 chars."
      }
     }
    },
    "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": "object",
       "properties": {
        "added": {
         "type": "array",
         "items": {
          "type": "string"
         }
        },
        "removed": {
         "type": "array",
         "items": {
          "type": "string"
         }
        },
        "unchanged": {
         "type": "integer"
        }
       }
      },
      "changed": {
       "type": "boolean"
      },
      "degraded": {
       "type": "boolean"
      },
      "selector": {
       "type": "null"
      },
      "final_url": {
       "type": "string"
      },
      "char_count": {
       "type": "integer"
      },
      "components": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "ms": {
          "type": "integer"
         },
         "ok": {
          "type": "boolean"
         },
         "name": {
          "type": "string"
         }
        }
       }
      },
      "composed_of": {
       "type": "array",
       "items": {
        "typ
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "url": "https://example.com",
  "diff": {
   "added": [
    "New pricing: $12/mo"
   ],
   "removed": [
    "Old pricing: $10/mo"
   ],
   "unchanged": 4
  },
  "changed": true,
  "degraded": false,
  "selector": null,
  "final_url": "https://example.com/",
  "char_count": 127,
  "components": [
   {
    "ms": 1400,
    "ok": true,
    "name": "webpage-diff"
   },
   {
    "ms": 2100,
    "ok": true,
    "name": "summarize-text"
   }
  ],
  "composed_of": [
   "webpage-diff",
   "summarize-text"
  ],
  "status_code": 200,
  "current_hash": "feb057ddba5ac313506909af05c17370808a81030f057346499d045c25534dbf",
  "change_summary": "The page's monthly price line changed from $10 to $12; the rest of the content is unchanged."
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agentutility-webpage-change-report-b1b24baa/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.agentutility.ai](https://www.zero.xyz/host/x402.agentutility.ai/llms.txt)
