Competitor price, stock, plan, and changelog changes since your last run.
An MCP server for the Mamba Labs Competitor Price, Stock, and Changelog Monitor actor on Apify. Give it competitor sites. Each run compares every site with the state saved by the last run and returns only what changed.
price_change, compare_at_price_change, out_of_stock, back_in_stock, new_product, removed_product, each with the product, variant, old and new value, and a link.plan_added, plan_removed, plan_price_change, pricing_page_change, and changelog_entry.site_baseline on the first check under a state_key, then site_check with changes_found for a site that changed, or a free no_change row when nothing moved.Unreadable sites come back free with a row_status saying so.
All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:
{
"mcpServers": {
"mamba-competitor-price-stock-changelog-monitor": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-competitor-price-stock-changelog-monitor"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}
Restart the client. The monitor_competitor_changes tool appears.
APIFY_TOKEN. The server lists its tool without a token; a call needs one.monitor_competitor_changes. One tool. Example arguments:
{
"sites": [
"deathwishcoffee.com",
"linear.app"
],
"state_key": "competitors-weekly",
"min_price_change_pct": "5"
}
Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults. Numbers and booleans are sent as strings.
| Input | Type | Description |
|---|---|---|
sites | array | Competitor sites to watch, one per line: a domain (deathwishcoffee.com, linear.app) or a URL. A URL with a path is read as that page: a pricing page, a changelog page, or a product page. Up to 200 sites per run |
site_type | string | auto (default) reads the public Shopify product feed or the WooCommerce Store API when the site has one, and otherwise reads the pricing and changelog pages it links to |
watch | array | Any of: prices, stock, products, plans, changelog. prices covers price and compare at price per variant; stock covers in stock and out of stock; products covers new and removed products; plans covers plan names and prices on a pricing page; changelog covers new changelog entries. Empty means all five |
product_urls | array | Product pages on a store that is not Shopify or WooCommerce. Each page is read for its schema.org Product price and availability |
pricing_urls | array | Pricing pages to read, when the site does not link to its pricing page from the homepage |
changelog_urls | array | Changelog or release notes pages to read, when the site does not link to one from the homepage. An RSS or Atom feed the page declares is read first |
max_products | string | Products read from a store catalog per run, up to 5000. A store with more products than this is compared on the products read, and removed products are not reported for it. Default 250 |
min_price_change_pct | string | Report a price change only when it is at least this many percent. 0 reports every change. Default 0 |
max_changes_per_site | string | Change rows returned per site per run, up to 1000. The rest are counted in changes_found. Default 200 |
include_snapshot | string | true to also return one snapshot row per product variant, plan, and changelog entry on the first check of a site. Each snapshot row is billed as a snapshot row. Default false |
state_key | string | Names the saved state, so separate schedules keep separate baselines. Runs with the same state key and site compare against each other |
reset_state | string | true to ignore the saved state and record a new baseline for every site. Default false |
max_charge_usd | string | Optional. The run stops before it would charge more than this |
proxy_mode | string | auto (default) sends requests directly and moves a host to the Apify proxy default pool only when that host refuses. A reliability setting: proxy use adds nothing to your price |
Pay per event on Apify, billed to your Apify account. Prices in USD.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
change-row, one change on a watched site since the last run: a price, compare at price, or stock change on a variant, a new or removed product, a plan added, removed, or repriced, a price change on a pricing page, or a new changelog entry | $0.0025 | $0.002375 | $0.00225 | $0.002125 |
site-check, the first check of a site, or a later check that finds a change | $0.003 | $0.00285 | $0.0027 | $0.00255 |
snapshot-row, one current variant, plan, or changelog entry on the first check of a site, returned only when include_snapshot is on | $0.001 | $0.00095 | $0.0009 | $0.00085 |
apify-actor-start, per run start | $0.0005 | $0.0005 | $0.0005 | $0.0005 |
A site where nothing moved returns a free no_change row, and sites that cannot be read are free.
The actor needs no key. It reads public product feeds and public pages and holds no key of any kind. Proxy traffic adds nothing to your price: Mamba Labs pays the platform costs of the run. proxy_mode is a reliability setting.
apify.com/mambalabs/competitor-price-stock-changelog-monitor
MIT. See LICENSE.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @mambalabsdev/mcp-competitor-price-stock-changelog-monitorMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"com-mambabuilt-mcp-competitor-price-stock-changelog-monitor": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-competitor-price-stock-changelog-monitor"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@mambalabsdev/mcp-competitor-price-stock-changelog-monitornpmcom.mambabuilt/mcp-competitor-price-stock-changelog-monitor works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.