Canadian federal procurement · for agents and B2G sales teams
Know which government contracts are about to come up for grabs.
TenderTrail tracks every Government of Canada tender and award on CanadaBuys and tells you which contracts end soon, who the incumbent is, what they're worth, and whether a re-tender is already open. Pay per call in USDC over x402, with no account needed.
866tenders open now
29,278awards since Aug 2022
$103.2BCAD in awarded contracts
2026-11-08 02:24 UTClast refresh
Try it: contracts ending soon
| Contract | Incumbent | Buyer | Value | Ends |
|---|---|---|---|---|
| Run a search to see the top 3 by value. | ||||
Endpoints and pricing
| Endpoint | What you get | Price |
|---|---|---|
GET /v1/contracts/expiring | Federal contracts ending soon (recompete leads) | $0.05 |
GET /v1/tenders/search | Search open Canadian federal tenders | $0.01 |
GET /v1/tenders/history | Change history of a tender | $0.01 |
GET /v1/awards/search | Search federal contract awards | $0.02 |
GET /v1/suppliers/profile | Government contract profile of a supplier | $0.05 |
GET /v1/buyers/profile | Spending profile of a federal buyer | $0.05 |
GET /v1/export/expiring | Bulk export of expiring contracts (up to 1,000 rows) | $1.00 |
You're charged only when the call succeeds. Bad input, not-found and ambiguous names are free. Machine-readable: OpenAPI · /.well-known/x402 · llms.txt
Call it from an agent
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
const pay = wrapFetchWithPaymentFromConfig(fetch, { schemes: [/* your x402 wallet */] });
const r = await pay("https://tendertrail.fly.dev/v1/contracts/expiring?q=cybersecurity&withinDays=180&minValue=100000");
console.log((await r.json()).results);