Burlington APIburlington.ca ↗
Search City of Burlington public bid opportunities, retrieve awarded contracts, winning vendors, and contract values via 3 structured JSON endpoints.
What is the Burlington API?
The Burlington.ca API exposes 3 endpoints covering the City of Burlington's public procurement portal, letting you search active and awarded tenders, retrieve bid summaries with submission counts, and pull full award detail for any individual bid. The list_awarded_contracts endpoint returns awarded vendor names, contact information, and contract values in a single call, while get_bid_award adds unofficial submitted-bid results and duration data for a specific tender.
curl -X GET 'https://api.parse.bot/scraper/7220bdf5-362c-471f-9c7d-2ee7938596b5/list_awarded_contracts?limit=5' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns awarded contracts/tenders with tender number and name, the awarded vendor(s) and the contract award value. One page of the awarded-bid listing is read (sorted by closing date, newest first by default) and the award detail page of each bid on the page is opened, so cost grows with limit (at most 25 detail reads per call). Some awards publish no dollar value (e.g. prequalification results show 'Prequalified' and some RFPs leave the value blank): value is then null and value_display holds the site's text. total is the number of awarded bids matching the search, has_more tells whether a further page exists at start+limit, and failed lists bids whose detail page could not be read.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of awarded bids to return and expand, 1 to 25. |
| start | integer | Zero-based offset into the awarded-bid listing; pass start+limit to get the next page. |
| keywords | string | Free-text keyword filter applied by the site to bid titles/descriptions. Omitted = all awarded bids. |
| sort_dir | string | Ordering by bid closing date. |
{
"type": "object",
"fields": {
"limit": "limit echoed",
"start": "offset echoed",
"total": "total awarded bids matching the search on the site",
"failed": "array of {bid_id, title, reason} for bids whose award detail could not be read",
"has_more": "true when more awarded bids exist beyond start+limit",
"returned": "number of contracts returned",
"contracts": "array of awarded contracts; each has bid_id, bid_number, bid_name, title, bid_type, status, date_closing (ISO 8601 UTC), awarded_date_display (site text), awarded_vendors (array of {company_name, city, province_state, country, value (number or null), value_display}), total_award_value (sum of numeric vendor values, null when none is numeric), submissions_count"
},
"sample": {
"data": {
"limit": 5,
"start": 0,
"total": 747,
"failed": [],
"has_more": true,
"returned": 5,
"contracts": [
{
"title": "RFT-26-335 - Artificial Turf Infill Replacement at Sherwood Forest Park",
"bid_id": "cc34cb98-2867-4e50-b4c7-0e159458f089",
"status": "Awarded",
"bid_name": "Artificial Turf Infill Replacement at Sherwood Forest Park",
"bid_type": "RFT",
"bid_number": "RFT-26-335",
"date_closing": "2026-08-20T18:00:59Z",
"awarded_vendors": [
{
"city": "Granby",
"value": 245775,
"country": "Canada",
"company_name": "Les Surfaces Sécuritaires Carpell inc.",
"value_display": "$245,775.00",
"province_state": "Quebec"
}
],
"submissions_count": 4,
"total_award_value": 245775,
"awarded_date_display": "Tue Aug 25, 2026 (EDT)"
},
{
"title": "RFPQ-26-503 - Prequalification of General Contractors for the Tyandaga Golf Course Irrigation System Upgrades",
"bid_id": "b7a4ac95-8f85-480a-962a-fa0770d786f6",
"status": "Awarded",
"bid_name": "Prequalification of General Contractors for the Tyandaga Golf Course Irrigation System Upgrades",
"bid_type": "RFPQ",
"bid_number": "RFPQ-26-503",
"date_closing": "2026-08-07T18:00:59Z",
"awarded_vendors": [
{
"city": "Guelph",
"value": null,
"country": "Canada",
"company_name": "Ritchfield Inc.",
"value_display": "Prequalified",
"province_state": "Ontario"
}
],
"submissions_count": 4,
"total_award_value": null,
"awarded_date_display": "Mon Aug 24, 2026 (EDT)"
}
]
},
"status": "success"
}
}About the Burlington API
What the API Covers
The API surfaces data from Burlington's public bids-and-tenders portal across three endpoints. list_bids returns paginated bid summaries filtered by status (e.g. Awarded, Open) and optional keywords, exposing fields like bid_id, bid_number, title, date_closing, and counts for submissions and plan-takers. The status parameter controls which tab of the listing is queried; omitting keywords returns all bids for the selected status.
Award Detail and Vendor Data
list_awarded_contracts goes one level deeper: it fetches the award detail page for each bid in the result set, returning an array of contracts that each include bid_type (RFT, RFP, RFPQ), date_closing in ISO 8601 UTC, awarded_bidders with company name, address, province, and value_display, plus a failed array for any bids whose detail could not be read. The limit parameter (1–25) controls how many bids are expanded per call; use start plus limit to paginate through the full listing.
Single-Bid Lookup
get_bid_award accepts a bid_id GUID from either listing endpoint and returns the full record: bid_name, bid_type, bid_number, description, duration_months, total_award_value, an awarded_bidders array, and a submitted_bids array showing unofficial results with per-bidder values. Dates are returned as site text in Eastern time. total_award_value is the numeric sum of awarded values and is null when no numeric value is present in the source data.
Pagination and Filtering
list_bids accepts only the page sizes the source portal supports: 1, 15, 25, 50, or 100. Passing an unsupported value may produce unexpected results. Both listing endpoints accept sort_dir to control ordering by closing date. The start parameter is zero-based; pass start + limit to retrieve the next page. The total field in every response reflects the full matched count on the portal, allowing you to calculate total pages client-side.
The Burlington API is a managed, monitored endpoint for burlington.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when burlington.ca changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official burlington.ca API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor newly awarded City of Burlington contracts by polling
list_awarded_contractssorted by closing date - Build a vendor intelligence tool by aggregating
awarded_bidderscompany names and award values across multiple contracts - Track open RFP and RFT opportunities using
list_bidswithstatusset to an open/current bid tab - Compare submitted bids against the awarded value using
submitted_bidsandawarded_biddersfromget_bid_award - Audit contract durations by collecting
duration_monthsacross a set of awarded tenders - Filter tenders by trade or category using the
keywordsparameter onlist_awarded_contractsorlist_bids - Calculate total procurement spend over a date range by summing
total_award_valueacross paginated contract results
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the City of Burlington provide an official developer API for its tenders portal?+
What does `get_bid_award` return that `list_awarded_contracts` does not?+
get_bid_award returns submitted_bids — the unofficial list of all bidders and their submitted values, not just the winner — along with description, classification, and duration_months. list_awarded_contracts expands multiple bids in one call but omits the submitted-bid breakdown and free-text description.Are attachments, bid documents, or addenda accessible through the API?+
What happens when a bid's award detail page cannot be read by `list_awarded_contracts`?+
failed array with its bid_id, title, and a reason string. The contracts array contains only the bids that were successfully retrieved, and the returned field reflects that count rather than the requested limit.