# PageDiff API - Batch Historical Page-Change Report

> PageDiff API - Batch Historical Page-Change Report is a paid API for AI agents from pagediff-api.hahavoid0.workers.dev, paid per call via x402, $2/call, status unknown (last checked 2026-09-14).

Fetches and compares Wayback Machine snapshots of up to 5 URLs across date ranges, returning structured change reports with summaries, risk notes, commercial impact, and source timestamps.

## Facts

- Endpoint: GET https://pagediff-api.hahavoid0.workers.dev/batch-report
- Price: $2/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/pagediff-api-batch-historical-page-change-report-d8bfbf0f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_V2emYjVMrhDx5YiZCgR0o

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 pagediff-api-batch-historical-page-change-report-d8bfbf0f
```

Example prompt: Can you pull a pricing intelligence report comparing Stripe's pricing page from January 1 2023 to January 1 2024, and also check Twilio's pricing page over the same period — I want to know what changed, what was added or removed, and any commercial impact notes.

## When to prefer this

Use this endpoint when you need historical evidence of what changed on a specific web page between two known dates — especially for pricing intelligence, policy tracking, legal terms audits, or competitive positioning research. Prefer it over live scraping when you need a point-in-time comparison backed by archived source timestamps. Best when Wayback Machine coverage of the target domain is known to be good.

## Known failure modes

- Wayback Machine has no snapshot near the requested date — snapshot not found or falls back to nearest available
- Target page was JavaScript-rendered or authenticated, resulting in incomplete or missing content
- Low confidence score due to sparse archiving of the target URL
- URL unreachable in archive — appears in failures array with reason
- Rate or batch limit exceeded (maxItems is 5)
- Network timeout reaching the Wayback Machine CDX or content endpoints

## How this service works

Pay-per-call historical page-change evidence for AI agents. Check Wayback snapshot availability, compare archived pages, and generate structured reports with important changes, impact, risks, and source timestamps.

## Output

Returns a batch of structured change reports — one per URL — each including: a headline and summary of detected changes, counts of added/removed/modified text blocks, the actual Wayback archive URLs used, a confidence level, risk caveats, commercial impact observations, and a recommended next action. Also includes a batch-level JSON URL for full detail.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "items": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "url",
     "from",
     "to"
    ],
    "properties": {
     "to": {
      "type": "string",
      "examples": [
       "2024-01-01"
      ],
      "description": "Requested later snapshot date in YYYY-MM-DD format."
     },
     "url": {
      "type": "string",
      "examples": [
       "https://example.com/"
      ]
     },
     "from": {
      "type": "string",
      "examples": [
       "2023-01-01"
      ],
      "description": "Requested earlier snapshot date in YYYY-MM-DD format."
     },
     "report_type": {
      "enum": [
       "pricing_intelligence",
       "policy_change",
       "competitor_positioning",
       "docs_drift",
       "legal_terms_change",
       "general"
      ],
      "type": "string",
      "default": "general"
     }
    }
   },
   "maxItems": 5,
   "minItems": 1
  },
  "report_type": {
   "enum": [
    "pricing_intelligence",
    "policy_change",
    "competitor_positioning",
    "docs_drift",
    "legal_terms_change",
    "general"
   ],
   "type": "string",
   "default": "general"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "reports": [
   {
    "url": "https://example.com/",
    "summary": "Compared 20230101000000 to 20240101000000. Change level: low. Added: 1. Removed: 1. Modified: 0.",
    "headline": "2 archived text changes detected for pricing intelligence.",
    "json_url": "https://pagediff-api.hahavoid0.workers.dev/reports/r_example.json",
    "report_id": "r_example",
    "confidence": "medium",
    "report_url": "https://pagediff-api.hahavoid0.workers.dev/reports/r_example",
    "risk_notes": [
     "Results depend on Internet Archive snapshot availability and quality.",
     "JavaScript-rendered, authenticated, or poorly archived content may be incomplete.",
     "This report is machine-generated evidence triage, not legal advice or certified web capture."
    ],
    "next_action": "Review the source snapshots, then run /report on adjacent dates or related pages to isolate when the change first appeared.",
    "report_type": "pricing_intelligence",
    "diff_summary": {
     "added_count": 1,
     "change_level": "low",
     "removed_count": 1,
     "modified_count": 0
    },
    "source_snapshots": {
     "to": {
      "digest": "EXAMPLE2",
      "mimetype": "text/html",
      "timestamp": "20240101000000",
      "statuscode": "200",
      "archive_url": "https://web.archive.org/web/20240101000000id_/https://example.com/",
      "original_url": "https://example.com/",
      "requested_date": "2024-01-01"
     },
     "from": {
      "digest": "EXAMPLE",
      "mimetype": "text/html",
      "timestamp": "20230101000000",
      "statuscode": "200",
      "archive_url": "https://web.archive.org/web/20230101000000id_/https://example.com/",
      "original_url": "https://example.com/",
      "requested_date": "2023-01-01"
     }
    },
    "commercial_impact": [
     "Review packaging, limits, trial language, and enterprise call-to-action changes before updating competitive positioning.",
     "If pricing language changed, treat this as a signal to inspect sales motion, margin pressure, or segmentation changes."
    ],
    "important_changes": [
     "Added: Updated example page content.",
     "Removed: Original example page content."
    ]
   }
  ],
  "batch_id": "b_example",
  "failures": [],
  "json_url": "https://pagediff-api.hahavoid0.workers.dev/batches/b_example.json",
  "batch_url": "https://pagediff-api.hahavoid0.workers.dev/batches/b_example",
  "report_count": 1
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/pagediff-api-batch-historical-page-change-report-d8bfbf0f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from pagediff-api.hahavoid0.workers.dev](https://www.zero.xyz/host/pagediff-api.hahavoid0.workers.dev/llms.txt)
