API Change Monitor

v1.0.0$0.0035/change rowSignal Detection

Last updated November 1, 2026

Watch the APIs you depend on and get only what changed since your last run: new changelog entries tagged as deprecations or breaking changes, sunset dates, status incidents, OpenAPI operations added, removed, or deprecated, and Sunset or Deprecation headers. 14 vendor presets or any URL.

Install

bash
npx @mambalabsdev/mcp-api-change-monitor

Every tool here also runs hosted, with no install at all, through Apify's MCP endpoint.

Features

  • One row per change. A source where nothing moved returns a free no change row.
  • Deprecation, sunset, and breaking change wording flagged on every changelog entry.
  • 14 vendor presets, or any changelog page, feed, Statuspage site, or OpenAPI JSON.
  • OpenAPI operations added, removed, or deprecated, and Sunset or Deprecation headers.
  • Pay per event: Change row at $0.0035.
  • Pay per event: Source check at $0.003.
  • Pay per event: Snapshot row at $0.001.

Input

vendorsarrayoptional

API vendors to watch, one per line. Each expands to the public sources read for it: changelog, deprecation page, status history, and OpenAPI document where one is published. Available: github, stripe, shopify, hubspot, openai, anthropic, google-ads, twilio, slack, notion, atlassian, cloudflare, vercel, plaid.

sourcesarrayoptional

Any other public URLs to watch, one per line: a changelog or release notes page, an RSS or Atom feed, a deprecation or sunset dates page, a Statuspage site or its history.rss feed, or an OpenAPI or Swagger JSON document. The kind is detected from what the URL returns.

endpoint_urlsarrayoptional

API endpoints to call without credentials, one per line. The response headers are read for Sunset (RFC 8594), Deprecation (RFC 9745), and Link relations deprecation, sunset, and successor-version. Only GET requests are sent.

watcharrayoptional

For vendor presets, any of: changelog, deprecations, status, headers, openapi. Empty means changelog, deprecations, status, and headers. openapi reads the vendor's OpenAPI document (up to 14 MB) and reports operations added, removed, or deprecated. Without changelog, changelog sources return only deprecations and breaking changes. URLs you list in Source URLs are always read.

keywordsarrayoptional

Return only change rows whose title, summary, categories, or operation contains one of these words. Every change still updates the saved state.

only_deprecations_and_breakingstringoptional

true to return only change rows tagged as a deprecation or breaking change, OpenAPI operations removed or deprecated, and header changes. Incidents and plain changelog entries are left out.

max_changes_per_sourcestringoptional

Change rows returned per source per run, 1 to 1000. The rest are counted in changes_found.

include_snapshotstringoptional

true to also return the current entries, incidents, or operations of a source on its first check, up to Max change rows per source. Each snapshot row is billed as a snapshot row.

state_keystringoptional

Names the saved state, so separate schedules keep separate baselines. Runs with the same state key and source compare against each other.

reset_statestringoptional

true to ignore the saved state and record a new baseline for every source.

max_charge_usdstringoptional

Optional. The run stops before it would charge more than this.

proxy_modestringoptional

How sources are fetched.

Output schema

json
{
  "row_type": "string",
  "input_key": "string",
  "vendor": "string",
  "source_label": "string",
  "source_url": "string",
  "source_kind": "string",
  "change_type": "string",
  "title": "string",
  "entry_url": "string",
  "entry_date": "string",
  "summary": "string",
  "categories": "string",
  "is_deprecation": "boolean",
  "is_breaking": "boolean",
  "sunset_date": "string",
  "incident_status": "string",
  "operation": "string",
  "old_value": "string",
  "new_value": "string",
  "header_sunset": "string",
  "header_deprecation": "string",
  "header_link": "string",
  "entries_tracked": "integer",
  "changes_found": "integer",
  "previous_check_at": "string",
  "row_status": "string",
  "error_reason": "string",
  "billable_events_json": "string",
  "checked_at": "string"
}

Pricing

$0.0035per change row
EventFree plan price
Change row$0.0035
Source check$0.003
Snapshot row$0.001
Actor Start$0.001

Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.

On the Apify free plan the actor stops at $1.50 of charges a month, about 429 change rows. Any paid Apify plan removes the cap.

Limits

  • A change is only seen if it is still on the source when the actor runs. A changelog that lists only its newest 10 entries can drop an entry between two widely spaced runs.
  • Changelog pages drawn by scripts after the page loads give no entries; use the vendor's feed when it has one.
  • Deprecation and breaking change tags come from the wording of the entry. An entry that announces a removal in other words is a plain changelog_entry.
  • Entries are matched by title on pages and by feed ID on feeds. A page entry whose title is edited reads as a new entry.
  • OpenAPI documents are read as JSON; a YAML document returns a source_error asking for the JSON version.