BC APIcivicinfo.bc.ca ↗
Access open bid opportunities and tenders from BC municipalities via the CivicInfo BC API. Filter by keyword, category, org, and closing date.
What is the BC API?
The CivicInfo BC Bids API exposes open procurement opportunities and tenders published by British Columbia municipalities through a single get_bids endpoint returning 7 fields per listing — including title, category, organization, location, closing date, and posting time. You can paginate through all active bids, filter by keyword search, and control sort order, making it straightforward to track new opportunities or monitor specific municipal postings.
curl -X GET 'https://api.parse.bot/scraper/84ade882-75da-456e-b559-4b408043fe45/get_bids?limit=10&sort_by=newest&page=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace civicinfo-bc-ca-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.civicinfo_bc_bids_api import CivicInfoBC, Bid, Sort
client = CivicInfoBC()
# List bids sorted by soonest closing date
for bid in client.bids.list(sort_by=Sort.SOONEST):
print(bid.title, bid.organization, bid.closing_date, bid.category)
Get open bid opportunities and tenders from BC municipalities. Returns paginated listings with title, category (opportunity type), organization, location, closing date, and posting time. Supports keyword search and sorting by date posted or expiry date. Each page returns up to `limit` results; use `page` to advance. When no search term is provided, returns all open bids.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | integer | Number of results per page. Accepted values: 10, 25, 50, 100. |
| search | string | Search keywords to filter bids. |
| sort_by | string | Sort order for results. |
{
"type": "object",
"fields": {
"bids": "array of bid objects with bid_id, title, category, organization, location, closing_date, and posted",
"page": "integer - current page number",
"total": "integer - total number of matching bids",
"sort_by": "string - current sort order",
"per_page": "integer - results per page"
},
"sample": {
"data": {
"bids": [
{
"title": "Fencing Materials and Products with Related Services",
"bid_id": "10921",
"posted": "5 hrs ago",
"category": "Request for Proposals",
"location": "Nisku, AB",
"closing_date": "July 28, 2026, 1:30 pm",
"organization": "Nisku"
}
],
"page": 1,
"total": 37,
"sort_by": "newest",
"per_page": 10
},
"status": "success"
}
}About the BC API
What the API Returns
The get_bids endpoint returns paginated listings of open bid opportunities from BC municipalities sourced from civicinfo.bc.ca/bids. Each bid object includes a bid_id, title, category (the opportunity type, such as construction or consulting), organization (the posting municipality or public body), location, closing_date, and posted timestamp. The response envelope also carries page, total, sort_by, and per_page so you can build reliable pagination logic.
Filtering and Sorting
The search parameter accepts keyword strings to narrow results to relevant bids — useful for targeting a specific trade, service category, or project type. Page size is controlled via the limit parameter with accepted values of 10, 25, 50, or 100 results per page. The sort_by parameter supports newest (most recently posted first) and oldest (earliest posted first), as well as soonest to surface bids with the nearest closing dates — helpful when prioritizing response deadlines.
Coverage and Scope
All data reflects publicly listed bid opportunities on CivicInfo BC, a directory maintained by the Union of BC Municipalities and used by hundreds of municipal and regional governments across British Columbia. The API returns only currently open bids; closed or awarded opportunities are not included in the current response set. The total field in each response tells you the full count of matching records so you can determine how many pages to fetch.
The BC API is a managed, monitored endpoint for civicinfo.bc.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when civicinfo.bc.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 civicinfo.bc.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?+
- Aggregate active BC municipal procurement opportunities into a vendor-facing tender alert platform
- Monitor specific organizations using the
searchparam to watch for bids from a target municipality - Sort by
soonestclosing date to build a deadline-priority dashboard for procurement teams - Feed bid
categoryandlocationfields into a geographic heatmap of public sector spending activity - Automate daily snapshots of
totalbid counts to track procurement volume trends across BC municipalities - Cross-reference
organizationfield with a CRM to notify sales teams when existing clients post new tenders
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does CivicInfo BC offer an official developer API?+
What does the `category` field in a bid object represent?+
category field reflects the opportunity type assigned to the bid on CivicInfo BC — for example, categories like construction, professional services, or goods supply. It's useful for filtering results downstream by trade or procurement type, though keyword-based filtering via the search parameter is also available at query time.Does the API return closed, awarded, or historical bid records?+
Can I retrieve detailed bid documents or attachments through this API?+
How should I paginate through all available bids?+
page and limit parameters together. The response includes a total field indicating the full count of matching bids and a per_page field confirming your requested page size. Divide total by per_page to determine the number of pages to iterate through. Setting limit to 100 minimizes the number of requests needed.