State & Local Bid Monitor — BidNet, Texas, NY, PlanetBids avatar

State & Local Bid Monitor — BidNet, Texas, NY, PlanetBids

Pricing

from $10.00 / 1,000 bid alerts

Go to Apify Store
State & Local Bid Monitor — BidNet, Texas, NY, PlanetBids

State & Local Bid Monitor — BidNet, Texas, NY, PlanetBids

Watch state and local government bids on BidNet Direct (47 states), Texas ESBD, NY Contract Reporter, PlanetBids and Bonfire and get only NEW or changed solicitations since the last run: due date, agency, category, contact, value. Daily schedule. No login. MCP-ready. $10 per 1,000 alerts.

Pricing

from $10.00 / 1,000 bid alerts

Rating

0.0

(0)

Developer

Khrystyna Skotte

Khrystyna Skotte

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

State & Local Bid Monitor — new government bids daily, one feed

Get a daily feed of only the new or updated state and local government solicitations that match your keywords, pulled from five public procurement portals in one run. The monitor remembers every bid it has already reported, so a scheduled run emits just the delta (marked new or updated), posts a summary to your webhook, and costs you only for what actually changed. No login, no API key, no proxy required.

Use it instead of checking BidNet, the Texas ESBD, the NY Contract Reporter and each city's PlanetBids or Bonfire portal by hand every morning.

Source coverage

sources valuePortalCoverageFields beyond title/datesFilters applied server-side
bidnetBidNet Direct state purchasing groups47 states (all except CO, VA, WY; MI via the MITN group), thousands of local agenciesAI summary of the notice as description, statekeyword, state
texas-esbdTexas Electronic State Business DailyEvery Texas state agency, university, ISD and co-op member posting on ESBDagency, NIGP codes, description, contact name/email, estimated valueposting-date window
nyscrNYS Contract ReporterNew York State agencies, authorities, SUNY/CUNY, NYC-adjacent public bodiesagency, division, category, ad type, locationposting-date window
planetbidsPlanetBids agency portalsAny agency on PlanetBids (hundreds of California cities, counties and districts); one portal id per agencyagency, NAICS/category ids, description, contact, estimated value, stagekeyword, issue date
bonfireBonfire agency portalsAny agency on Bonfire (cities and counties nationwide); one subdomain per agencyagency, reference number, closing datenone (all open bids listed)

Default {} run: bidnet for California and Texas plus texas-esbd, last 7 days, up to 5 bids per source.

Sources that were checked and skipped (not reachable without a browser or login, so not included): Cal eProcure (PeopleSoft, browser only), DemandStar (API requires an account token), OpenGov Procurement (Cloudflare challenge), Maryland eMMA and Arizona APP (Ivalua browser check / postbacks), Ohio Procure, Florida VBS, NC eVP, PA eMarketplace, Virginia eVA (JavaScript-only listings), COMMBUYS, NJSTART, BidBuy (public bid pages removed).

How it works

  1. For each selected source, lists the bids posted within the last lookbackDays (Bonfire has no posted date, so all of its open bids are considered).
  2. Applies your keywords and naicsOrCategories filters.
  3. Compares every match with the monitor's saved state (source:bidId → due date + status).
  4. Emits a record when the bid is unseen (changeType: "new") or its due date / status changed (changeType: "updated"), enriched with the detail page (description, contact, estimated value) where the portal publishes one.
  5. Saves the state, then POSTs a run summary to webhookUrl if set.

State lives in a named key-value store stateproc-monitor-<hash of monitorId> in your Apify account, capped at 50,000 bids (oldest are dropped). Delete the store to reset a monitor.

Input

FieldDefaultNotes
sources["bidnet","texas-esbd"]Any of bidnet, texas-esbd, nyscr, planetbids, bonfire
states["CA","TX"]Picks the BidNet purchasing groups; texas-esbd only runs when TX is listed, nyscr only when NY is. Empty = all groups and all state sources
portals[]Your agencies: planetbids:17950, bonfire:dallascityhall, optionally :CA to tag the state (see below). When empty, planetbids uses four California agencies and bonfire uses Dallas, Boulder County and Charlotte as examples
keywords[]OR-ed, case-insensitive. Matched on title, reference number, category and description; BidNet and PlanetBids are also searched server-side per keyword. Empty = every bid
naicsOrCategories[]Substring match on the category field (NIGP codes on Texas, NAICS ids on PlanetBids, category names on NY). Bids without a category field pass through
lookbackDays7Posted within N days. The seen-state prevents duplicates, so a wide overlap is safe
maxNewPerSource5Cap per source per run; the rest stays unseen and comes out next run
maxItems10Cap per run over all sources
firstRunModeemitAllemitAll reports every current match on the first run; baseline records them silently
webhookUrl""Optional POST target for the run summary
monitorIddefaultOne state store per ID — run several watchlists side by side
proxyConfigurationnoneOnly needed if BidNet's AWS WAF starts challenging (many states × many keywords); then enable residential proxies

Finding your portal ids

  • PlanetBids: open your agency's vendor portal, e.g. https://vendors.planetbids.com/portal/17950/bo/bo-search. The number after /portal/ is the id → planetbids:17950. Examples: 17950 City of San Diego, 23532 City of Palmdale, 39981 City of Montclair, 48397 Santa Clara Valley Water District.
  • Bonfire: open the agency's opportunities page, e.g. https://dallascityhall.bonfirehub.com/portal/?tab=openOpportunities. The subdomain is the id → bonfire:dallascityhall. Examples: dallascityhall, bouldercounty, charlottenc, detroit, cincinnati-oh, utah.
  • Add a state tag to fill the state column for portal bids: planetbids:17950:CA, bonfire:dallascityhall:TX.
  1. Create a task with your sources, states, portals and keywords, and set monitorId (e.g. roofing-tx-ca).
  2. First run: set firstRunMode to baseline and lookbackDays to 30. This records everything currently open that matches, emits nothing, and stops your first day from being a 300-row backlog.
  3. Switch firstRunMode back to emitAll (it only matters while the state is empty), keep lookbackDays at 7 and raise maxNewPerSource / maxItems to 100+.
  4. Schedule the task daily at 07:00 in your time zone. Portals post throughout the business day; a morning run catches the previous day's postings before your estimators start.
  5. Point webhookUrl at Slack (incoming webhook), Zapier, Make, or your own endpoint.

Example: roofing contractor watching Texas, California and two home-town portals

{
"sources": ["bidnet", "texas-esbd", "planetbids", "bonfire"],
"states": ["TX", "CA"],
"portals": ["planetbids:17950:CA", "bonfire:dallascityhall:TX"],
"keywords": ["roofing", "roof replacement", "re-roof"],
"lookbackDays": 7,
"maxNewPerSource": 100,
"maxItems": 500,
"monitorId": "roofing-tx-ca",
"webhookUrl": "https://hooks.slack.com/services/..."
}

Output

One record per new or updated bid:

{
"source": "texas-esbd",
"portal": "txsmartbuy.gov",
"agency": "Health & Human Services Commission",
"state": "TX",
"bidId": "HHS0017500.v3",
"referenceNumber": "HHS0017500.v3",
"title": "As-needed Locksmith and Security Door Installation Services - El Paso State Supported Living Center",
"description": "HHSC PCS is seeking competitive bids to establish contract(s) for as-needed locksmith ...",
"category": "91048-Locksmith Services",
"postedDate": "2026-09-28",
"dueDate": "2026-10-20T10:30",
"daysUntilDue": 22,
"status": "Posted",
"estimatedValue": 105000,
"contactName": "Vanessa Cantu",
"contactEmail": "Vanessa.Cantu@hhs.texas.gov",
"bidUrl": "https://www.txsmartbuy.gov/esbd/HHS0017500.v3",
"matchedKeyword": "locksmith",
"changeType": "new",
"firstSeenAt": "2026-09-29T00:26:52.932Z",
"monitorId": "default"
}

dueDate is the portal's local time without a zone suffix (each portal publishes in its own time zone). description, estimatedValue, contactName and contactEmail are null when the portal does not publish them (BidNet hides the issuing agency and contacts behind registration; NY Contract Reporter and Bonfire show details only to logged-in vendors). daysUntilDue is computed at run time.

Webhook payload

{
"monitorId": "roofing-tx-ca",
"runAt": "2026-09-29T07:00:12.000Z",
"newCount": 4,
"updatedCount": 1,
"scanned": 212,
"perSource": { "bidnet": { "scanned": 150, "emitted": 3 }, "texas-esbd": { "scanned": 62, "emitted": 2 } },
"seenTotal": 1830,
"baseline": false,
"bids": [ "...first 50 records as above..." ]
}

The same summary is saved as SUMMARY in the run's default key-value store.

Pricing

$0.005 per run start plus $0.01 per emitted bid ($10 per 1,000 alerts). Baseline runs and runs with no changes cost only the start fee. Bids beyond maxNewPerSource / maxItems are not charged and are reported on the next run.