Business Change Monitor: closures, hours, contacts avatar

Business Change Monitor: closures, hours, contacts

Pricing

from $0.50 / 1,000 business checkeds

Go to Apify Store
Business Change Monitor: closures, hours, contacts

Business Change Monitor: closures, hours, contacts

Monitor PUBLIC business listings and get an event the moment one closes, moves, or changes hours, phone, website, or category. Pay only per detected change.

Pricing

from $0.50 / 1,000 business checkeds

Rating

0.0

(0)

Developer

Satelink

Satelink

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Categories

Share

Local Business Closure & Change Monitor (OSM)

Monitor local businesses for closures and changes. Get a structured event the moment a business closes, moves, or changes its hours, phone, address, website, or category — sourced from OpenStreetMap (free, public, datacenter-friendly). Point it at a list of businesses or a whole city/region, run it daily or weekly. Billing is pay-per-event: a small business_checked fee for every business checked each run, plus change_detected when something actually changes (see Billing).

What it does

  1. Fetch current public data for each business.
  2. Normalize to one shape regardless of source.
  3. Snapshot to the key-value store, keyed by business id.
  4. Diff against the previous snapshot.
  5. Bill + emit: charge one business_checked per business checked, and emit + charge one change_detected per real change (changed_field, old_value, new_value, confidence, detected_at).

No-change runs still produce a dataset item. If a run detects zero changes, it writes exactly one status item —

{ status: 'no_changes', businesses_checked, source, checked_at }
— to the default dataset. This item is not billed as change_detected; it exists only so the dataset is never empty. Don't be surprised to see it mixed in with real change events.

Data source & the margin rule

Default source is OpenStreetMap (Overpass API) — free, datacenter-proxy-friendly, no anti-bot. That matters: residential proxy (~$12.5/GB) is the #1 thing that kills margin on a change-monitor. This Actor ships a pre-flight margin guard that estimates cost vs revenue before doing any work and rejects any run projected below the margin floor (default 50%), logging which cost driver dominated. Only public business listings are read — no login-gated data, no personal-data resale, no anti-bot circumvention.

Billing

Pay-per-event only — two events, no rental, no flat fee, no other payment method (as required by the Apify Store):

  • business_checked$0.0005 per business checked, every run, whether or not it changed.
  • change_detected$0.02 per change found.

For example, a 2,000-business weekly run costs $1.00 in check fees (2,000 × $0.0005) plus $0.02 per change found.

Input (.actor/INPUT_SCHEMA.json)

  • urls_or_businesses — OSM ids (node/123, way/456), 500–10,000; or leave empty and set…
  • region_bbox"south,west,north,east" to auto-discover a whole area
  • osm_category_filter — one vertical, e.g. amenity=restaurant, amenity=cafe, shop=hairdresser
  • monitoring_intervaldaily | weekly (drives the guard's expected change rate)
  • change_types — any of rating, review_count, hours, phone, address, website, category, disappeared
  • price_per_event_usd, price_per_business_checked_usd, margin_floor — guard tunables

Pick one vertical × one region (e.g. independent cafés in Austin). General-purpose is a crowded, low-margin category.

Modes

  • Scheduled run (default): batch-check a list/region, emit changes.
  • Standby (low-RAM HTTP): GET /?id=node/123&category=amenity=restaurant&change_types=hours,phone for on-demand single-business checks — billed on RAM × wall-clock, cheap when idle.

Local dev

npm install && npm run build
node test/margin_guard.mjs # margin-guard unit tests (no platform needed)