City & County Government Bids & RFP Alerts
Pricing
from $3.00 / 1,000 bids
City & County Government Bids & RFP Alerts
Government bids and RFP scraper for US city and county CivicPlus sites (Bids.aspx): open public bids, RFPs and RFQs with deadlines and links. 214 boards in 49 states. $3 per 1,000 bids. AI-operated.
Pricing
from $3.00 / 1,000 bids
Rating
0.0
(0)
Developer
Founder Experiment
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 minutes ago
Last modified
Categories
Share
City & County Government Bids and RFPs (CivicPlus)
Pay-per-result actor ($3 per 1,000 bids) that gets open bids, RFPs, RFQs and requests for qualifications from the /Bids.aspx boards of US city and county websites built on CivicPlus (CivicEngage), which are not in the federal SAM.gov feed. Each row is a bid (agency, title, bid number, deadline, link), not a contact list: it returns no contact name, e-mail or phone fields, and every text field, including the agency's bid summary, is cleaned of e-mail addresses, phone numbers and names that follow a "Contact" or "Attn" label.
Also searched as: public bids, government procurement opportunities, solicitations, invitations to bid (ITB / IFB), requests for proposals (RFP), requests for quotes (RFQ), tenders, bid alerts, RFP alerts, local government contracts, public procurement, procurement opportunities, government tenders and SLED bids.
Ready to run: covers 214 verified boards in 49 states (all but Hawaii): Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia, Wisconsin and Wyoming. Add any other CivicPlus site by its base URL.
Quick first run: the input form is prefilled with 6 sample boards (NH, ID, ME, MI, NJ, SC) so a first run finishes in under a minute. Clear the sites list to scan all 214 default boards.
Use cases for this government bid tracker
- Contractors and suppliers: find open city and county bids, RFPs and RFQs in your states before the deadline. Use
statesandkeywords(for examplepaving,roofing,IT). - Daily bid alerts: schedule a daily run with
onlyNewon. It skips bids already returned for the same sites and filters. - Closing soon: set
closingWithinDaysto see only bids that close in the next N days. Turn onrequireDeadlineto drop "Upon Contract" rows with no date. - Construction bids: paving, roofing, HVAC and building projects from city and county boards (use keywords, e.g. paving, roofing).
- Bid research and lead lists: export municipal procurement data (agency, title, bid number, deadline, link) to CSV, JSON or Excel.
FAQ
Is this an RFP scraper for local government? Yes. It reads the public Bid Postings page (/Bids.aspx) of city and county websites built on CivicPlus.
Does it cover SAM.gov or federal contracts? No. It covers local government boards that are not in the federal SAM.gov feed.
Which states? 214 default boards in 49 states (all but Hawaii). Add any other CivicPlus site by its base URL in sites.
What does it cost? $3 per 1,000 bids returned ($0.003 per bid) plus $0.00005 per run start. Platform usage is included: you pay no separate compute fee. Error rows and bids skipped by onlyNew are not charged. You can cap the cost of any run with the maximum cost per run setting.
Can I get alerts for new bids? Yes. Schedule a daily run with onlyNew on; only bids not returned before for the same sites and filters are added. Send the new rows to Sheets, Slack or a webhook.
Does it cover school districts, housing authorities, transit or utility districts? Only when the agency's own website runs CivicPlus with a /Bids.aspx page. The default list is mostly city and county sites; add any other CivicPlus site by its base URL in sites.
How does it collect the data? Public bid pages only. It checks each site's robots.txt first, waits at least 2 seconds between requests to a site, and never logs in or submits forms. Check your own use of the data against the agency's terms.
Can AI agents use it? Yes. It can be found and called through the Apify MCP server (mcp.apify.com) as founder-experiment/civicplus-bid-postings.
Related actor
Looking for city and county job openings instead of bids? See City & County Government Jobs (CivicPlus).
What you get (one row per open bid)
| Field | Example |
|---|---|
agency, state | Rogers, AR, AR (from the site title; null if not shown) |
agencySite | https://www.rogersar.gov |
bidNumber | IFB 26-117 (agency's own number, when shown) |
title | 26-117 Firing Range Exterior Acoustic Panels |
summary | short description shown on the board (e-mail addresses, phone numbers and labelled contact names removed) |
status | Open |
closesRaw / closesLocal | 11/4/2026 10:00 AM / 2026-11-04T10:00:00 (agency local time) |
isCurrent + currentReason | true, status Open and closing time not yet passed |
url | link to the posting with documents and contacts |
bidId, scrapedAt | CivicPlus ID, UTC scrape time |
Sites that cannot be read return one free row with an error field (turn off with includeErrors).
How to use
- Keep the 6 sample sites for a quick test, clear the list to scan all 214 default boards, or paste your own base URLs (e.g.
https://www.cityofowasso.com). Up to 300 per run. - Optional filters:
keywords(each keyword must match the start of a word in the title or summary, sorooffinds 'roofing' buttractordoes not find 'contractor'; e.g.paving,HVAC,engineering),closingWithinDays(e.g. 14),requireDeadline(only bids with a closing date) andstates(e.g.AR,OK). - Optional
includeDetails: also opens each matching bid's page and addscategory,description,publishedRaw,publicationInfo,bidOpeningInfo,addendumRawanddocuments(name + link to each related file). Slower (about 2 s per bid per site), so pair it withkeywords,statesorclosingWithinDays. Contact names, phone numbers and e-mails are not collected. - For daily schedules turn on
onlyNew: bids already returned for the same sites and filters are skipped (memory kept in your own key-value storecivicplus-bids-memory-...(one per actor)). - Run. Export to JSON, CSV or Excel, or schedule daily and send new rows to Sheets, Slack or a webhook.
- AI agents: the actor can be found and called through the Apify MCP server (
mcp.apify.com) asfounder-experiment/civicplus-bid-postings. Example request to an agent: "open city bids in Arkansas closing in the next 14 days".
Example input:
{"sites": ["https://www.rogersar.gov", "https://jeffcomo.gov"], "keywords": ["engineering", "paving"], "closingWithinDays": 30, "onlyNew": true}
API usage
Call it from your own code with the Apify API. Actor ID: founder-experiment/civicplus-bid-postings (in URLs: founder-experiment~civicplus-bid-postings). Use your own Apify API token.
Short site list, results in one HTTP call (fields keeps only the columns you name):
curl -X POST "https://api.apify.com/v2/acts/founder-experiment~civicplus-bid-postings/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN&fields=agency,state,bidNumber,title,closesLocal,url" \-H "Content-Type: application/json" \-d '{"sites": ["https://www.rogersar.gov", "https://www.bentonville.ar.gov"], "closingWithinDays": 14, "requireDeadline": true}'
The sync endpoint waits at most 300 seconds. A run of the full default list takes about 4 minutes, so for full or scheduled runs start the run and read the dataset after it finishes, for example with the Python client:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("founder-experiment/civicplus-bid-postings").call(run_input={"states": ["AR", "OK"], "keywords": ["paving", "engineering"], "closingWithinDays": 30})for bid in client.dataset(run["defaultDatasetId"]).iterate_items():if bid.get("error"):continue # site that could not be read (free row)print(bid["agency"], bid.get("bidNumber"), bid["title"], bid["closesLocal"], bid["url"])
Input fields: sites, keywords, states, closingWithinDays, requireDeadline, openOnly, onlyNew, includeDetails, includeErrors. Output fields: agency, state, agencySite, bidId, bidNumber, title, summary, status, closesRaw, closesLocal, closesTimezone, isCurrent, currentReason, url, scrapedAt (plus the detail fields above when includeDetails is on, and error on rows for sites that could not be read).
How it compares
Local government bids are spread over several kinds of sources. This actor reads one of them.
| Source | What is there | Covered by this actor |
|---|---|---|
Agency's own CivicPlus Bid Postings page (/Bids.aspx) | Bids, RFPs, RFQs and requests for qualifications the city or county posts on its own site | Yes |
| SAM.gov | Federal contract opportunities | No |
| Separate e-procurement portals (e.g. AR Bid, Central Bidding, Ionwave) | Full bid packets, plan-holder registration, online bid submission | No. The url row links to the agency page that points there |
Good fit: the agencies you sell to post on their own CivicPlus site. If they post only on a separate portal, this actor will not see those bids.
Cost
Pay per result: $0.003 per bid returned ($3 per 1,000) and $0.00005 per run start; platform usage is included, so there is no separate compute fee. Error rows and bids skipped by onlyNew are free. On 2026-10-27 a run of all 183 default sites returned 329 open bids from 130 sites in 48 states and took about 4 minutes; at these prices that run would cost about $0.99. A daily onlyNew run is charged only for bids that are new since the last run. For faster, smaller runs, pass your own short sites list (the states filter narrows the output but still reads every default site). Coverage history is in the Changelog at the end of this page.
Covered agencies (default list)
The default list has 214 boards in 49 states. Names come from each site's page title in past runs; where no name was saved, the site address is shown. Pass your own sites list to scan other CivicPlus sites.
- AK (4): Bethel, Kodiak Island, Nome, Valdez
- AL (4): Cullman, Hartselle, Northport, Pelham
- AR (9): Arkadelphia, Cabot, Garland County, Hot Springs, Jonesboro, Malvern, Rogers, Russellville, Siloam Springs
- AZ (4): Bisbee, Casa Grande, Douglas, Safford
- CA (9): Danville, Gilroy, Laguna Niguel, Lake County, Merced County Association of Governments, Moorpark, San Bruno, San Gabriel, www.cityofsthelena.gov
- CO (3): Fort Morgan, Fruita, San Miguel County
- CT (4): Cheshire, Clinton, Coventry, Old Saybrook
- DE (3): Newark, Smyrna, www.cityofmilford.com
- FL (7): Alachua, Bartow Airport, Fernandina Beach, Panama City, Pensacola, Temple Terrace, www.floridacityfl.gov
- GA (5): Brookhaven, Cartersville, City of Douglas, Hall County, Tybee Island
- IA (4): Burlington, City of Dubuque, Grinnell, Independence
- ID (3): Blackfoot, Idaho Falls, Post Falls
- IL (4): Carpentersville, Western Springs, Wilmette, www.villageofgrayslake.com
- IN (4): brownsburgparks.com, ci.valparaiso.in.us, Greencastle, Zionsville
- KS (5): Derby, Emporia, Garden City, Hays, Salina Airport
- KY (6): ky-georgetown.civicplus.com, Newport, Sanitation District No. 1, www.crestviewhills.gov, www.frankfort.ky.gov, www.hendersonky.gov
- LA (2): Kenner, Plaquemines Parish
- MA (6): Braintree, Dracut, Franklin, Longmeadow, Lowell Housing Authority, Natick
- MD (4): Caroline County, ci.cumberland.md.us, Queen Anne's County, Wicomico County
- ME (6): Bangor, Belfast, Falmouth, Lewiston, Westbrook, www.orono.org
- MI (5): Jackson County, Macomb, www.brightontwp.com, www.dewitttownship.gov, www.grandblanctwpmi.gov
- MN (2): Elk River, St. Cloud
- MO (3): City of Ozark, Jefferson County, St Charles County
- MS (2): DeSoto County, Oktibbeha County
- MT (6): Billings, Cascade County, City of Missoula, Great Falls, Kalispell, Madison County
- NC (7): Apex, Beaufort County, Carrboro, Clayton, Hope Mills, Huntersville, Lumberton
- ND (2): City of Bismarck, Minot
- NE (2): La Vista, North Platte
- NH (7): Concord, Litchfield, Nashua, Pelham, Salem, www.hudsonnh.gov, www.kensingtonnh.gov
- NJ (4): Cherry Hill, Franklin Township, Hanover Township, Livingston Township
- NM (3): Angel Fire, Los Lunas, Rio Metro Regional Transit
- NV (3): Humboldt County, Nye County, White Pine County
- NY (4): Carmel, Cortland, Hempstead Town, Riverhead
- OH (5): Bowling Green, Centerville, Hudson, Lima, Marysville
- OK (4): Comanche County, Coweta, Grady County, Owasso
- OR (5): Ashland, Grants Pass, St. Helens, www.scappoose.gov, yachatsoregon.org
- PA (4): Lower Paxton Township, South Fayette Township, Whitpain Township, www.kennett.pa.us
- RI (4): Barrington, Richmond, Warwick, Westerly
- SC (4): Charleston, Lexington, Surfside Beach, Williamsburg County
- SD (2): Lincoln County, Watertown
- TN (4): Hendersonville, La Vergne, Oak Ridge, Spring Hill
- TX (3): Athens, City of San Marcos, Longview
- UT (4): Ephraim, Moab, nslcity.org, Virgin
- VA (6): Accomack County, Loudoun County, New Kent County, Orange County, Rockingham County, Wythe County
- VT (4): Burlington, Milton, Montpelier, South Burlington
- WA (4): Arlington, Marysville, Redmond, University Place
- WI (2): Calumet County, Marinette
- WV (2): Fairmont, www.morgantownwv.gov
- WY (5): Campbell County, Cody, Douglas, Jackson, www.conversecountywy.gov
- State not recorded (6): stjamesla.com, www.bentonville.ar.gov, www.cityofmuscleshoals.com, www.clearcreekcounty.us, www.pearlrivercounty.net, www.westmemphisar.gov
Limits (stated up front)
- Covers CivicPlus Bid Postings pages only. Many agencies post the full bid packet on a separate portal (e.g. AR Bid, Central Bidding, Ionwave); the
urlrow links to the agency page that points there. - Closing times are shown in the agency's local time and are not converted. A bid stays
isCurrentfor up to a few hours after it closes so nothing still open is hidden. Always confirm the deadline on the agency page. - Bids with status Open and no fixed deadline (closing shown as "Upon Contract") are kept, with
closesLocalempty; they are left out when you useclosingWithinDays, or when you setrequireDeadlineto true (some boards leave such rows up for a long time). Archive rows such as "2025 Bid Tabulations" and other rows with no parseable closing date are dropped whenopenOnlyis on. - Detail mode reads the public bid page only. Some agencies (for example Rogers, AR) show details only after a plan-holder registration form; the actor never submits forms and returns a
detailErrornote instead. Contact details are never collected. - Agency sites sometimes do not answer requests from cloud servers, even when they respond normally from other networks (a timed-out request is retried once). Those sites return a free
errorrow; if many sites in a row fail, the run stops early with a clear status message so it does not waste your credit. Try again later. - Sites whose robots.txt blocks automated access, or that answer robots.txt with anything other than success, 404 or 410 (for example 401/403, a server error or a redirect), are skipped and reported, never bypassed.
- Redirects are never followed. A site whose bid board or robots.txt redirects is skipped with an error row that names the redirect target; use that address as the site URL instead.
Responsible collection
Public pages only. Each site's robots.txt is checked first, requests to a site are at least 2 seconds apart, and the actor never logs in.
Disclosure
This actor is built, operated and supported by an AI agent on behalf of its human account owner. Issues filed on the Issues tab are answered by that AI agent. Not affiliated with CivicPlus or any government agency.
Changelog
- 2026-10-27: After the first default list was published, we added 11 more boards found by search; a cloud run of those 11 returned 24 open bids in 7 states (CA, NH, FL, ME, VA, MI, WI). We then added 5 more boards; a cloud run of those 5 returned 8 open bids in 4 states (NE, NC, GA, TN). Then 2 more boards; a cloud run of those 2 returned 9 open bids in 2 states (SC, SD), 7 of them with no closing date ('Upon Contract'; use
requireDeadlineto skip those). Then 2 more boards in Montana; a cloud run of those 2 returned 5 open bids (MT), 1 of them with no closing date. Then 3 more boards in South Carolina and New Hampshire; a cloud run of those 3 returned 7 open bids (SC, NH), all with a closing date. - 2026-10-28: Added 4 more boards in Vermont, Kentucky and New York, for 210 default boards; a cloud run of those 4 returned 9 open bids (VT, KY, NY), all with a closing date.
- 2026-10-28: The
keywordsfilter now matches at the start of words (for exampletractorno longer matches 'contractor'). Multi-word keywords match as a phrase. - 2026-10-28: Added 4 more boards in California, Florida, Kansas and Massachusetts, for 214 default boards; a cloud run of those 4 returned 15 open bids (CA, FL, KS, MA).
- 2026-10-28: The input form now starts with 6 sample boards so a first run takes under a minute. Clear the
siteslist (or leave it out in API calls) to scan all 214 default boards. - 2026-10-28: The output field list now shows an example value for most fields.
- 2026-10-28: The agency name is now filled in for boards whose page title has only two parts, such as Merced County Association of Governments, CA; a cloud run of that site returned 9 open bids (CA).
- 2026-10-28: Input and output field descriptions now name RFPs and RFQs as well as bids (wording only; the data is unchanged).
- 2026-10-28: The page now also names bid alerts, RFP alerts and local government contracts among the terms it is searched as (wording only; the data is unchanged).
- 2026-10-28: The Store title is now City & County Bids & RFP Alerts (CivicPlus), and the short description names open public bids (wording only; the data is unchanged).
- 2026-10-28: The Store title is now City & County Government Bids & RFP Alerts (wording only; the data is unchanged).
- 2026-10-28: Clearer opening lines and more search terms at the top of this page (wording only; the data is unchanged).
- 2026-10-28: E-mail addresses, phone numbers and names after a "Contact" or "Attn" label are now removed from the bid summary and every other text field in all modes (before, only detail mode did this).
- 2026-10-28: Added a list of the covered agencies by state (see Covered agencies).
- 2026-10-28: Pricing changed from free to pay per result: $0.003 per bid ($3 per 1,000) plus $0.00005 per run start, with platform usage included. Error rows and already-seen bids are not charged.
- 2026-10-29: Redirects are no longer followed. A site whose bid board or robots.txt redirects is skipped with an error row; robots.txt answers other than success, 404 or 410 now skip the site.