Competitor Price, Stock, and Changelog Monitor avatar

Competitor Price, Stock, and Changelog Monitor

Pricing

from $2.13 / 1,000 change rows

Go to Apify Store
Competitor Price, Stock, and Changelog Monitor

Competitor Price, Stock, and Changelog Monitor

Watch competitor stores and SaaS sites and get only what changed since your last run: price, sale price, and stock changes per product, new and removed products, plan price changes on a pricing page, and new changelog entries. Shopify, WooCommerce, and any pricing page. Clay ready.

Pricing

from $2.13 / 1,000 change rows

Rating

0.0

(0)

Developer

Mamba Labs

Mamba Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Features

Limited permissions

Share

What's new (October 2026)

  • Docs page changes. Add docs to watch, or list pages in the new docs_urls input, and a change to a docs, API reference, or help page is one docs_page_change row with the word count and the headings added or removed. Off by default.
  • Positioning changes. Add positioning to watch and a change to the homepage title, meta description, h1, or first h2 headings is one positioning_change row with the old and new text. Off by default.
  • New landing pages. Add new_pages to watch and every new landing page in the site's sitemap is one new_landing_page row with its URL. Blog posts, docs, help, and catalog pages are left out. Off by default.

No price change. Existing fields and saved inputs work as before.

Watch a list of competitor stores and SaaS sites and get back only what changed since your last run. For a store you get price, sale price (compare at price), and stock changes per product variant, plus new and removed products. For a SaaS site you get plan and price changes on its pricing page and new entries on its changelog. The first run of a site records a baseline; every later run with the same state key compares against it. Rows are flat, so they export to CSV or drop into a Clay table.

Features

  • Only the changes. Each run compares every site with the state saved by the last run. You get one site row per site, with the number of changes found, and one row per change. A site where nothing moved returns a free no_change row.
  • Stores without a scraper per site. Shopify stores are read from their public product feed (/products.json) and WooCommerce stores from their public Store API, so every variant's price, compare at price, and stock comes from the store's own data. Other stores work from product page URLs you list, read from the schema.org Product data on the page.
  • SaaS pricing pages. Plan names and their prices are read from the pricing page the site links to. A plan added, removed, or repriced is one row with the old and new text. When prices move and no plan name can be read, one pricing_page_change row lists the old and new prices on the page.
  • Changelogs. The changelog page the site links to is read, through its RSS or Atom feed when it declares one. Every entry not seen before is one row with its title, date, and link.
  • Docs, positioning, and new landing pages (opt in). Add docs, positioning, or new_pages to watch to also follow docs page content, the homepage's title, meta description, and headings, and new landing pages in the sitemap. Each change is one change row.
  • Filters. Choose what to watch (prices, stock, products, plans, changelog, and the opt in docs, positioning, new_pages), set a minimum price change in percent, and cap change rows per site.
  • Schedules. Save the input as a task with a state_key, schedule it daily or weekly, and each run returns only the new changes.

How it reads sites

Pages and feeds are fetched directly, the way a browser would, and robots.txt is read for every host and checked before every request; a page robots.txt disallows is never requested. A host that refuses a direct request is retried through the Apify proxy. No login, no API key, and no other developer's actor. The saved state lives in a key-value store in your own Apify account.

Input

FieldTypeDefaultWhat it does
sitesarrayDomains or URLs, up to 200. A URL with a path is read as that page: pricing, changelog, or product
site_typestringautoauto, shopify, woocommerce, or saas
watcharraythe first fiveAny of prices, stock, products, plans, changelog, and the opt in docs, positioning, new_pages. Empty means the first five
product_urlsarrayProduct pages on a store that is not Shopify or WooCommerce
pricing_urlsarrayPricing pages, when the homepage does not link to one
changelog_urlsarrayChangelog pages, when the homepage does not link to one
docs_urlsarrayDocs, API reference, or help pages to watch, up to 20 per site. Turns on docs for that site
max_productsstring250Products read per store, up to 5000
min_price_change_pctstring0Report a price change only at or above this percent
max_changes_per_sitestring200Change rows per site per run, up to 1000
include_snapshotstringfalsetrue to also return every current variant, plan, and changelog entry on a site's first check
state_keystringNames the saved state; one key per schedule
reset_statestringfalsetrue to record a new baseline for every site
max_charge_usdstringStop before a row would pass this amount
proxy_modestringautoauto (direct, then the Apify proxy for a host that refuses), direct, or residential. A reliability choice

Every field accepts text, as Clay sends it: "true", "250", a comma separated list, or a JSON array.

Output

One row layout for every row type, so no column is lost between them. Key fields:

FieldRowsExample
row_typeallsite_baseline, site_check, change, snapshot, site_error
site, site_typealldeathwishcoffee.com, shopify
change_typechangeprice_change, compare_at_price_change, out_of_stock, back_in_stock, new_product, removed_product, plan_added, plan_removed, plan_price_change, pricing_page_change, changelog_entry, and with the opt in watch kinds docs_page_change, positioning_change, new_landing_page
product_title, variant_title, sku, item_id, page_urlstore changesDeath Wish Ground Coffee, 16 oz
old_value, new_value, old_price, new_price, price_change_pct, in_stockchanges19.99, 17.99, -10.01, true
plan_nameplan changesBusiness
changelog_title, changelog_datechangelog entriesStacked pull requests, 2026-10-07
field_changed, old_value, new_valuedocs page changedocs_content, 166 words; headings removed: Import Issues, 172 words; headings added: Agents
field_changed, old_value, new_valuepositioning changeh1, The product development system for teams and agents, The AI native issue tracker
page_url, new_valuenew landing pagehttps://linear.app/agents, /agents
products_tracked, variants_tracked, plans_tracked, changelog_entries_trackedsite rows148, 424, 4, 30
previous_check_at, changes_foundsite check, changes
row_status, error_reason, billable_events_jsonallok, null, {"change-row":1}

The run summary (key-value store record RUN_SUMMARY) lists baselines, changes by type, unreadable sites, requests, and the hosts that were moved to the proxy.

Pricing

Pay per event. You pay only these events; the Apify platform and proxy costs of your run are paid by Mamba Labs.

EventFree planBronzeSilverGold
Change row (change-row), one change since the last run$0.0025$0.002375$0.00225$0.002125
Site check (site-check), the first check of a site 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.0005$0.0005$0.0005$0.0005

Free rows: no_change rows for a site where nothing moved since the last run, and site_error rows for a site that could not be read. On the Apify free plan the actor stops at 1.50 USD of evaluation a month (about 600 change rows); any paid Apify plan removes that cap.

Example: a daily run over 20 competitor sites where 4 sites changed, with 15 changes in all, costs 4 site checks ($0.012) plus 15 change rows ($0.0375), $0.0500 with the actor start. The 16 unchanged sites are free.

Usage examples

Apify Console or API

{ "sites": ["deathwishcoffee.com", "linear.app"], "state_key": "competitors-weekly" }
{ "sites": ["allbirds.com"], "watch": ["prices", "stock"], "min_price_change_pct": "5", "max_products": "1000", "state_key": "allbirds-daily" }
{ "sites": ["https://www.notion.com/pricing", "https://linear.app/changelog"], "watch": ["plans", "changelog"] }
{ "sites": ["linear.app"], "watch": ["plans", "changelog", "docs", "positioning", "new_pages"], "docs_urls": ["https://linear.app/docs"], "state_key": "linear-weekly" }

Clay

Add an HTTP API or Apify column that sends a competitor domain in sites with a state_key per row, and read change_type, old_value, new_value, and price_change_pct from the change rows.

Scheduled monitoring

Save the input as an Apify task with a state_key and schedule it. Each run returns one row per site and only what changed since the run before; the first run of each new site returns its baseline row.

MCP

The MCP server @mambalabsdev/mcp-competitor-price-stock-changelog-monitor exposes this actor as a tool for Claude and other MCP clients.

Error handling

SituationWhat you get
A site refuses every route, or robots.txt disallows the pagesOne free site_error row with row_status blocked and the reason
No catalog, pricing page, or changelog foundOne free site_error row with row_status error
One page of a site cannot be read this runThe other parts are compared; the row says partial, and the unread part keeps its saved state for the next run
A store has more products than max_productsThe products read are compared; removed products are not reported for that store
The state store cannot be openedEvery site reads as a first check, and the run summary says so
Max charge reachedThe run stops before the next billable row; the site's state is not saved, so its changes come back on the next run

Limitations

  • A change is only seen if it is still there when the actor runs. A price that moves and moves back between two runs is not reported.
  • The Shopify product feed carries no currency, so Shopify rows leave currency empty and use the store's display currency.
  • Pricing pages that draw their prices with scripts after the page loads, or put prices in images, give no plan rows. Such a page reads partial with a note.
  • Plan names are read from the page headings; a page that renames a plan reads as one plan removed and one added.
  • Changelog entries are matched by title. An entry whose title is edited reads as a new entry.
  • A docs page change says that the page text changed and which headings moved, not which sentence. New landing pages come from sitemap.xml; a site with no readable sitemap gives no new_landing_page rows and a note.
  • You are responsible for how you use the data and for the terms of the sites you watch.

More from Mamba Labs

ActorActor ID
Account Hiring WatchgRAZA5WBi1r6L0gy7
Agent Accessibility AuditoranxbRv0lKrpQ1pnua
Agent to Brokerage ResolverePRRGLxOGyaVHO4dI
AI Answer Visibility TrackerRJZvzKniYK4nswcMg
AI List Extractor for Any WebsiteD5hOdIez45M0NX5jD
AI Tooling DetectorEwkHhmqiuJgRoVEbE
Amazon Product, Price, and Stock TrackerMtJPZoyjJ3IeqTFyo
API Deprecation and Breaking Change MonitorpHsbS3xXUK8Jqutz5
App Store and Google Play Review MonitorMaCMEhGrbchxQZ92G
B2B Reddit Conversation MonitorSoDryzzsjmY3SsiyG
Bluesky Brand Presence MappereLpxzP4IuXznlFVND
Bluesky Posts ScraperKldSjS7wjoeZ7vQGm
Brand Sponsor FinderPPgK6xrgOmvL7Nrys
Bulk WHOIS and RDAP Domain Age LookupMTrkG5FLU6SjqLdJY
Business PDF Field ExtractorvM7JCk0CMAx5W0oJh
Career Change Signal EnginevX2Yga1a6wGaXaP14
Company Careers Page Jobs, 17 ATS BoardsizP0rfIgf5YaRZfIh
Company Change Event FeedoX44rS0fkEJ3rXLWe
Company Discovery List Builderjch0HdaZnpbMqlcGS
Company Firmographic EnricherYlUtLWjfPpqykmB8g
Company Funding RecordOFS4Mt1gyYNtGfUbE
Company Headcount EstimatoraHC4GROnNt6kfZe5r
Company Identity Resolverlr8fTRAmZCBZmuwwh
Company Role Email, Phone and Address Finder4mMncKaJykiq94grz
Company Social Presence Mapper4k6CCemkgBDz18m2h
Competitor Price, Stock, and Changelog MonitoryxdgCbUQ4PYQWwRNU
Contact Classifier0lGSeYJmniXhGANnO
Contractor License Search, CA, TX, WA, OR, LAWBYK3CPI2kdeq4bP1
CRM Contact Job Change CheckerL8UbEmMJC1XYPSZOb
Domain Deliverability Checker0tVgxI7A6o9jMlxmc
Domain to LinkedIn URL Resolver3HtnSaqPHOg1Qg5gx
Ecommerce Platform Profiler5G2NeYjBbQTjaTn9L
Ecommerce Store DiscoveryPeHu4sLyFvQHXUUrX
Email List Verifier, Bring Your Own KeyCzVJ4NlaCKk80xpgE
Event Presence IndexWLhMy8fMDgsxdYxv5
Eventbrite Events Scrapersgc6znyrbjOy5Yk9f
Expert Witness Finder, US and AustraliaLIpwlgfE3LaQBaXd4
Facebook Posts ScraperT6jxIeq4ua0SLXnqG
Funding and Press Signal ScannerFS13X6dhQVgX3XOM6
GDPR Cookie Banner and Consent CheckerTrKyOS0KBoGC35nbr
GitHub Followers and Following ExportSGNxDmFb9v3tRDaFI
GitHub Organization Signal ScannerahF8RRpv5mzPao5CN
Google Ads Transparency Center Scraper by Domain1eOwxhBVxzvOXAm4s
Google Maps Places ScraperSuvHCNJ7pIuw6gn54
Google Trends ScraperOeDzaACKmBYJXzHZk
GTM Hiring Signal ScraperD7O1SA2EqwHGsGr1P
GTM Signals AggregatorxKdRfnfFNkdMpFuNs
Healthcare Provider NPI EnricherMrgbHzcpDq3mOv9Df
ICP Fit ScorerW161DT8W4kW55dMFh
Influencer Change Monitord2VVgahNL6UmcLkhg
Influencer Lead List BuilderKnmByszcv135yM30G
Influencer Profile ScraperEqEnklDVMIcB1V499
Influencer Search Across TikTok, Instagram and YouTubetpkedmloIIWtXx6sg
Influencer Talent Agency LookupzCuX4Mgyg6JvXgGzd
Instagram Facebook Brand Presence MapperHXh65I0JBjPsunbY8
Integration and Marketplace Presence MapperV0guNuvM85Q61f2gj
Job Board Keyword Signal Scanner4DvqpvhMR74NLcDDY
Job Posting MonitorQCfICD9kOPiOdj5iI
Journalist and Media List BuildermAfizsZC8qRoR0ecS
Launch Directory List BuildercRq3bmvEZxZtioQ7U
Lead File Import CheckerRwlGVXTf46LqZdUgt
Legal Entity ResolverKHFyPCDIx7CyqULYm
Link in Bio Scraper and Newsletter DetectorOorucdheTIgu7RFzK
LinkedIn Company Page MapperzOPm6A9JEhUGcIdFW
LinkedIn Jobs FeedSH6N0d8cz46BhCC8B
LinkedIn Post TrackeroiGLNPuaf5BRaz9K5
Local Business Lead BuilderqMN97aoHhsAS5bznV
Local Rank and Map Pack Trackergv0kyHGDIg8XscclB
Lookalike Companies from Seed Domainse2O426WBAbLLQL4Z2
Manufacturer and Supplier FinderQcsdmd0lUfPzVkonh
MCP Server Change and Health MonitorIeqjWF9U0BdDQFY08
Media URL TranscriberSyfr7Ya3EsHgWfrB6
Meta Ad Library Ads by Company, Graph APIJ1GWlSXfSGU3u8Wng
Mobile Phone Waterfall6OOgPktf7RIa5XCOP
Multi Platform Social Posts and CommentsicFuHR1EzDvUcfCQ5
Netherlands Rental ListingssGKGsbwoX18lFb6dR
New Hire FindercKuc38p4nYHNF3IW8
Newly Registered Companies, UK, Norway, Finland, Franceg2WfZhWvCtc57g2Jo
News and Media Mention Monitorgol1PPUKrsIk4QLBd
News Site Article ArchiveNjcF3UD8791raFNHh
Newsletter Sponsor TrackerqSwpqxD1TiPZpLQHv
Open Tender and RFP FinderkPTGz6t6TFoUUyfaO
Outbound Stack Detectorv43UJC8r7qW7cBSTG
Page Finder and ExtractorTpurgcOZbVnknlaiC
Partner and Member Directory ExtractorZX0XJPPUvnFJxeC1a
People Finder & Email VerifierLEgloG7tWgQl4o6TD
Person LinkedIn URL ResolverssuyPV8LnEsL8qbnb
Person Social Footprint MapperjfQXa2zW9FHCJot9K
Personal Email to Company ResolverAefT5Ye6YNPFQwJBf
Pinterest Brand Presence Mapperd1HvjZfKhgvWsoEwn
Podcast Guest and Host Findero2MGSvgbSLeeXOsIo
Product Hunt Daily Launches with Maker DomainsO4VX63drWK9Y9x641
Property Owner Records0J7ovG1iaZpQD1P0T
Prospect Engineq9rT6v64nUJdPexOQ
Public Feature Board and Roadmap MonitorrcHF5gj5r2Vqnry35
Publishing Frequency TrackerTbLwaUUATdYb6wp4N
Recent Funding Rounds FeedKueVp9MOz7iOoAgDp
Reddit Brand Presence MapperpKQZmDaT70SEb54bZ
Reddit Search and Thread Scraper4Gsth5cP2Xt9V2xDN
Reporting Window FinderuINxR7a1IW8qUTRUX
Research Topic Institutions and AuthorsOH8ANqt7bCKbo72Gk
Semrush Domain Metrics3dqa0abJrpssHtrYL
Sequencer Event PollerS6s8Rjd61tGdrMRk4
Sequencer Lead Push0Jv27VeWM5tSZQs9x
Shopify App Store and Chrome Web Store ListingsgaY0BzkLyN77mD3wI
Site Crawler for Links and TableslLLJ6JxZ4XqN8ULz0
Substack Newsletter and Posts ScraperUEFsdwiPLmPNVy9xd
Team Page People Extractorj8a9zX0k4mNbvDbWK
Tech Stack Signal Detectorqyd7nNyqFPelQViBx
Tennis Match Datav3OX6zxXHZOf2yurO
Threads Posts by Keyword, Exact Match2OT8K8RiEEWtaj2MW
Ticketmaster Event PricesCrvPX4IwLXQX9bls1
TikTok Brand Presence Mapperfco8FvoJcSafbeyd1
Trustpilot Reputation Enricher3lIqfCt61j4hqE1xz
US and UK Contract Award Winners by CompanyzhEtllASykOcx9hJ8
US Import Records Buyer FinderVIMafpKF5ggOw0COU
VC and Accelerator Portfolio List BuilderchH8hrfuoqqolW06m
Website Accessibility Checker, WCAG 2.2 AAP3jBj3FRghKEhX52z
Website Phrase and Business Model ClassifierCBuZ9k7sRwBeiKiCS
Website Traffic Rank EstimatorGnOFUzlNVIoXgeJjH
Work Email WaterfallOT6xqTFThC0Rjf7Zj
Workplace Program DetectorLi6pPDhqbdzFz3h7G
X Brand Presence MapperoLOgadhHUkNAyDA3w
YouTube Channel and Video List ScrapertxaAjeBqgj5MStFE4
YouTube Channel Email FinderIDgKZcmeeuunUbccN
YouTube Channel from Company Domain6hSpD3kd2s2IQ4VSs
Zillow Listing DetailsyG4zM0Enfsw2NefJ1

Built by Mamba Labs.