curl -H "X-API-Key: your_api_key_here" \
"https://api.northaxiumdata.ca/api/v1/tenders?department=National%20Defence&limit=10"
import requests
headers = {"X-API-Key": "your_api_key_here"}
params = {"department": "National Defence", "limit": 10}
response = requests.get(
"https://api.northaxiumdata.ca/api/v1/tenders",
headers=headers,
params=params
)
for tender in response.json()["data"]:
print(f"{tender['date']} — {tender['department']}: {tender['description']}")
const response = await fetch(
"https://api.northaxiumdata.ca/api/v1/tenders?department=National%20Defence&limit=10",
{ headers: { "X-API-Key": "your_api_key_here" } }
);
const data = await response.json();
{
"data": [
{
"record_id": "tender_abc123",
"event_type": "tender",
"vendor": null,
"department": "National Defence | Défense nationale",
"value": null,
"date": "2023-08-01",
"description": "Supply and delivery of communications equipment",
"procurement_method": "Competitive",
"source_dataset": "CanadaBuys Tenders",
"solicitation_number": "W8476-23ABC",
"source_url": "https://buyandsell.gc.ca/..."
}
],
"meta": {
"total": 97000,
"limit": 10,
"offset": 0
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing API key. Pass your key in the X-API-Key header."
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Monthly request limit exceeded. Upgrade your plan for higher limits."
}
}
Contracts
Tender Notices
Search federal tender notices from CanadaBuys.
GET
/
api
/
v1
/
tenders
curl -H "X-API-Key: your_api_key_here" \
"https://api.northaxiumdata.ca/api/v1/tenders?department=National%20Defence&limit=10"
import requests
headers = {"X-API-Key": "your_api_key_here"}
params = {"department": "National Defence", "limit": 10}
response = requests.get(
"https://api.northaxiumdata.ca/api/v1/tenders",
headers=headers,
params=params
)
for tender in response.json()["data"]:
print(f"{tender['date']} — {tender['department']}: {tender['description']}")
const response = await fetch(
"https://api.northaxiumdata.ca/api/v1/tenders?department=National%20Defence&limit=10",
{ headers: { "X-API-Key": "your_api_key_here" } }
);
const data = await response.json();
{
"data": [
{
"record_id": "tender_abc123",
"event_type": "tender",
"vendor": null,
"department": "National Defence | Défense nationale",
"value": null,
"date": "2023-08-01",
"description": "Supply and delivery of communications equipment",
"procurement_method": "Competitive",
"source_dataset": "CanadaBuys Tenders",
"solicitation_number": "W8476-23ABC",
"source_url": "https://buyandsell.gc.ca/..."
}
],
"meta": {
"total": 97000,
"limit": 10,
"offset": 0
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing API key. Pass your key in the X-API-Key header."
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Monthly request limit exceeded. Upgrade your plan for higher limits."
}
}
Overview
Returns federal tender notices — open and historical solicitations published on CanadaBuys. Use these to monitor active procurement opportunities or research the competitive landscape before a contract is awarded. For the full procurement lifecycle linking a tender to its award and contract, use the Procurement Lifecycle endpoint. For awarded contracts, use List Contracts. Single tender records are available atGET /api/v1/tenders/{record_id}.
Query Parameters
string
Partial match on vendor name. Note: many tender notices will not have a vendor — this field is only present when a specific supplier is named in the notice. Example:
Palantir.string
Partial match on department name (case-insensitive). Example:
National Defence.string
Exact match on
procurement_method field. Example: Non-competitive.string
Exact match on
source_dataset field. Example: open.canada.number
Minimum estimated value in CAD. Example:
100000.number
Maximum estimated value in CAD. Example:
5000000.string
ISO 8601 start date — e.g.
2023-01-01. Example: 2023-01-01.string
ISO 8601 end date — e.g.
2023-12-31. Example: 2023-12-31.integer
Results per page. Default:
50. Max: 200. Example: 25.integer
Result offset for pagination. Default:
0. Example: 50.curl -H "X-API-Key: your_api_key_here" \
"https://api.northaxiumdata.ca/api/v1/tenders?department=National%20Defence&limit=10"
import requests
headers = {"X-API-Key": "your_api_key_here"}
params = {"department": "National Defence", "limit": 10}
response = requests.get(
"https://api.northaxiumdata.ca/api/v1/tenders",
headers=headers,
params=params
)
for tender in response.json()["data"]:
print(f"{tender['date']} — {tender['department']}: {tender['description']}")
const response = await fetch(
"https://api.northaxiumdata.ca/api/v1/tenders?department=National%20Defence&limit=10",
{ headers: { "X-API-Key": "your_api_key_here" } }
);
const data = await response.json();
{
"data": [
{
"record_id": "tender_abc123",
"event_type": "tender",
"vendor": null,
"department": "National Defence | Défense nationale",
"value": null,
"date": "2023-08-01",
"description": "Supply and delivery of communications equipment",
"procurement_method": "Competitive",
"source_dataset": "CanadaBuys Tenders",
"solicitation_number": "W8476-23ABC",
"source_url": "https://buyandsell.gc.ca/..."
}
],
"meta": {
"total": 97000,
"limit": 10,
"offset": 0
}
}
{
"error": {
"code": "UNAUTHORIZED",
"message": "Missing API key. Pass your key in the X-API-Key header."
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Monthly request limit exceeded. Upgrade your plan for higher limits."
}
}