Discover/Bidsandtenders API
live

Bidsandtenders APIbidsandtenders.com

Search and discover public bid opportunities across Canada and the USA to find relevant procurement projects for your business. Access real-time tender data from the bids&tenders eProcurement platform to identify and pursue new contract opportunities.

This API takes change requests — .
Endpoint health
monitored
search_bids
Checks pendingself-healing
Endpoints
1
Updated
3h ago
This call costs1 credit / call— charged only on success
Try it
Page number (1-indexed). Each page returns up to 50 bids.
Filter by bid status.
Free-text search against bid name and organization name.
Filter by bid type (e.g. Public, Prequalification, Invitational).
Filter bids published on or before this date, format MM/DD/YYYY. Omit to not filter by end date.
Comma-separated list of organization IDs to filter results. Organization IDs can be discovered from the platform's organization dropdown (e.g. 5231 for Metro Vancouver, 12416 for City of Abbotsford).
Filter bids published on or after this date, format MM/DD/YYYY. Omit to not filter by start date.
api.parse.bot/scraper/94f5a0e0-28d3-4ff5-a4e7-dfd2e4953d34/<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/94f5a0e0-28d3-4ff5-a4e7-dfd2e4953d34/search_bids?page=1&status=Open&keyword=construction&organization=5231' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 bidsandtenders-com-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.

"""Walkthrough: bidsandtenders SDK — bounded, re-runnable; every call capped."""
from parse_apis.bidsandtenders_com_api import BidsAndTenders, BidStatus, ParseError

client = BidsAndTenders()

# Search open bids in BC by organization IDs (Metro Vancouver + City of Surrey)
for bid in client.bids.search(status=BidStatus.OPEN, organization="5231,12412", limit=3):
    print(bid.bid_name, bid.organization, bid.closing_date)

# Keyword search across all open bids
bid = client.bids.search(keyword="construction", status=BidStatus.OPEN, limit=1).first()
if bid:
    print(bid.bid_name, bid.bid_type, bid.detail_url)

# Handle errors on a search
try:
    for b in client.bids.search(keyword="plumbing", limit=2):
        print(b.bid_name, b.status)
except ParseError as e:
    print(f"error: {e}")

print("exercised: bids.search")
All endpoints · 1 totalmissing one? ·

Search open and historical bid opportunities by keyword, status, organization, bid type, and date range. Results are paginated with up to 50 bids per page, ordered by closing date descending. To find bids in a specific province (e.g. BC), pass a comma-separated list of organization IDs for that region.

Input
ParamTypeDescription
pageintegerPage number (1-indexed). Each page returns up to 50 bids.
statusstringFilter by bid status.
keywordstringFree-text search against bid name and organization name.
bid_typestringFilter by bid type (e.g. Public, Prequalification, Invitational).
publish_tostringFilter bids published on or before this date, format MM/DD/YYYY. Omit to not filter by end date.
organizationstringComma-separated list of organization IDs to filter results. Organization IDs can be discovered from the platform's organization dropdown (e.g. 5231 for Metro Vancouver, 12416 for City of Abbotsford).
publish_fromstringFilter bids published on or after this date, format MM/DD/YYYY. Omit to not filter by start date.
Response
{
  "type": "object",
  "fields": {
    "bids": "array of bid opportunity objects with bid_name, status, published_date, closing_date, organization, document_fees, bid_type, detail_url",
    "page": "current page number",
    "total": "total number of matching bids across all pages",
    "total_pages": "total number of pages available"
  },
  "sample": {
    "data": {
      "bids": [
        {
          "status": "Open",
          "bid_name": "25-767 - Hydrothermal Liquefaction Products Management – Research and Development",
          "bid_type": "Public",
          "detail_url": "https://metrovancouver.bidsandtenders.ca/Module/Tenders/en/Tender/Detail/0db78897-6f32-4316-88fb-d16685a0de71",
          "closing_date": "2028-12-31T22:00:00.0000000Z",
          "organization": "Metro Vancouver",
          "document_fees": "No",
          "published_date": "2025-12-23T00:30:00.0000000Z"
        }
      ],
      "page": 1,
      "total": 115,
      "total_pages": 3
    },
    "status": "success"
  }
}

About the Bidsandtenders API

The Bidsandtenders API on Parse exposes 1 endpoint for the publicly available data on bidsandtenders.com. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.