Discover/Biddingo API
live

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.

Endpoint health
verified 7h ago
get_bid_detail
search_bids
get_regions
get_categories
4/4 passing latest checkself-healing
Endpoints
4
Updated
14d ago

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.

This call costs1 credit / call— charged only on success
Try it
Sort order as field:direction. Accepted values: 'postedDate:desc', 'postedDate:asc', 'closingDate:desc', 'closingDate:asc'.
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.
Search keyword or solicitation number to match against bid titles and descriptions.
Bid status ID. '1' for Open for Bidding.
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 to retrieve (1-based).
Comma-separated list of category IDs to filter by (IDs from get_categories endpoint).
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.
→ api.parse.bot/scraper/809ca7d5-a675-42ba-b064-66b1287e9bd5/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
All endpoints · 4 totalmissing one? ·

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.

Input
ParamTypeDescription
sortstringSort order as field:direction. Accepted values: 'postedDate:desc', 'postedDate:asc', 'closingDate:desc', 'closingDate:asc'.
limitintegerNumber 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.
keywordstringSearch keyword or solicitation number to match against bid titles and descriptions.
statusesstringBid status ID. '1' for Open for Bidding.
region_idsstringComma-separated list of region IDs to filter by (IDs from get_regions endpoint, e.g. '1' for Eastern Canada, '3' for Western Canada).
page_numberintegerPage number to retrieve (1-based).
category_idsstringComma-separated list of category IDs to filter by (IDs from get_categories endpoint).
include_detailsbooleanWhen true, each result carries a details object with the full bid record (one extra request per result). When false, only summary rows are returned.
Response
{
  "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).

Reliability & maintenanceVerified

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.

Last verified
7h ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor newly posted government tenders in specific Canadian regions using region_ids and postedDate:desc sort.
  • Build a bid-matching tool that queries search_bids by keyword and maps results to internal product or service categories.
  • Track closing deadlines by sorting on closingDate:asc and alerting when tenderClosingDate falls within a threshold.
  • Enrich a CRM with buyer organization data by extracting buyerName and buyerOrgId from search results.
  • Index full tender descriptions from detailPreview to power full-text search across active solicitations.
  • Filter procurement opportunities by UNSPSC or similar category codes retrieved from get_categories subcategory objects.
  • Generate competitive intelligence reports by aggregating contractType and categoryList fields across matching tenders.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does Biddingo have an official developer API?+
Biddingo does not publish a documented public developer API. The data available through biddingo.com is not offered as a self-serve developer product.
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?+
The 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?+
Region coverage is determined by the 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?+
The 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.
Page content last updated . Spec covers 4 endpoints from biddingo.com.
Related APIs in Government PublicSee all →