Bonfire / Euna Procurement Opportunities Scraper
Pricing
from $5.00 / 1,000 opportunities
Bonfire / Euna Procurement Opportunities Scraper
Open RFPs/tenders across hundreds of US/Canada local government agencies on Bonfire (Euna).
Pricing
from $5.00 / 1,000 opportunities
Rating
0.0
(0)
Developer
Alexei Pannicov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape open government procurement opportunities (RFPs, tenders, bids) published by hundreds of US and Canada local government agencies on the Bonfire / Euna Procurement platform. Get a clean, normalized feed of solicitations — with type, budget, deadline and addenda — without logging in and without writing a parser for every portal.
Government agencies publish bids on thousands of fragmented portals, so monitoring them by hand is impossible. Incumbent aggregators (BidNet, DemandStar, GovWin, BidSync) charge $100–500/month. This Actor delivers the same public Bonfire data cheaply — you pay only for the opportunities you collect.
What this Actor does
- Collects open opportunities from any Bonfire agency portal (
{slug}.bonfirehub.com). - Normalizes each opportunity: parses solicitation type (RFP/ITB/RFQ/CSP/…), estimated budget, and converts the closing date to UTC ISO 8601.
- Optionally enriches each opportunity with public notices / addenda (extension notices, revised scopes, Q&A) — never miss an addendum that could disqualify a bid.
- Covers hundreds of agencies with one Actor: every Bonfire portal shares the same public API, parameterized only by the agency subdomain.
Who is it for
Contractors and suppliers selling to government, bid consultants, lead‑gen and market‑intelligence services that build products on procurement data.
🚀 How to use
- Pick agencies from the Agency slugs dropdown (subdomains like
dallascityhall,harriscountytx), or type any other Bonfire slug manually. - (Optional) enable Include notices to also fetch addenda/change feed per opportunity.
- (Optional) set Maximum opportunities to cap how many results (and your spend).
- Run the Actor. Results stream into the dataset; export as JSON, CSV, Excel, or pull via API.
- Schedule it (e.g. daily) to keep an up‑to‑date feed.
Input
| Field | Type | Required | Description |
|---|---|---|---|
agencySlugs | string[] | yes | Bonfire agency subdomains, e.g. dallascityhall. Pick from suggestions or type your own. |
includeNotices | boolean | no | Fetch public notices/addenda per opportunity (slower). Default false. |
maxItems | integer | no | Maximum number of opportunities to return in total. Leave empty for no limit. |
{"agencySlugs": ["dallascityhall", "harriscountytx"],"includeNotices": false}
Output
Each opportunity is one dataset record:
{"agency": "dallascityhall","projectId": "228905","referenceId": "BHZ26-00029887","title": "RFP - Event Production Services","solicitationType": "RFP","estimatedBudget": 948500,"estimatedBudgetCurrency": "USD","closeDate": "2026-05-29T18:00:00.000Z","closeDateRaw": "2026-05-29 18:00:00","departmentId": "1013","url": "https://dallascityhall.bonfirehub.com/opportunities/228905","scrapedAt": "2026-05-29T10:00:00.000Z","notices": [{"threadId": "t1","subject": "Addendum No. 1 has been uploaded","content": "See revised scope of work.","dateCreated": "2026-05-20T12:00:00.000Z"}]}
notices is present only when Include notices is enabled.
How it works
The Actor calls Bonfire's public endpoints (no login required):
- Open opportunities list —
GET /PublicPortal/getOpenPublicOpportunitiesSectionDataper agency. - Public notices (optional) —
GET /opportunitiessingle/getpublicnotices/{projectId}, joined by message thread.
A failing agency never aborts the run (each agency is isolated), and a failed notices fetch never drops the opportunity itself.
Pricing
Pay‑per‑event — you pay per opportunity returned, far below the $100–500/month incumbents:
- Basic — charged per opportunity (open‑opportunities list).
- Premium (Include notices) — charged at a higher per‑opportunity rate; adds the addenda/change feed.
Failed agencies are never charged — only delivered opportunities are. Cap your spend with the run budget and the Maximum opportunities input.
Limitations & notes
- Closing‑date timezone: Bonfire returns
DateClosein UTC, socloseDateis exposed as UTC ISO 8601 (verified against the portal's displayed local time); the original string is kept incloseDateRaw. - Scale / anti‑bot: portals sit behind Cloudflare. At scale, run with Apify Proxy (datacenter, escalating to residential) to avoid rate limiting.
- Agency discovery: the slug list is best‑effort (sourced from Common Crawl). New agencies can be added to the input as you find them.
Legality
This Actor collects only publicly available data that agencies are legally required to publish for transparency. It does not access anything behind a login and respects rate limits.
❓ FAQ
Do I need a Bonfire / Euna login? No. The Actor uses only public endpoints; login is required only to download documents or submit a bid, which it does not do.
Which agencies are supported? Any agency portal on Bonfire ({slug}.bonfirehub.com). Pick from the suggested list or enter any other slug.
What happens if I enter an agency slug that doesn't exist? It is skipped and reported as failed — the run continues with the other agencies, and you are not charged for it.
How do I avoid missing an addendum? Enable Include notices to pull each opportunity's public notices/addenda (extensions, revised scopes, Q&A).
How fresh is the data? It reflects each portal at run time. Schedule the Actor (e.g. daily) for a continuously updated feed.
Why is closeDate in UTC? Deadlines are normalized to UTC ISO 8601 for reliable comparison; the original agency string is kept in closeDateRaw.
🛟 Support & feedback
Found a missing agency, a bug, or have a feature request? Open an issue on the Actor's Issues tab and we'll take a look.