{
  "openapi": "3.0.1",
  "info": {
    "title": "City & County Government Bids & RFP Alerts",
    "description": "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.",
    "version": "0.2",
    "x-build-id": "KWjWVRWn4rHvNgWr6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/founder-experiment~civicplus-bid-postings/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-founder-experiment-civicplus-bid-postings",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/founder-experiment~civicplus-bid-postings/runs": {
      "post": {
        "operationId": "runs-sync-founder-experiment-civicplus-bid-postings",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/founder-experiment~civicplus-bid-postings/run-sync": {
      "post": {
        "operationId": "run-sync-founder-experiment-civicplus-bid-postings",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "sites": {
            "title": "Agency CivicPlus sites",
            "type": "array",
            "description": "Base URLs of US city/county sites that host a CivicPlus Bids.aspx page, e.g. https://www.rogersar.gov. Prefilled with 6 sample boards so a first run finishes in under a minute. Clear the list to scan all 214 default boards in 49 states (checked 2026-10-27 or 2026-10-28). Max 300 per run.",
            "default": [
              "https://www.rogersar.gov",
              "https://www.jonesboroar.gov",
              "https://www.hotspringsar.gov",
              "https://www.garlandcounty.org",
              "https://www.bentonville.ar.gov",
              "https://www.cabotar.gov",
              "https://www.russellvillearkansas.org",
              "https://www.westmemphisar.gov",
              "https://www.arkadelphia.gov",
              "https://www.malvernar.gov",
              "https://www.siloamsprings.gov",
              "https://www.cityofowasso.com",
              "https://www.cityofcoweta-ok.gov",
              "https://www.comanchecountyok.gov",
              "https://www.gradycountyok.com",
              "https://www.sccmo.org",
              "https://ozarkmissouri.com",
              "https://jeffcomo.gov",
              "https://www.sanmarcostx.gov",
              "https://www.athenstx.gov",
              "https://longviewtexas.gov",
              "https://www.springhilltn.org",
              "https://www.lavergnetn.gov",
              "https://www.oakridgetn.gov",
              "https://www.kenner.la.us",
              "https://www.plaqueminesparish.gov",
              "https://stjamesla.com",
              "https://www.emporiaks.gov",
              "https://www.haysusa.com",
              "https://www.derbyks.gov",
              "https://www.garden-city.org",
              "https://www.desotocountyms.gov",
              "https://www.oktibbeha.ms.gov",
              "https://www.pearlrivercounty.net",
              "https://www.cullmanal.gov",
              "https://www.cityofmuscleshoals.com",
              "https://hartselle.org",
              "https://pelhamalabama.gov",
              "https://www.northportal.gov",
              "https://www.burlingtoniowa.org",
              "https://www.cityofdubuque.org",
              "https://www.grinnelliowa.gov",
              "https://www.independenceia.gov",
              "https://www.fruita.org",
              "https://cityoffortmorgan.com",
              "https://www.clearcreekcounty.us",
              "https://www.sanmiguelcountyco.gov",
              "https://www.cartersvillega.gov",
              "https://www.cityoftybee.org",
              "https://www.hallcounty.org",
              "https://www.brookhavenga.gov",
              "https://www.newportky.gov",
              "https://www.hendersonky.gov",
              "https://www.crestviewhills.gov",
              "https://ky-georgetown.civicplus.com",
              "https://www.frankfort.ky.gov",
              "https://www.apexnc.org",
              "https://www.huntersville.org",
              "https://townofcarrboro.org",
              "https://www.townofhopemills.com",
              "https://www.limaohio.gov",
              "https://hudson.oh.us",
              "https://www.centervilleohio.gov",
              "https://marysvilleohio.org",
              "https://bgohio.gov",
              "https://www.wilmette.gov",
              "https://www.cville.org",
              "https://www.wsprings.com",
              "https://www.villageofgrayslake.com",
              "https://www.rockinghamcountyva.gov",
              "https://www.accomack.gov",
              "https://www.wytheco.org",
              "https://www.newkent-va.us",
              "https://www.loudoun.gov",
              "https://www.macomb-mi.gov",
              "https://www.dewitttownship.gov",
              "https://www.brightontwp.com",
              "https://www.grandblanctwpmi.gov",
              "https://fbfl.us",
              "https://www.templeterrace.gov",
              "https://www.cityofpensacola.com",
              "https://www.panamacity.gov",
              "https://www.floridacityfl.gov",
              "https://www.elkrivermn.gov",
              "https://www.ci.stcloud.mn.us",
              "https://www.marinette.wi.us",
              "https://www.charleston-sc.gov",
              "https://www.wcdevboard.com",
              "https://zionsville-in.gov",
              "https://brownsburgparks.com",
              "https://ci.valparaiso.in.us",
              "https://cityofgreencastle.com",
              "https://www.bismarcknd.gov",
              "https://www.minotnd.gov",
              "https://cityoflavista.org",
              "https://www.chnj.gov",
              "https://www.livingstonnj.org",
              "https://www.hanovertownship.com",
              "https://www.franklintownshipnj.org",
              "https://www.claytonnc.gov",
              "https://www.watertownsd.gov",
              "https://www.redmond.gov",
              "https://www.arlingtonwa.gov",
              "https://cityofup.com",
              "https://www.marysvillewa.gov",
              "https://www.bisbeeaz.gov",
              "https://www.douglasaz.gov",
              "https://www.casagrandeaz.gov",
              "https://www.cityofsafford.us",
              "https://www.whitpaintownship.org",
              "https://southfayettepa.com",
              "https://www.kennett.pa.us",
              "https://www.lowerpaxton-pa.gov",
              "https://www.ephraim.gov",
              "https://virgin.utah.gov",
              "https://www.moabcity.gov",
              "https://nslcity.org",
              "https://hempsteadny.gov",
              "https://cortlandny.gov",
              "https://www.sangabrielcity.com",
              "https://www.cityofsthelena.gov",
              "https://www.cityoflagunaniguel.org",
              "https://ashlandoregon.gov",
              "https://grantspassoregon.gov",
              "https://www.scappoose.gov",
              "https://www.sthelensoregon.gov",
              "https://yachatsoregon.org",
              "https://www.dracutma.gov",
              "https://braintreema.gov",
              "https://www.franklinma.gov",
              "https://www.longmeadowma.gov",
              "https://natickma.gov",
              "https://qac.org",
              "https://carolinemd.org",
              "https://www.wicomicocounty.org",
              "https://ci.cumberland.md.us",
              "https://www.angelfirenm.gov",
              "https://www.loslunasnm.gov",
              "https://riometro.org",
              "https://www.humboldtcountynv.gov",
              "https://www.whitepinecounty.net",
              "https://www.nyecountynv.gov",
              "https://www.idahofallsidaho.gov",
              "https://www.postfalls.gov",
              "https://cityofblackfoot.org",
              "https://www.cascadecountymt.gov",
              "https://www.madisoncountymt.gov",
              "https://www.greatfallsmt.gov",
              "https://www.billingsmt.gov",
              "https://concordnh.gov",
              "https://www.hudsonnh.gov",
              "https://www.pelhamweb.com",
              "https://www.kensingtonnh.gov",
              "https://www.falmouthme.org",
              "https://www.orono.org",
              "https://www.bangormaine.gov",
              "https://www.ci.lewiston.me.us",
              "https://www.westbrookmaine.gov",
              "https://www.coventry-ct.gov",
              "https://www.cheshirect.gov",
              "https://www.oldsaybrookct.gov",
              "https://clintonct.org",
              "https://www.campbellcountywy.gov",
              "https://cityofdouglas.org",
              "https://www.jacksonwy.gov",
              "https://www.conversecountywy.gov",
              "https://www.codywy.gov",
              "https://www.fairmontwv.gov",
              "https://www.morgantownwv.gov",
              "https://www.montpelier-vt.org",
              "https://miltonvt.gov",
              "https://www.burlingtonvt.gov",
              "https://www.valdezak.gov",
              "https://www.cityofbethel.org",
              "https://www.kodiakak.us",
              "https://www.nomealaska.org",
              "https://smyrna.delaware.gov",
              "https://www.cityofmilford.com",
              "https://newarkde.gov",
              "https://www.richmondri.gov",
              "https://www.warwickri.gov",
              "https://barrington.ri.gov",
              "https://westerlyri.gov",
              "https://www.litchfieldnh.gov",
              "https://www.cityofalachua.com",
              "https://ocplva.org",
              "https://cityofbelfast.org",
              "https://www.moorparkca.gov",
              "https://www.danville.ca.gov",
              "https://www.sanbruno.ca.gov",
              "https://www.cityofgilroy.org",
              "https://www.lakecountyca.gov",
              "https://co.jackson.mi.us",
              "https://www.calumetcounty.org",
              "https://co.beaufort.nc.us",
              "https://www.lumbertonnc.gov",
              "https://northplattene.gov",
              "https://www.hvilletn.org",
              "https://www.cityofdouglasga.gov",
              "https://www.lexsc.gov",
              "https://www.lincolncountysd.gov",
              "https://www.kalispell.com",
              "https://www.ci.missoula.mt.us",
              "https://surfsidebeach.org",
              "https://www.salemnh.gov",
              "https://nashuanh.gov",
              "https://www.southburlingtonvt.gov",
              "https://www.sd1.org",
              "https://www.townofcarmelny.gov",
              "https://www.townofriverheadny.gov",
              "https://www.salinaairport.com",
              "https://www.bartow-airport.com",
              "https://www.mcagov.org",
              "https://lhma.org"
            ],
            "items": {
              "type": "string"
            }
          },
          "openOnly": {
            "title": "Current open bids only (closing date in the future)",
            "type": "boolean",
            "description": "Skip rows whose closing date has passed or cannot be parsed (archive/notice rows).",
            "default": true
          },
          "keywords": {
            "title": "Keyword filter (any)",
            "type": "array",
            "description": "Keep only bids and RFPs whose title or summary has a word starting with any of these keywords (case-insensitive; roof finds roofing, tractor does not find contractor). Examples: paving, roofing, HVAC, engineering, janitorial, IT.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeErrors": {
            "title": "Include rows for unreadable sites",
            "type": "boolean",
            "description": "Add one free (not charged) row with an 'error' field for each site that could not be read (robots.txt block, site down, no bid board).",
            "default": true
          },
          "closingWithinDays": {
            "title": "Closing within (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only bids whose closing date is within this many days. Empty or 0 = off. Bids with no parseable date are dropped when set."
          },
          "requireDeadline": {
            "title": "Only bids with a closing date",
            "type": "boolean",
            "description": "Drop bids that show no closing date (for example 'Upon Contract'). Some boards leave such rows up for a long time. Off by default.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new since last run",
            "type": "boolean",
            "description": "Remember bids and RFPs already returned for this exact set of sites and filters (stored in your account's key-value store 'civicplus-bids-memory'). Already-seen bids are skipped and not charged. Ideal for daily schedules.",
            "default": false
          },
          "states": {
            "title": "States (2-letter codes)",
            "type": "array",
            "description": "Keep only bids from agencies in these states, e.g. AR, OK. Uses the state shown in the agency site's page title; bids whose state can't be read are dropped when this is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeDetails": {
            "title": "Include bid details (slower)",
            "type": "boolean",
            "description": "Also open each matching bid's detail page and add category, description, publication date, bid opening info, addendum date and a list of related documents (name + link). No contact names, phone numbers or e-mails are collected. Adds about 2 seconds per bid per site; combine with keywords, states or closingWithinDays.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}