Documentation menu
Docs / Reference / Search contracts

Search contracts

GET/contract

Parameters

ParameterTypeDescription
municipalitystringoptional
qstringoptionalFull-text search across data fields. Space-separated words require all terms (e.g. "wood panel"). Use OR to match any term ("wood OR panel OR acoustic"), quotes for exact phrases ("supply arrangement"), and a leading minus to exclude ("software -hardware").
departmentstringoptionalFilter by department name (partial match, EN or FR)
vendorstringoptionalFilter by vendor name (partial match)
categorystringoptionalProcurement category: CNST, GD, SRV, SRVTGD. For recalls: product category (e.g. 'Baby products', 'Toys and games', 'Household items').
statusstringoptionalFilter by status (Active, Expired, Cancelled, Open)
procurement_methodstringoptionalFilter by procurement method (partial match, e.g. 'Competitive')
vendor_provincestringoptionalFilter by vendor province (e.g. 'Ontario', 'Quebec')
value_minnumberoptionalMinimum contract value (numeric)
value_maxnumberoptionalMaximum contract value (numeric)
issued_afterstringoptionalFilter by date >= YYYY-MM-DD (award_date for contracts/awards, publication_date for tenders)
issued_beforestringoptionalFilter by date <= YYYY-MM-DD
closing_afterstringoptionalFilter tenders by closing_date >= YYYY-MM-DD.
closing_beforestringoptionalFilter tenders by closing_date <= YYYY-MM-DD.
sort_bystringoptionalSort field: published (publication_date for tenders, award_date for contracts), date (event date), value (contract/agreement value), closing (closing_date for tenders)
sort_orderstringoptionalSort order: asc or desc
limitintegeroptional
offsetintegeroptional
cursorstringoptionalPagination cursor from next_cursor in a previous response. Use instead of offset for deep pagination.

Request

curl --request GET \
  --url 'https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract' \
  --header 'x-rapidapi-host: procuredata-canadian-government-procurement-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
import requests

url = "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract"
headers = {"x-rapidapi-host": "procuredata-canadian-government-procurement-api.p.rapidapi.com", "x-rapidapi-key": "YOUR_RAPIDAPI_KEY"}
resp = requests.get(url, headers=headers)
print(resp.json())
const res = await fetch("https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract", {
  headers: {
    "x-rapidapi-host": "procuredata-canadian-government-procurement-api.p.rapidapi.com",
    "x-rapidapi-key": "YOUR_RAPIDAPI_KEY",
  },
});
const data = await res.json();
console.log(data);
<?php
$ch = curl_init("https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "x-rapidapi-host: procuredata-canadian-government-procurement-api.p.rapidapi.com",
    "x-rapidapi-key: YOUR_RAPIDAPI_KEY",
]);
echo curl_exec($ch);
require "net/http"
require "uri"

uri = URI("https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract")
req = Net::HTTP::Get.new(uri)
req["x-rapidapi-host"] = "procuredata-canadian-government-procurement-api.p.rapidapi.com"
req["x-rapidapi-key"] = "YOUR_RAPIDAPI_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, _ := http.NewRequest("GET", "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract", nil)
    req.Header.Add("x-rapidapi-host", "procuredata-canadian-government-procurement-api.p.rapidapi.com")
    req.Header.Add("x-rapidapi-key", "YOUR_RAPIDAPI_KEY")
    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)
    fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.*;

HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://procuredata-canadian-government-procurement-api.p.rapidapi.com/contract"))
    .header("x-rapidapi-host", "procuredata-canadian-government-procurement-api.p.rapidapi.com")
    .header("x-rapidapi-key", "YOUR_RAPIDAPI_KEY")
    .build();
HttpResponse<String> res = HttpClient.newHttpClient()
    .send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());

Example response

{
  "entity_type": "contract",
  "count": 100,
  "offset": 0,
  "next_cursor": "eyJkIjogIjIwMjUtMDItMDciLCAiaSI6ICJXU1Q4MTM3NDcyNjEifQ==",
  "results": [
    {
      "record_id": "WS4813747261-CW2376464-ACM_197731727:002",
      "vendor_name": "ACME Corp",
      "department_en": "Public Services and Procurement Canada",
      "title_en": "5P322-240135 Remote Construction Site Cameras",
      "contract_value": 49240.88,
      "award_date": "2025-02-07",
      "procurement_category": "GD",
      "solicitation_number": "WS4813747261"
    }
  ]
}
Ready to build?Subscribe on RapidAPI to get your key and start calling ProcureData in minutes.
Get your API key →