# Pricing State API — Set Change Feed

> Pricing State API — Set Change Feed is a paid API for AI agents from pricing-state-api.replit.app, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-11).

Returns a paginated feed of detected pricing changes (plan names, prices, billing periods) for all vendors in a named SaaS/cloud catalog set (inference or devtools), filtered by a time cursor.

## Facts

- Endpoint: GET https://pricing-state-api.replit.app/api/sets/%7Bset%7D/changes?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/pricing-state-api-set-change-feed-ba09cd0d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_M5-pBRci48xGl7kLo3ddq

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 pricing-state-api-set-change-feed-ba09cd0d
```

Example prompt: Show me all pricing changes detected in the inference set since October 1 2026 — I want to know which plans changed price, what the before and after amounts were, and which vendors were affected.

## When to prefer this

Use this endpoint when you need to efficiently poll for new SaaS or cloud pricing changes across a curated vendor catalog without scraping individual pages yourself. Prefer it over generic web scraping when you want structured, diffed, timestamped pricing change records in a consistent JSON shape with cursor-based pagination. Best suited for recurring agent workflows that check periodically for price movements in the inference or devtools vendor sets, especially when cost efficiency matters — the call is free when no changes exist in the requested window.

## Known failure modes

- Empty window returns charged:false and an empty changes array — no charge incurred
- Invalid set name (not 'inference' or 'devtools') returns a 400 or 404 error
- Malformed since timestamp (non-ISO 8601) returns a validation error
- Payment failure via x402 returns a 402 Payment Required response
- Invalid before cursor format returns a 400 error
- Limit out of range (< 1 or > 100) returns a validation error

## How this service works

Closed catalog of public SaaS and cloud pricing pages, grouped into two named sets (inference and devtools). Each listed vendor is fetched on a ~6 hour schedule in a real browser, extracted into one JSON shape (plan names, prices, currency, billing period, printed price text, features when present, snapshot time), and diffed for detected plan/price/billing-period changes. The paid unit is the set change feed, GET /api/sets/{set}/changes: 0.01 USDC on Base via x402 v2, charged only when a change was recorded after your since cursor, and free when the window is empty. Per-slug snapshot and changes calls remain 0.01 USDC each. Not a live scrape-any-URL service and not unpublished or negotiated rates. Discover sets and slugs free at GET /api/sets and GET /api/monitors. No API key.

## Output

A JSON object containing the set name, the since timestamp, a cursor for the next poll, an array of change records (each with vendor slug, change ID, list of change details with kind/plan/before/after values, human-readable summary, detectedAt timestamp, and source pricing page URL), a charged boolean indicating whether the window was non-empty, a hasMore flag, and an optional nextBefore pagination cursor.

## 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"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "pathParams": {
     "type": "object",
     "required": [
      "set"
     ],
     "properties": {
      "set": {
       "enum": [
        "inference",
        "devtools"
       ],
       "type": "string",
       "example": "inference",
       "description": "One named set: inference or devtools (free: GET /api/sets)."
      }
     }
    },
    "queryParams": {
     "type": "object",
     "required": [],
     "properties": {
      "limit": {
       "type": "integer",
       "default": 20,
       "example": 20,
       "maximum": 100,
       "minimum": 1
      },
      "since": {
       "type": "string",
       "example": "2026-09-01T00:00:00Z",
       "description": "ISO 8601 timestamp with a zone. Only changes detected strictly after it are returned; an empty window is free. Pass back the previous response's cursor."
      },
      "before": {
       "type": "string",
       "pattern": "^[A-Za-z0-9_-]{8,128}$",
       "description": "Opaque cursor from a previous response's nextBefore (optional)."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "set": "inference",
  "limit": 20,
  "since": "2026-09-01T00:00:00Z",
  "cursor": "2026-09-12T08:30:00.000Z",
  "changes": [
   {
    "slug": "example-saas",
    "change": {
     "id": 42,
     "details": [
      {
       "kind": "price_changed",
       "after": "10",
       "before": "8",
       "planName": "Pro"
      }
     ],
     "summary": "\"Pro\" price changed: $8 → $10",
     "detectedAt": "2026-09-12T08:30:00.000Z"
    },
    "sourceUrl": "https://example.com/pricing",
    "detectedAt": "2026-09-12T08:30:00.000Z",
    "snapshotAt": "2026-09-12T08:30:00.000Z"
   }
  ],
  "charged": true,
  "hasMore": false,
  "nextBefore": null
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/pricing-state-api-set-change-feed-ba09cd0d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from pricing-state-api.replit.app](https://www.zero.xyz/host/pricing-state-api.replit.app/llms.txt)
