API Change Monitor
Pricing
from $2.98 / 1,000 change rows
API Change Monitor
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.
Pricing
from $2.98 / 1,000 change rows
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Watch the third party APIs your product depends on and get back only what changed since your last run. Pick a vendor from 14 presets or give any changelog, deprecation page, status page, or OpenAPI document. Each run returns new changelog entries, tagged when they announce a deprecation, a sunset date, or a breaking change; new and resolved status incidents; OpenAPI operations added, removed, or deprecated; and Sunset or Deprecation headers that appear on an endpoint. The first run of a source records a baseline; every later run with the same state key compares against it. Rows are flat, so they export to CSV, post to Slack through an Apify integration, or drop into a table.
Features
- Only the changes. One row per source per run with the number of changes found, and one row per change. A source where nothing moved returns a free
no_changerow. - Deprecations flagged. Every changelog entry is read for deprecation, sunset, end of life, retirement, and removal wording, and for breaking change and required migration wording.
is_deprecation,is_breaking, and the firstsunset_datenamed after the wording are on every row. Turn ononly_deprecations_and_breakingto get nothing else. - Vendor presets.
github,stripe,shopify,hubspot,openai,anthropic,google-ads,twilio,slack,notion,atlassian,cloudflare,vercel,plaid. Each preset is the vendor's own public changelog feed or page, deprecation or sunset page, status history feed, and OpenAPI document where one is published. - Any URL. A changelog page, an RSS or Atom feed, a sunset dates table, a Statuspage site, or an OpenAPI or Swagger JSON document. The kind is detected from what the URL returns.
- Status incidents. New incidents and status changes (investigating, identified, monitoring, resolved) from the vendor's status history.
- OpenAPI diffs. Operations added, removed, or marked deprecated, and the API version, from the published OpenAPI JSON.
- Sunset and Deprecation headers. API endpoints you list are called without credentials and their response headers are read for
Sunset(RFC 8594),Deprecation(RFC 9745), and thedeprecation,sunset, andsuccessor-versionlink relations. - Schedules. Save the input as a task with a
state_key, schedule it daily, and each run returns only the new changes.
How it reads sources
Every source is a public page, feed, or file, fetched directly, and robots.txt is read for every host and checked before every request; a URL robots.txt disallows is never requested. Status pages are read through their public history feed. A host that refuses a direct request is retried through the Apify proxy. No login, no API key, and no other developer's actor. Endpoint checks send one GET with no credentials. The saved state lives in a key-value store in your own Apify account.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
vendors | array | Vendor presets: github, stripe, shopify, hubspot, openai, anthropic, google-ads, twilio, slack, notion, atlassian, cloudflare, vercel, plaid | |
sources | array | Any other changelog, feed, deprecation page, status page, or OpenAPI JSON URL | |
endpoint_urls | array | API endpoints whose response headers are read for Sunset and Deprecation | |
watch | array | all but openapi | For presets, any of changelog, deprecations, status, headers, openapi |
keywords | array | Return only change rows that contain one of these words | |
only_deprecations_and_breaking | string | false | true returns only deprecations, breaking changes, removed or deprecated operations, and header changes |
max_changes_per_source | string | 100 | Change rows per source per run, up to 1000 |
include_snapshot | string | false | true also returns the current entries of a source on its first check |
state_key | string | Names the saved state, so separate schedules keep separate baselines | |
reset_state | string | false | true records a new baseline for every source |
max_charge_usd | string | The run stops before it would charge more than this | |
proxy_mode | string | auto | auto or direct |
Every scalar input is accepted as a string, which is what Clay and most HTTP tools send.
Output
One row layout for every row type, so no column is lost between them. Key fields:
| Field | Rows | Example |
|---|---|---|
row_type | all | source_baseline, source_check, change, snapshot, source_error, error |
vendor, source_label, source_url, source_kind | all | hubspot, HubSpot developer changelog, feed |
change_type | change | changelog_entry, deprecation_notice, breaking_change, incident_new, incident_update, incident_resolved, openapi_operation_added, openapi_operation_removed, openapi_operation_deprecated, openapi_version_change, sunset_header, deprecation_header |
title, entry_url, entry_date, summary, categories | changes | Upcoming Sunset: End of Developer CLI Support of Node.js 20, 2026-10-19 |
is_deprecation, is_breaking, sunset_date | changes | true, false, 2026-04-29 |
incident_status | status changes | resolved |
operation | OpenAPI changes | DELETE /v1/accounts/{account} |
old_value, new_value | status, version, and header changes | investigating, resolved |
header_sunset, header_deprecation, header_link | endpoint source rows | |
entries_tracked, changes_found, previous_check_at | source rows | 50, 2 |
row_status, error_reason, billable_events_json | all | ok, null, {"change-row":1} |
The run summary (key-value store record RUN_SUMMARY) lists baselines, changes by type, unreadable sources, and requests.
Pricing
Pay per event. You pay only these events; the Apify platform and proxy costs of your run are paid by Mamba Labs.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
Change row (change-row), one change since the last run | $0.0035 | $0.003325 | $0.00315 | $0.002975 |
Source check (source-check), the first check of a source and any later check that finds a change | $0.003 | $0.00285 | $0.0027 | $0.00255 |
Snapshot row (snapshot-row), only with include_snapshot on | $0.001 | $0.00095 | $0.0009 | $0.00085 |
Actor start (apify-actor-start), once per run | $0.001 | $0.001 | $0.001 | $0.001 |
Free rows: no_change rows for a source where nothing moved since the last run, source_error rows for a source that could not be read, and the row a refused input returns. On the Apify free plan the actor stops at 1.50 USD of evaluation a month (about 429 change rows); any paid Apify plan removes that cap.
Example: a daily run over 10 sources where 3 sources changed, with 5 changes in all, costs 3 source checks ($0.009) plus 5 change rows ($0.0175), $0.0275 with the actor start. The 7 unchanged sources are free.
Usage examples
Apify Console or API
{ "vendors": ["github", "openai"], "state_key": "api-watch-daily" }
{ "vendors": ["stripe", "github"], "watch": ["openapi", "status"], "only_deprecations_and_breaking": "true", "state_key": "payments-stack" }
{ "sources": ["https://developers.hubspot.com/changelog/rss.xml", "https://www.githubstatus.com"], "endpoint_urls": ["https://api.example.com/v1/status"], "keywords": ["webhook", "oauth"] }
Scheduled monitoring
Save the input as an Apify task with a state_key and schedule it daily. Connect the task to Slack or email with an Apify integration to get the change rows as they come.
MCP
The MCP server @mambalabsdev/mcp-api-change-monitor exposes this actor as a tool for Claude and other MCP clients.
Error handling
| Situation | What you get |
|---|---|
| The input has no vendor, source, or endpoint, names an unknown vendor, or cannot be read | One free row, row_status error, error_reason starting with input_invalid:. The run ends successfully and nothing is charged by this actor beyond the actor start |
| A source refuses every route, or robots.txt disallows it | One free source_error row with row_status blocked and the reason |
| A page with no dated entries, or a YAML OpenAPI document | One free source_error row saying why and what to give instead |
| A source changes its layout, so most entries read as new | Recorded as a new baseline with a note, not as dozens of false changes |
| The state store cannot be opened | Every source reads as a first check, and the run summary says so |
| Max charge reached | The run stops before the next billable row; the source's state is not saved, so its changes come back on the next run |
Limitations
- 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_errorasking for the JSON version. - You are responsible for how you use the data and for the terms of the sites you watch.
More from Mamba Labs
Built by Mamba Labs.