Bonfire / Euna Procurement Opportunities Scraper avatar

Bonfire / Euna Procurement Opportunities Scraper

Pricing

from $5.00 / 1,000 opportunities

Go to Apify Store
Bonfire / Euna Procurement Opportunities Scraper

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

Alexei Pannicov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

  1. Pick agencies from the Agency slugs dropdown (subdomains like dallascityhall, harriscountytx), or type any other Bonfire slug manually.
  2. (Optional) enable Include notices to also fetch addenda/change feed per opportunity.
  3. (Optional) set Maximum opportunities to cap how many results (and your spend).
  4. Run the Actor. Results stream into the dataset; export as JSON, CSV, Excel, or pull via API.
  5. Schedule it (e.g. daily) to keep an up‑to‑date feed.

Input

FieldTypeRequiredDescription
agencySlugsstring[]yesBonfire agency subdomains, e.g. dallascityhall. Pick from suggestions or type your own.
includeNoticesbooleannoFetch public notices/addenda per opportunity (slower). Default false.
maxItemsintegernoMaximum 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 listGET /PublicPortal/getOpenPublicOpportunitiesSectionData per 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 DateClose in UTC, so closeDate is exposed as UTC ISO 8601 (verified against the portal's displayed local time); the original string is kept in closeDateRaw.
  • 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.