Government Bids Scraper: RFPs from 500+ City Portals avatar

Government Bids Scraper: RFPs from 500+ City Portals

Pricing

from $2.00 / 1,000 bids

Go to Apify Store
Government Bids Scraper: RFPs from 500+ City Portals

Government Bids Scraper: RFPs from 500+ City Portals

Government bids scraper and RFP scraper for 500+ US city, county, school and utility portals on OpenGov Procurement. Open bids, RFQs, deadlines, buyer contacts, only-new bid alerts. No login. Export data, run via API, schedule and monitor runs, or integrate with other tools.

Pricing

from $2.00 / 1,000 bids

Rating

0.0

(0)

Developer

Mohamed Bahaa

Mohamed Bahaa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does Government Bids & RFP Scraper do?

Government bids scraper and RFP scraper for 500+ US city, county and school procurement portals. Scan a whole state at once, get buyer contacts and deadlines, and receive only new bid opportunities on scheduled runs.

Government Bids Scraper output table: open bids with agency, title, type, reference number, due date and buyer contact

What you can extractFeatures & integrations
📄 Bid basics: title, solicitation type, reference number, statusWhole-state scan: type a state and every OpenGov agency is checked
🏛️ Agency & department: who is buying, with city and stateFilters: keywords, solicitation type, due within, posted within
⏰ Deadlines: due date, Q&A deadline, pre-bid meetingOnly new bids: plus new-addendum alerts
👤 Buyer contact: name, email and phone as the agency publishes themScheduling: run it hourly, daily or weekly with Apify schedules
🏷️ Category codes: UNSPSC and NIGPExport anywhere: JSON, CSV, Excel, XML or HTML from the dataset
📎 Addenda & attachments: addenda and attachment namesAPI & SDKs: Apify REST API plus JavaScript and Python clients
📋 Timeline & evaluation criteria: when listed on the bidWebhooks & integrations: Zapier, Make, Slack, Google Drive and more
🔒 Sealed-bid flag: shown per bidAI agents (MCP): call it from Claude or other agents via Apify's MCP server

Free sample: 53 open Massachusetts government bids (+ a few CT/NY) for HVAC, roofing, janitorial, IT and landscaping, pulled with this Actor and the companion State Bids Scraper. Run it yourself for your own states and get new bids on a schedule.

Try it free in 1 click: open this ready-made example and press Start. Apify's free plan includes $5 of usage every month, no credit card needed. The Input example below returned 4 records and costs about $0.008 at list price.

Government bids scraper for OpenGov Procurement, the e-procurement portal used by 500+ US cities, counties, school districts, transit agencies, airports and utilities (Pittsburgh, Tampa, Orange County CA, Ocean County NJ, Las Cruces and hundreds more). It pulls open bids, RFPs, RFQs and invitations to bid with deadline, solicitation type, reference number, department, buyer contact, pre-bid meeting, questions deadline, UNSPSC/NIGP category codes, addenda and attachment names, in one clean table. No login, no browser, no proxies.

  • Government bids scraper and RFP scraper for OpenGov Procurement portals: open bids, RFPs, RFQs and invitations to bid from 500+ US city, county, school district, transit, airport and utility agencies.
  • Scan a whole state: type FL, CA or any 2-letter code and every active OpenGov agency there is checked, or pick agencies by portal code, URL or name.
  • Bid search filters: keywords, excluded words, solicitation type, bid status, posted within and due within N days.
  • Buyer contacts and deadlines: buyer name, title, work email and phone as the agency publishes them, due date, Q&A deadline and pre-bid meeting.
  • Bid alerts: with only new bids on a schedule you get just what is new since the last run, plus new-addendum alerts.
  • No login, no browser, no proxies: it reads the same public pages anyone can open.
  • An alternative to a paid bid-subscription service for these portals: the notices are public, so you can monitor them yourself and pay per bid delivered.

What makes it different

  • Scan a whole state in one run. Type FL or CA and every active OpenGov agency there is checked (93 in Florida, 127 in California in our tests), using OpenGov's own agency directory, so there is no list of portal slugs to maintain. The other OpenGov scraper on the Store takes portal slugs only, and a regional one covers 11 Dallas-Fort Worth portals.
  • Bid alert feed: only new bids, plus new-addendum alerts. With onlyNew on, each run returns only bids you have not received yet. If an agency posts an addendum to a bid you already have, it comes back once with changeType: "new_addendum", so you never miss a change to specs or deadlines.
  • The details bidders need, at list price. Buyer name, title, work email and phone (as published by the agency), pre-bid meeting, Q&A deadline, sealed-bid flag, category codes, addenda, attachment names, timeline and evaluation criteria. $2.00 per 1,000 bids, details included. Comparable bid scrapers on the Store charge $3 to $20 per 1,000.

Fields you get

FieldWhat it is
📄title, referenceNumberBid title and the agency's solicitation number
🏷️solicitationType, procurementClassificationAgency label (e.g. "Invitation for Bid", "Request for Proposal") and OpenGov's class
🚦status, comingSoonopen, pending, evaluation, awardPending or closed
🏛️agency, agencyCode, agencyCity, agencyState, departmentWho is buying
⏰postedAt, dueAt, daysUntilDue, timezoneRelease date and response deadline (ISO 8601, UTC) and the agency's time zone
📝summary, backgroundScope text, HTML stripped
🔗url, agencyPortalUrlLink to the bid and the agency portal on OpenGov
👤procurementContact, contactBuyer / project contact as the agency published it: name, title, work email, phone, address. null when the agency hides it
🤝preProposalMeeting, questionsDeadline, questionsEnabledPre-bid meeting (date, type such as "Non-Mandatory", location) and Q&A cut-off
🔒sealedBid, isEmergencyFlags from the solicitation
🗂️categoriesUNSPSC or NIGP category codes and titles chosen by the agency
📢addendaCount, addendaNumber and list of addenda and notices with release dates
📎attachmentsAttachment titles and file types (download them from the bid page)
📅timelineKey dates such as bid opening, contract period
📊evaluationCriteriaScoring criteria with max score and weight for RFPs, when published
🕒lastUpdatedAt, scrapedAtWhen the agency last updated the bid and when it was read
🆕changeTypenew or new_addendum in only-new mode, otherwise null
🧾typebid, agency (directory mode) or error

Fields from contact to lastUpdatedAt need Include bid details (on by default). In directory mode (List agencies only) each agency record has agencyCode, agency, agencyCity, agencyState, website, timezone, bidsInSelectedStatuses, note and agencyPortalUrl.

How to use Government Bids & RFP Scraper in 5 steps

  1. Create a free Apify account.
  2. Open Government Bids & RFP Scraper and click Try for free.
  3. Add your input: agency portal codes or URLs (the part after procurement.opengov.com/portal/) or US states to scan every OpenGov agency there, then narrow it with keywords, solicitation type, posted within or due within days. For an alert feed, turn on Only new bids.
  4. Click Start. To get new bids automatically, add a daily run on the Schedules tab.
  5. Download the results as JSON, CSV or Excel from the dataset, or fetch them through the Apify API.

Not sure which agencies are on OpenGov? Turn on List agencies only with a state: you get each agency's portal code and how many open bids it has right now (Texas: 44 agencies in our test).

Input

Copy-paste input from a real run (City of Pittsburgh, Oct 19 2026, 4 matching bids):

{
"agencies": ["pittsburghpa"],
"keywords": ["software", "equipment"],
"maxBidsPerAgency": 5,
"includeDetails": true
}

Single bids work too: https://procurement.opengov.com/portal/pittsburghpa/projects/285142 returns just that bid with full details.

Public example tasks you can open and run:

Output

A real record from the run above (buyer contact shortened, categories and evaluationCriteria cut to 2 items):

{
"type": "bid",
"id": 315505,
"title": "Firefighter Personal Escape Safety System & Training Services",
"referenceNumber": "2026-RFP-228",
"solicitationType": "Request for Proposal",
"status": "open",
"comingSoon": false,
"agency": "City of Pittsburgh",
"agencyCode": "pittsburghpa",
"agencyCity": "Pittsburgh",
"agencyState": "PA",
"department": "Bureau of Fire",
"postedAt": "2026-10-19T04:00:00.000Z",
"dueAt": "2026-12-01T19:00:00.000Z",
"daysUntilDue": 42,
"timezone": "America/New_York",
"addendaCount": 0,
"summary": "The City of Pittsburgh Office of Management and Budget, on behalf of the Bureau of Fire, is soliciting proposals from qualified firms for Firefighter Personal Escape Safety Systems & Training Services. The City is seeking responsible proposals to provide both equipment and training in the use of Firefighter Personal Escape Systems.",
"url": "https://procurement.opengov.com/portal/pittsburghpa/projects/315505",
"agencyPortalUrl": "https://procurement.opengov.com/portal/pittsburghpa",
"contact": null,
"procurementContact": {
"name": "J. G.",
"title": "Sourcing Specialist",
"email": "j…@pittsburghpa.gov",
"phone": "(412) 255-…",
"address": "414 Grant Street, Room 502, Pittsburgh, PA, 15219"
},
"preProposalMeeting": {
"date": "2026-11-03T15:00:00.000Z",
"type": "Non-Mandatory",
"location": "Virtual via Microsoft Teams - Please RSVP using the RSVP manager and a link will be sent to you prior to the meeting."
},
"questionsDeadline": "2026-11-17T22:00:00.000Z",
"questionsEnabled": true,
"sealedBid": true,
"isEmergency": false,
"procurementClassification": "Request for Proposal",
"categories": [
{
"code": "46000000",
"title": "Defense and Law Enforcement and Security and Safety Equipment and Supplies",
"categorySetId": 300
},
{
"code": "46190000",
"title": "Fire protection",
"categorySetId": 300
}
],
"background": null,
"timeline": [
{
"title": "Proposal Review and Supplier Scoring",
"date": "December 2026",
"location": null
},
{
"title": "Contract Award",
"date": "December 2026",
"location": null
}
],
"addenda": [],
"attachments": [],
"evaluationCriteria": [
{
"title": "Firm’s Qualifications, Experience and References",
"maxScore": 15,
"weight": 15
},
{
"title": "Qualifications of Project Team",
"maxScore": 15,
"weight": 15
}
],
"lastUpdatedAt": "2026-10-19T13:10:00.850Z",
"changeType": null,
"scrapedAt": "2026-10-20T01:41:20.711Z"
}

How can I use the data?

  • Win more public contracts: contractors, IT firms and consultants find bids in their trade and states before the deadline.
  • Daily bid alert feed: schedule only-new runs and send new bids to Slack, email or Google Sheets.
  • Sales prospecting: reach the buyer contact each agency published on the bid, within the rules that apply to you.
  • Market research: use statuses: ["all"] to see what an agency buys, how often and with which solicitation types.
  • Bid-matching and procurement tools: feed clean JSON into your own app, CRM or AI agent.

Example use cases

1. Find software and IT bids from every OpenGov agency in Florida

Example task: Software and IT bids in Florida

{
"states": ["FL"],
"keywords": ["software", "technology", "cybersecurity", "cloud", "IT services"],
"keywordsInTitleOnly": true
}

Tested Oct 18 2026: 93 Florida agencies and 323 open bids scanned in under 5 seconds, 3 matches:

AgencyBidTypeDue
City of ClermontCloud Based Location Intelligence Foot Traffic Data PlatformRequest for Proposal2026-11-12
Putnam County School DistrictK-12 Master Scheduling Software, Implementation, and Support ServicesRequest for Proposal2026-10-30
Jacksonville Transportation AuthorityPublic Engagement Web Based Software PlatformSolicitation (Attach a Document)2026-10-22

2. Daily alert: new construction bids in California

Example task: Daily alert for new California construction bids

{
"states": ["CA"],
"keywords": ["construction", "paving", "roof", "hvac", "concrete"],
"keywordsInTitleOnly": true,
"postedWithinDays": 14,
"onlyNew": true
}

Schedule it daily. Tested Oct 18 2026: 127 California agencies, 378 open bids scanned, 7 new matches on the first run (first 4 shown). The next run returns only bids posted since.

AgencyBidPostedDuechangeType
Alameda Municipal PowerRequest for Information (RFI) for On-Call Civil Service Construction IFB2026-10-162026-10-30new
City of NapaPaving for Water Facilities and Leak Repairs 2026-12026-10-132026-11-12new
County of Alameda, CAON CALL AS NEEDED ROOF MAINTENANCE, INSPECTION, DIAGNOSTIC, TROUBLESHOOTING AND2026-10-132026-11-17new
City of PasadenaConstruction Management for Holly Street Bridge Seismic Retrofit & Rehabilitatio2026-10-082026-10-29new

3. Bids due in the next 14 days at chosen agencies, with buyer contacts

Example task: Bids due in the next 14 days, with buyer contacts

{
"agencies": ["pittsburghpa", "https://procurement.opengov.com/portal/oceancounty"],
"dueWithinDays": 14
}

Tested Oct 18 2026: 29 bids due within 14 days (first 5 shown), each with the buyer's contact.

AgencyBidRef #DueBuyer title
City of PittsburghPS, Fire, Hazmat Pickup Truck2026-ECOOP-2182026-10-28Senior Sourcing Specialist
City of PittsburghPS, Fire, Command SUV2026-ECOOP-2192026-10-28Senior Sourcing Specialist
City of PittsburghCity Channel Pittsburgh End-of-Life Replacements2026-IFB-2002026-10-26Sourcing Specialist
City of PittsburghTraffic Calming2026-IFB-1862026-10-21Sourcing Specialist
City of PittsburghRecycling Engagement and Analytics Application2026-RFP-1682026-10-20Sustainable Procurement Specialist

Tips

  • Keywords match the start of words, so roof finds "roofing" and it does not match "permit". Turn on Match keywords in the title only for stricter results.
  • statuses: ["all"] includes past and awarded bids, useful for researching what an agency buys and how often.
  • The only-new memory is kept per input automatically. Use Only-new memory name to share it across tasks or start fresh.

Limitations

  • Covers agencies that publish on OpenGov Procurement only (not Bonfire, BidNet, PlanetBids, DemandStar or SAM.gov).
  • Attachment files themselves are not downloaded; you get their names and the bid link.
  • Only public bids are returned. Invitation-only and private projects are not visible.
  • Buyer contacts are what the agency published on the bid; some agencies hide them.

More Actors from the same developer

ActorWhat it does
Telegram Channel ScraperPublic Telegram channel posts with a keyword monitor and only-new mode
Substack ScraperSubstack newsletters to clean Markdown, plus podcast transcripts
Greenhouse & Workday Jobs ScraperJobs from 8 career-site platforms with visa sponsorship and clearance flags
App Store & Google Play Reviews ScraperReviews from both stores in one run, only new reviews on schedules
Website to Markdown CrawlerAny website to Markdown for RAG, with incremental sync and llms.txt
State Bids ScraperOpen bids from COMMBUYS, BidBuy, NJSTART, OregonBuys and NevadaEPro
PERM Green Card SponsorsCompanies that sponsor green cards, from official DOL PERM data

Error items

Bad inputs never fail the whole run. Each input that cannot be scraped gives one record with type: "error" and these fields: input (what you entered), error (a code below), errorMessage (a plain-English reason), scrapedAt, plus agencyCode for agency errors and suggestions for AGENCY_NOT_FOUND.

errorWhen
AGENCY_NOT_FOUNDNo OpenGov portal with that code. suggestions lists close matches, e.g. pitsburghpa → "Did you mean: pittsburghpa (City of Pittsburgh, PA)?"
INVALID_INPUTNot a portal code/URL, or a state that is not a 2-letter code
NO_AGENCIES_IN_STATE / NO_AGENCIES_MATCHNo active OpenGov agency in that state, or none whose name contains your words
BID_NOT_FOUNDA single-bid URL that is not found or not public
FETCH_FAILEDNetwork or OpenGov error after 3 attempts (bids list, agency directory or single bid). Usually temporary; run again

If a bid is listed but its details cannot be loaded, the bid record is still delivered with a detailError field instead of the detail fields. Error records are charged like a bid. Agencies with no matching bids are not charged and produce no record; counts are in the RUN_SUMMARY record of the run's key-value store.

Two inputs end the run right away with a clear status message and an empty dataset instead (the run still shows Succeeded and only the start fee applies): no agencies, states or agency names at all, and a statuses list with no valid status.

FAQ

How much does it cost? Pay per event, $2.00 per 1,000 bids. See the Pricing tab.

Pay per result: $0.002 per bid (or per agency record in directory mode, or per error record), plus $0.00005 per run. Details are included at no extra cost. Platform usage is not passed on to you.

  • Florida software scan above (93 agencies, 3 bids): about $0.006
  • Pittsburgh + Ocean County, 29 bids with details: about $0.06
  • A daily California construction alert that finds about 5 new bids a day: about $0.30 a month

Set Maximum cost per run in the run options to cap spend; the Actor stops cleanly at the limit.

Does it work with Make, Zapier, Google Sheets or Slack? Yes. Use Apify integrations for Make, Zapier, Google Sheets, Slack and Google Drive, or a webhook that fires when a run finishes.

Can I run it through the API? Yes. With the apify-client for Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('chimey_forearm/opengov-bids-scraper').call({ states: ['FL'], keywords: ['software'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Or Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("chimey_forearm/opengov-bids-scraper").call(run_input={"states": ["FL"], "keywords": ["software"]})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Can AI agents use it (MCP)? Yes. Add it to the Apify MCP server and call it from Claude or other MCP clients.

Do I need an OpenGov account? No. The Actor reads the same public information anyone sees on an agency's portal without logging in.

How fresh is the data? Live. Each run reads the agency portals at run time.

Can I submit bids with it? No. It finds and tracks opportunities; you respond on the agency's portal.

Is it legal? It reads public bid notices only. Buyer contacts are the work contacts as published by the agency on the bid. If you store or use personal data such as names and emails, GDPR and similar laws may apply to you. More below.

Found a bug or need a field? Open an issue on the Issues tab. Requests from users are prioritized.

The Actor only reads public solicitation notices that government agencies publish to attract vendors, without logging in, at a gentle request rate, and links every record back to the agency's official page. It does not download documents or access vendor accounts. Contact details are the work contacts agencies publish on their bids; handle them according to the laws that apply to you (for example CAN-SPAM for outreach). Check OpenGov's terms and your own legal requirements for how you reuse the data. This Actor is independent and not affiliated with OpenGov or any agency.

If it saved you time, a quick review on the Store helps a solo developer keep improving it. Bugs or ideas? Open an Issue.