Discover/Bidsandtenders API
live

Bidsandtenders APIbidsandtenders.ca

Retrieve public tender details from bids&tenders.ca by bid number. Get title, agency, status, bid type, description, awarded date, and more.

Endpoint health
verified 3h ago
get_bid_by_number
1/1 passing latest checkself-healing
Endpoints
1
Updated
4h ago

What is the Bidsandtenders API?

The bids&tenders.ca API exposes 1 endpoint — get_bid_by_number — that returns 10 structured fields for any bid opportunity on the bids&tenders eProcurement network, including the buyer organization, current status, bid type, award date, and a direct URL to the public detail page. Provide an exact bid or reference number such as RFT-26-335 and the endpoint resolves the full record across all buyer organizations and all lifecycle statuses.

This call costs2 credits / call— charged only on success
Try it
The buyer-assigned bid/reference number exactly as shown on the site, e.g. RFT-26-335 or 26158-1.
api.parse.bot/scraper/a0cf918c-77c2-47fc-903d-bc1997017372/<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/a0cf918c-77c2-47fc-903d-bc1997017372/get_bid_by_number?bid_number=RFT-26-335' \
  -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-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.

"""Walkthrough: look up a public bid opportunity on bids&tenders by its reference number."""
from parse_apis.bidsandtenders_ca_api import BidsAndTenders, BidNotFound

client = BidsAndTenders()

# Fetch a bid by its exact buyer-assigned reference number.
try:
    bid = client.bids.get(bid_number="RFT-26-335")
except BidNotFound:
    print("No bid found with that number.")
    raise

# Typed field access on the returned Bid object.
print(bid.title)
print(bid.agency, "|", bid.status)
print("Closes UTC:", bid.closing_date_utc)
print("Published UTC:", bid.published_date_utc)
print("Document fee:", bid.has_document_fee)
print("Detail page:", bid.detail_url)

# The details dict contains every label→value row from the bid's detail table;
# keys vary by bid, so access them by name.
if "Categories" in bid.details:
    print("Categories:", bid.details["Categories"])

if bid.description is not None:
    print("Description:", bid.description[:120])

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

Looks up a single bid opportunity by its exact bid/reference number across all buyer organizations and all statuses (open, closed, awarded, cancelled, etc.) on the bids&tenders opportunities database, then opens the buyer's detail page for that bid. Returns one object with the bid number, title, buyer organization (agency), status, closing and publish dates (both the site's formatted source-timezone text and UTC ISO timestamps), description, bid type, classification, plus a `details` map of every label/value row shown in the bid's details table (labels vary by bid; e.g. Question Deadline or Bid Awarded Date appear only when the buyer set them, so published_date, question_deadline, awarded_date and description can be null). Two round trips per call. Matching is exact on the bid number (case-insensitive); if no opportunity carries that number the call returns a not-found error rather than an empty object.

Input
ParamTypeDescription
bid_numberrequiredstringThe buyer-assigned bid/reference number exactly as shown on the site, e.g. RFT-26-335 or 26158-1.
Response
{
  "type": "object",
  "fields": {
    "title": "bid name / title",
    "agency": "buyer organization that owns the bid",
    "status": "bid status as displayed (e.g. Open, Closed, Awarded, Cancelled)",
    "details": "object of every label -> value row from the bid details table",
    "bid_type": "bid type label (e.g. RFT, RFP)",
    "bid_number": "bid/reference number as shown on the detail page",
    "detail_url": "public URL of the bid's detail page on the buyer's portal",
    "visibility": "Public or Invitational",
    "description": "plain-text description (paragraphs joined by newlines), null when absent",
    "awarded_date": "award date text, null unless the bid is awarded",
    "closing_date": "closing date/time text in the buyer's source timezone, null if not shown on the detail page",
    "classification": "bid classification (e.g. Goods, Services)",
    "published_date": "publish date/time text in the buyer's source timezone, null when the detail page omits it",
    "source_timezone": "IANA timezone of the buyer used for the date text",
    "closing_date_utc": "closing date/time as UTC ISO-8601 timestamp from the search listing",
    "has_document_fee": "boolean, whether a document fee applies",
    "question_deadline": "question deadline text, null when not set",
    "published_date_utc": "publish date/time as UTC ISO-8601 timestamp from the search listing"
  },
  "sample": {
    "data": {
      "title": "Artificial Turf Infill Replacement at Sherwood Forest Park",
      "agency": "City of Burlington",
      "status": "Awarded",
      "details": {
        "Bid Name": "Artificial Turf Infill Replacement at Sherwood Forest Park",
        "Bid Type": "RFT",
        "Bid Number": "RFT-26-335",
        "Bid Status": "Awarded",
        "Categories": "Show Categories [+] Landscaping & Forestry Artificial Turf Turf Maintenance",
        "Bid Pricing": "$70.80 - Download Only",
        "Description": "The City of Burlington is seeking bids from qualified contractors to remove, dispose of, and replace the existing performance infill within the full-size artificial turf field at Sherwood Forest Park (5270 Fairview Street, Burlington, Ontario).\n*ONLINE BID SUBMISSIONS ONLY*",
        "Public Opening": "No",
        "Published Date": "Wed Aug 5, 2026 3:00:59 PM (EDT)",
        "Submission Type": "Online Submissions Only",
        "Bid Awarded Date": "Tue Aug 25, 2026 (EDT)",
        "Bid Closing Date": "Thu Aug 20, 2026 2:00:59 PM (EDT)",
        "Trade Agreements": "Show Trade Agreements [+] Canadian Free Trade Agreement (CFTA)",
        "Question Deadline": "Thu Aug 13, 2026 2:00:00 PM (EDT)",
        "Bid Classification": "Services Related To Goods"
      },
      "bid_type": "RFT",
      "bid_number": "RFT-26-335",
      "detail_url": "https://burlington.bidsandtenders.ca/Module/Tenders/en/Tender/Detail/cc34cb98-2867-4e50-b4c7-0e159458f089",
      "visibility": "Public",
      "description": "The City of Burlington is seeking bids from qualified contractors to remove, dispose of, and replace the existing performance infill within the full-size artificial turf field at Sherwood Forest Park (5270 Fairview Street, Burlington, Ontario).\n*ONLINE BID SUBMISSIONS ONLY*",
      "awarded_date": "Tue Aug 25, 2026 (EDT)",
      "closing_date": "Thu Aug 20, 2026 2:00:59 PM (EDT)",
      "classification": "Services Related To Goods",
      "published_date": "Wed Aug 5, 2026 3:00:59 PM (EDT)",
      "source_timezone": "America/New_York",
      "closing_date_utc": "2026-08-20T18:00:00.0000000Z",
      "has_document_fee": true,
      "question_deadline": "Thu Aug 13, 2026 2:00:00 PM (EDT)",
      "published_date_utc": "2026-08-05T19:00:00.0000000Z"
    },
    "status": "success"
  }
}

About the Bidsandtenders API

What the API Returns

The get_bid_by_number endpoint accepts a single required parameter — bid_number — which must be the exact buyer-assigned reference number as it appears on the bids&tenders portal (e.g. RFT-26-335 or 26158-1). It returns a single object containing the bid title, the agency that issued it, and the current status (Open, Closed, Awarded, Cancelled, or any other value shown on the site). The bid_type field carries the procurement method label such as RFT or RFP, and visibility indicates whether the opportunity is Public or Invitational.

Detail Fields and Description

The response includes a details object that maps every label-value row from the bid's detail table — this is where structured metadata such as closing date, category codes, contact information, and any other fields the buyer organization populates will appear. The description field returns the full plain-text tender description with paragraphs joined by newlines; it is null when the bid carries no description. For awarded bids, awarded_date returns the award date text; it is null for all other statuses. The detail_url field provides the canonical public URL for the bid on the buyer's portal, suitable for linking or archiving.

Coverage and Scope

The API queries across all buyer organizations on the bids&tenders network and all bid statuses, so historical closed or awarded records are retrievable alongside active opportunities. Lookup requires the exact reference number; there is no keyword search or listing endpoint. The network covers Canadian public-sector buyers — municipalities, utilities, school boards, and similar entities — that use the bids&tenders eProcurement platform.

Reliability & maintenanceVerified

The Bidsandtenders API is a managed, monitored endpoint for bidsandtenders.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bidsandtenders.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 bidsandtenders.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.

Last verified
3h ago
Latest check
1/1 endpoint 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 award outcomes for specific tender numbers by checking status and awarded_date after closing.
  • Build a vendor notification system that enriches internal bid-tracking records with live status and detail_url fields.
  • Audit procurement activity for a specific buyer by resolving known bid numbers and comparing agency and details fields.
  • Populate a competitive intelligence database with bid title, bid_type, and description for market analysis.
  • Verify bid visibility (Public vs. Invitational) when assessing whether an opportunity was open to all vendors.
  • Archive closed or awarded tenders by storing the full details object and awarded_date for compliance records.
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 bids&tenders.ca have an official developer API?+
bids&tenders does not publish a public developer API or documentation for third-party data access. This Parse API provides programmatic access to bid detail data from the platform.
What does `get_bid_by_number` return for a bid that has been awarded?+
For awarded bids, the response includes all standard fields plus a non-null awarded_date containing the award date text as shown on the detail page. The status field will reflect 'Awarded'. For bids in any other status, awarded_date is null.
What is in the `details` object?+
The details object is a key-value map of every row in the bid's structured detail table on the buyer's portal. The exact keys depend on what the issuing buyer organization has filled in — common entries include closing dates, commodity codes, contact names, and delivery location. There is no fixed schema since different buyers populate different fields.
Can I search for bids by keyword, category, or buyer organization?+
Not currently. The API covers single-bid lookup by exact reference number. You can fork it on Parse and revise it to add a search or listing endpoint that filters by keyword, status, or buyer organization.
Does the API return bid documents or attachments?+
No attachment files or document download links are returned. The response includes detail_url, which points to the public bid detail page where documents may be accessible directly. You can fork the API on Parse and revise it to extract document links if the buyer's portal exposes them on that page.
Page content last updated . Spec covers 1 endpoint from bidsandtenders.ca.
Related APIs in Government PublicSee all →
opportunities.bidsandtenders.com API
Search and filter public bid opportunities by keywords, status, organization, publish date, and bid type, then retrieve comprehensive details including descriptions, key dates, meetings, and related documents for any listing. Access a complete view of available tender opportunities with sorting and pagination to easily find the bids most relevant to your business.
bidsandtenders.com API
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.
civicinfo.bc.ca API
Search open bid opportunities and tenders from BC municipalities, with details including title, closing date, organization, category, and location.
biddingo.com API
Search and filter government procurement bids and RFPs across different regions and categories to find relevant opportunities. Access detailed project descriptions and bid information to help you discover and evaluate contracting opportunities that match your business needs.
burlington.ca API
Access data from burlington.ca.
bdtender.com API
Search and browse tender listings from Bangladesh's largest tender portal, discovering opportunities by category, organization, and location while accessing real-time tender data and site statistics. Get detailed information on individual tenders, view live postings, and see what was published today to stay updated on the latest bidding opportunities.
buy.nsw.gov.au API
Search and retrieve NSW Government tender opportunities and contract notices from buy.nsw, including detailed information about available opportunities, supplier hubs, and procurement categories. Filter opportunities by category and discover top procurement deals in real-time to stay informed about potential business contracts with the NSW Government.
tenders.gov.uk API
Search and access UK government public procurement notices, tenders, and contract opportunities in real-time, with the ability to retrieve detailed notice information and browse standardized classification codes. Get comprehensive procurement data in structured formats to analyze tender patterns and find relevant contracting opportunities.