State & Local Bid Monitor — BidNet, Texas, NY, PlanetBids
Pricing
from $10.00 / 1,000 bid alerts
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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 value | Portal | Coverage | Fields beyond title/dates | Filters applied server-side |
|---|---|---|---|---|
bidnet | BidNet Direct state purchasing groups | 47 states (all except CO, VA, WY; MI via the MITN group), thousands of local agencies | AI summary of the notice as description, state | keyword, state |
texas-esbd | Texas Electronic State Business Daily | Every Texas state agency, university, ISD and co-op member posting on ESBD | agency, NIGP codes, description, contact name/email, estimated value | posting-date window |
nyscr | NYS Contract Reporter | New York State agencies, authorities, SUNY/CUNY, NYC-adjacent public bodies | agency, division, category, ad type, location | posting-date window |
planetbids | PlanetBids agency portals | Any agency on PlanetBids (hundreds of California cities, counties and districts); one portal id per agency | agency, NAICS/category ids, description, contact, estimated value, stage | keyword, issue date |
bonfire | Bonfire agency portals | Any agency on Bonfire (cities and counties nationwide); one subdomain per agency | agency, reference number, closing date | none (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
- 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). - Applies your
keywordsandnaicsOrCategoriesfilters. - Compares every match with the monitor's saved state (
source:bidId → due date + status). - 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. - Saves the state, then POSTs a run summary to
webhookUrlif 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
| Field | Default | Notes |
|---|---|---|
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 |
lookbackDays | 7 | Posted within N days. The seen-state prevents duplicates, so a wide overlap is safe |
maxNewPerSource | 5 | Cap per source per run; the rest stays unseen and comes out next run |
maxItems | 10 | Cap per run over all sources |
firstRunMode | emitAll | emitAll reports every current match on the first run; baseline records them silently |
webhookUrl | "" | Optional POST target for the run summary |
monitorId | default | One state store per ID — run several watchlists side by side |
proxyConfiguration | none | Only 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
statecolumn for portal bids:planetbids:17950:CA,bonfire:dallascityhall:TX.
Recommended setup for a daily feed
- Create a task with your sources, states, portals and keywords, and set
monitorId(e.g.roofing-tx-ca). - First run: set
firstRunModetobaselineandlookbackDaysto 30. This records everything currently open that matches, emits nothing, and stops your first day from being a 300-row backlog. - Switch
firstRunModeback toemitAll(it only matters while the state is empty), keeplookbackDaysat 7 and raisemaxNewPerSource/maxItemsto 100+. - 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.
- Point
webhookUrlat 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.