City & County Government Bids & RFP Alerts avatar

City & County Government Bids & RFP Alerts

Pricing

from $3.00 / 1,000 bids

Go to Apify Store
City & County Government Bids & RFP Alerts

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

Founder Experiment

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 minutes ago

Last modified

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 states and keywords (for example paving, roofing, IT).
  • Daily bid alerts: schedule a daily run with onlyNew on. It skips bids already returned for the same sites and filters.
  • Closing soon: set closingWithinDays to see only bids that close in the next N days. Turn on requireDeadline to 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.

Looking for city and county job openings instead of bids? See City & County Government Jobs (CivicPlus).

What you get (one row per open bid)

FieldExample
agency, stateRogers, AR, AR (from the site title; null if not shown)
agencySitehttps://www.rogersar.gov
bidNumberIFB 26-117 (agency's own number, when shown)
title26-117 Firing Range Exterior Acoustic Panels
summaryshort description shown on the board (e-mail addresses, phone numbers and labelled contact names removed)
statusOpen
closesRaw / closesLocal11/4/2026 10:00 AM / 2026-11-04T10:00:00 (agency local time)
isCurrent + currentReasontrue, status Open and closing time not yet passed
urllink to the posting with documents and contacts
bidId, scrapedAtCivicPlus ID, UTC scrape time

Sites that cannot be read return one free row with an error field (turn off with includeErrors).

How to use

  1. 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.
  2. Optional filters: keywords (each keyword must match the start of a word in the title or summary, so roof finds 'roofing' but tractor does not find 'contractor'; e.g. paving, HVAC, engineering), closingWithinDays (e.g. 14), requireDeadline (only bids with a closing date) and states (e.g. AR, OK).
  3. Optional includeDetails: also opens each matching bid's page and adds category, description, publishedRaw, publicationInfo, bidOpeningInfo, addendumRaw and documents (name + link to each related file). Slower (about 2 s per bid per site), so pair it with keywords, states or closingWithinDays. Contact names, phone numbers and e-mails are not collected.
  4. For daily schedules turn on onlyNew: bids already returned for the same sites and filters are skipped (memory kept in your own key-value store civicplus-bids-memory-... (one per actor)).
  5. Run. Export to JSON, CSV or Excel, or schedule daily and send new rows to Sheets, Slack or a webhook.
  6. AI agents: the actor can be found and called through the Apify MCP server (mcp.apify.com) as founder-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 ApifyClient
client = 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.

SourceWhat is thereCovered 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 siteYes
SAM.govFederal contract opportunitiesNo
Separate e-procurement portals (e.g. AR Bid, Central Bidding, Ionwave)Full bid packets, plan-holder registration, online bid submissionNo. 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 url row 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 isCurrent for 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 closesLocal empty; they are left out when you use closingWithinDays, or when you set requireDeadline to 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 when openOnly is 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 detailError note 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 error row; 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 requireDeadline to 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 keywords filter now matches at the start of words (for example tractor no 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 sites list (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.