US Multi-state Public Bid Subscription Monitor avatar

US Multi-state Public Bid Subscription Monitor

Pricing

from $49,000.00 / 1,000 30-day bid monitor access passes

Go to Apify Store
US Multi-state Public Bid Subscription Monitor

US Multi-state Public Bid Subscription Monitor

Scheduled new-or-changed bid and RFP alerts from official New York City, Montgomery County (MD), and District of Columbia public procurement feeds. Related Actor: [LaPAC bids](https://apify.com/slate_spool/lapac-bid-monitor)

Pricing

from $49,000.00 / 1,000 30-day bid monitor access passes

Rating

0.0

(0)

Developer

Wes Shields

Wes Shields

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

A staged, credential-free Apify Actor for scheduled monitoring of official public procurement feeds in New York City, Montgomery County (Maryland), and the District of Columbia. It persists a named watch across runs and emits only new or changed matching bids, not a recurring dump.

This build is local staging only. It has not been published, deployed, scheduled, or connected to billing.

Subscription workflow

  1. Set a stable monitorId and choose regions, category fragments, and keywords once.
  2. Run the Actor once to establish the baseline. emitInitialMatches defaults to false, so existing records are not dumped.
  3. Create an Apify schedule from staging/schedule-template.json after the manual publish gate.
  4. Later cycles compare normalized records with MONITOR_STATE in the named KV store us-multistate-bid-monitor-<monitorId>.
  5. Only new or changed records related to the saved filter are pushed. A record leaving the filter emits an explicit exited change.

Saved filter changes fail visibly for an existing monitorId; create a new ID for a different subscription. The webhook URL is used for delivery but is never persisted or logged.

Alerts

Every emitted dataset event contains:

  • changeType, matchTransition, and exact changedFields
  • current and previous normalized records
  • emailReady.subject and emailReady.textBody
  • canonical official source URL

When webhookUrl is supplied, the Actor makes one HTTPS JSON POST per event. A failed delivery produces a non-zero run, marks silentFailure: false, and does not advance monitor state. Delivery is therefore at least once; receivers should deduplicate by monitorId, source/id, and detectedAt.

PAY_PER_EVENT staging

staging/pricing-pay-per-event.json defines the primary monitor-access-30-days event at $49 and Apify's synthetic apify-actor-start event at $0.00005. Default-dataset item charging is explicitly disabled, so per-record pricing is not the primary model. The Actor calls Actor.charge() only when a named monitor has no active 30-day pass. Apify Console monetization remains a Wes/Jeff manual action.

Safety and failure contract

  • Hard-coded HTTPS government source hosts only; no credentials, cookies, proxies, or private sources.
  • Sequential requests with a minimum 1,000 ms delay, bounded retries, 20-request maximum, 200-record maximum, 120-second maximum, and 512 MB Actor memory maximum.
  • All selected sources must complete and normalize successfully before state can advance.
  • State refuses to silently prune above its configured hard cap.
  • No source failure, webhook failure, state mismatch, or budget failure is returned as success.

Local verification

npm install
npm test
npm run validate:diff
npm run validate

The independent known-change answer key runs three watch cycles. Cycle 1 establishes a baseline; cycles 2 and 3 contain manually labeled new and changed records. validation/diff-verification.json is the reproducible score artifact and fails unless field accuracy is at least 0.95 with zero missed changes and zero silent failures.

The live field-normalization check uses independent official CSV/detail surfaces and may fail visibly if a government endpoint is temporarily unavailable. No failure is converted to an empty success.