# Medicare Physician Fee Schedule Change Feed

> Medicare Physician Fee Schedule Change Feed is a paid API for AI agents from data.spencermcw.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-23).

Returns computed change records between CMS Medicare Physician Fee Schedule releases, covering RVU, conversion factor, GPCI, locality, and OPPS-cap fields, from 2025 onward.

## Facts

- Endpoint: GET https://data.spencermcw.com/v1/medicare/pfs/changes?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-23
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/medicare-physician-fee-schedule-change-feed-264cdeb6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_duZn6kARC0kZw7xIwlSdi

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 medicare-physician-fee-schedule-change-feed-264cdeb6
```

Example prompt: What RVU changes did CMS publish in the 2025A Medicare Physician Fee Schedule release? Show me up to 50 records for procedure code 99213.

## When to prefer this

Choose this endpoint when you need a structured, auditable diff of CMS Medicare Physician Fee Schedule data between quarterly releases — covering RVU, conversion factor, GPCI, locality, or OPPS-cap fields — rather than querying the raw CMS RVU files yourself or using a general Medicare fee lookup. It is especially valuable for billing compliance, reimbursement monitoring, or change-detection workflows where you need to know exactly what changed, when it changed, and from what value to what value, with provenance via SHA-256 source hashes.

## Known failure modes

- Invalid code format (must match ^[0-9A-Za-z]{5}$) returns validation error
- Invalid release format (must match ^\d{4}[A-Da-d]$) returns validation error
- Invalid since datetime format returns schema validation error
- Invalid cursor format returns error
- Limit out of range (must be 1–100) returns validation error
- Payment not provided or insufficient USDC on Base triggers x402 payment required response after 3 free daily calls
- No matching change records returns empty records array
- Rate limiting if free call quota exceeded without payment

## How this service works

What changed in the Medicare Physician Fee Schedule this quarter? RVU, status, conversion-factor, GPCI and OPPS-cap change records between CMS releases, 2025 on, computed by Distill from CMS’s RVU files. Updated quarterly. $0.05 per call (x402, USDC on Base); 3 free calls a day.

## Output

A paginated JSON object containing an array of change records and a next_cursor for pagination. Each record includes the release quarter, entity type, key (e.g. procedure code or MAC-locality), the specific field that changed, the old and new values, effective date, detected_at timestamp, source file SHA-256 hashes for auditability, and the method version used to compute the diff.

## 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"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "code": {
       "type": "string",
       "pattern": "^[0-9A-Za-z]{5}$"
      },
      "limit": {
       "type": "integer",
       "maximum": 100,
       "minimum": 1
      },
      "since": {
       "type": "string",
       "format": "date-time",
       "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
      },
      "cursor": {
       "type": "string",
       "pattern": "^\\d{1,12}$"
      },
      "entity": {
       "enum": [
        "rvu",
        "conversion_factor",
        "gpci",
        "locality",
        "opps_cap"
       ],
       "type": "string"
      },
      "release": {
       "type": "string",
       "pattern": "^\\d{4}[A-Da-d]$"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "data": {
       "type": "object",
       "required": [
        "records",
        "next_cursor"
       ],
       "properties": {
        "records": {
         "type": "array",
         "items": {
          "type": "object",
          "required": [
           "id",
           "release",
           "entity",
           "key",
           "field",
           "old",
           "new",
           "effective",
           "released",
           "detected_at",
           "source_sha256_old",
           "source_sha256_new",
           "method_version"
          ],
          "properties": {
           "id": {
            "type": "string"
           },
           "key": {
            "type": "string",
            "description": "rvu: code[-modifier]; gpci/locality: MAC-locality; opps_cap: code[-modifier]@MAC-locality."
           },
           "new": {
            "ty
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/medicare-physician-fee-schedule-change-feed-264cdeb6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from data.spencermcw.com](https://www.zero.xyz/host/data.spencermcw.com/llms.txt)
