Biddingo APIbiddingo.com ↗
Search and retrieve government procurement bids and RFPs from Biddingo. Filter by region, category, and status. Access full tender details via 4 endpoints.
What is the Biddingo API?
The Biddingo API exposes 4 endpoints for searching and retrieving government procurement solicitations across Canada and beyond. Use search_bids to query active tenders by keyword, region, category, or closing date, and get_bid_detail to pull the full tender record — including HTML description, contract type, category codes, and closing date — for any result returned by the search.
curl -X GET 'https://api.parse.bot/scraper/809ca7d5-a675-42ba-b064-66b1287e9bd5/search_bids?sort=postedDate%3Adesc&limit=10&statuses=1&page_number=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Search bid/RFP solicitations with keyword, status, region, category and sort filters. Returns one page of bid summary objects (bidInfoList) plus bidCount, the total number of matching bids on the site. Pagination is caller-controlled through page_number (1-based, default 1) and limit (results per page, 1-50, default 10); the response has no cursor. By default include_details is true and the scraper makes one extra request per result to fetch the full bid record (the same object get_bid_detail returns: categoryList, contractType, tenderClosingDate, detailPreview HTML, buyerName, etc.), attached to each result as a details object; a result whose detail could not be fetched carries details=null with a details_error message, and detailsFetched/detailsFailed report the coverage. Set include_details=false for a single cheap request returning summaries only (details, details_error, detailsFetched and detailsFailed are then absent). Note: summary rows mask some fields (tenderNumber and buyerName appear as 'OXOXOXOX', tenderClosingDate is null) that the details object carries in full.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order as field:direction. Accepted values: 'postedDate:desc', 'postedDate:asc', 'closingDate:desc', 'closingDate:asc'. |
| limit | integer | Number of results per page, an integer from 1 to 50. Values outside this range are rejected. With include_details true this is also the number of extra detail requests made. |
| keyword | string | Search keyword or solicitation number to match against bid titles and descriptions. |
| statuses | string | Bid status ID. '1' for Open for Bidding. |
| region_ids | string | Comma-separated list of region IDs to filter by (IDs from get_regions endpoint, e.g. '1' for Eastern Canada, '3' for Western Canada). |
| page_number | integer | Page number to retrieve (1-based). |
| category_ids | string | Comma-separated list of category IDs to filter by (IDs from get_categories endpoint). |
| include_details | boolean | When true, each result carries a details object with the full bid record (one extra request per result). When false, only summary rows are returned. |
{
"type": "object",
"fields": {
"bidCount": "integer total number of matching bids on the site (not the page size)",
"bidInfoList": "array of bid summary objects with fields like tenderName, tenderNumber, buyerName, bidStatus, publishedDate, buyerOrgId, biddingoTenderId, buyerSysId, tenderClosingDate, regionName, daysleft",
"detailsFailed": "integer count of results whose details could not be fetched. Present only when include_details is true",
"detailsFetched": "integer count of results whose details were fetched. Present only when include_details is true",
"bidInfoList[].details": "object, the full bid record identical to get_bid_detail's response (categoryList, contractType, tenderClosingDate, detailPreview HTML, buyerName, publishedBy, ...); null when the detail fetch failed. Present only when include_details is true",
"bidInfoList[].details_error": "string reason when details is null, otherwise null. Present only when include_details is true"
},
"sample": {
"data": {
"bidCount": 3420,
"bidInfoList": [
{
"city": "Chester",
"bidType": "C",
"country": "Canada",
"details": {
"bidType": "Construction",
"regionId": 1,
"bidStatus": "Open for Bidding",
"buyerName": "Village of Chester",
"buyerOrgId": 41162607,
"buyerSysId": 1,
"tenderName": "Zoé Vallé Memorial Library: Exterior Accessibility Renovations",
"valueRange": "Not Applicable",
"publishedBy": "Village of Chester",
"categoryList": [
{
"depth": 1,
"haschild": true,
"categoryId": 1000025,
"categoryPid": 1000001,
"categoryCode": "60000",
"categoryName": "Construction"
}
],
"contractType": null,
"tenderNumber": "VOC-2026-03",
"detailPreview": "<html> ... </html>",
"publishedDate": "09/24/2026",
"biddingoTenderId": 1000012,
"tenderClosingDate": "10/15/2026 03:00:00 PM",
"tenderClosingDateTimeZone": "ET",
"tenderClosingDateWithFormat": "October 15th , 2026"
},
"daysleft": 20,
"province": "Nova Scotia",
"regionId": 1,
"bidStatus": "Open for Bidding",
"buyerName": "OXOXOXOX",
"buyerOrgId": 41162607,
"buyerSysId": 1,
"regionName": "Eastern Canada",
"tenderName": "Zoé Vallé Memorial Library: Exterior Accessibility Renovations",
"tenderNumber": "OXOXOXOX",
"details_error": null,
"publishedDate": "09/24/2026",
"biddingoTenderId": 1000012,
"tenderClosingDate": null
}
],
"detailsFailed": 0,
"detailsFetched": 1,
"regionCountMap": {}
},
"status": "success"
}
}About the Biddingo API
What the API Covers
Biddingo aggregates government procurement opportunities — bids, RFPs, and tenders — from public-sector buyers. The API surfaces this data across four endpoints: search_bids, get_bid_detail, get_regions, and get_categories. Search results include summary fields such as tenderName, tenderNumber, buyerName, bidStatus, publishedDate, buyerOrgId, and biddingoTenderId. These last two IDs are required inputs for get_bid_detail.
Searching and Filtering Bids
search_bids accepts a keyword parameter matched against titles and descriptions, a statuses field (use '1' for open solicitations), region_ids for geographic filtering, and category_ids for procurement category filtering. Results are paginated via page_number (1-based) with a configurable limit, and can be sorted by postedDate or closingDate in either direction. The response includes a bidCount total alongside the bidInfoList array.
Bid Details and Reference Lists
get_bid_detail returns the full tender record: tenderName, tenderNumber, buyerName, bidStatus, contractType, tenderClosingDate, a categoryList array with categoryId, categoryName, and categoryCode, and a detailPreview field containing the HTML bid description. To build valid filter parameters, use get_regions (returns masterRegionInfoList with regionId, regionName, and country) and get_categories (returns parentCategoryList and a masterChildCategoryListMap keyed by parent category code with full subcategory objects).
The Biddingo API is a managed, monitored endpoint for biddingo.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when biddingo.com 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 biddingo.com 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 posted government tenders in specific Canadian regions using
region_idsandpostedDate:descsort. - Build a bid-matching tool that queries
search_bidsby keyword and maps results to internal product or service categories. - Track closing deadlines by sorting on
closingDate:ascand alerting whentenderClosingDatefalls within a threshold. - Enrich a CRM with buyer organization data by extracting
buyerNameandbuyerOrgIdfrom search results. - Index full tender descriptions from
detailPreviewto power full-text search across active solicitations. - Filter procurement opportunities by UNSPSC or similar category codes retrieved from
get_categoriessubcategory objects. - Generate competitive intelligence reports by aggregating
contractTypeandcategoryListfields across matching tenders.
| 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 Biddingo have an official developer API?+
What does `get_bid_detail` return beyond the search summary?+
get_bid_detail adds fields not present in search_bids results: a detailPreview HTML string with the full bid description, a categoryList array with categoryId, categoryName, and categoryCode entries, contractType, and the precise tenderClosingDate. You need buyerOrgId and biddingoTenderId from a prior search_bids call to invoke it.Can I retrieve historical or awarded bids, not just open ones?+
statuses parameter in search_bids accepts a bid status ID, but the documented value is '1' for Open for Bidding. Closed or awarded bid history is not currently surfaced by the API. You can fork this API on Parse and revise it to target other status IDs if Biddingo exposes them.Does the API cover bids from US states or other non-Canadian regions?+
masterRegionInfoList returned from get_regions, which includes a country field per region. The primary focus of Biddingo is Canadian procurement. You can fork this API on Parse and revise it to filter or extend coverage if additional regions appear in the regions list.Are vendor registration or document download links included in bid details?+
get_bid_detail response does not include vendor registration URLs or attached procurement documents — it covers structured fields and the HTML detailPreview description. You can fork this API on Parse and revise it to add an endpoint that retrieves document attachment metadata if that data is accessible on the bid page.