Documentation menu
Getting started
QuickstartEndpoints
GET/sourcesGET/tender/alerts/unsubscribeGET/vendorsGET/departmentsGET/expiringGET/tender/feedGET/tender/{record_id}/documents/{doc_index}GET/department/{name}GET/process/{process_key}GET/vendor/{name}GET/contractGET/tenderGET/awardGET/disclosureGET/standing_offerGET/pre_solicitationGET/contract/statsGET/tender/statsGET/award/statsGET/disclosure/statsGET/standing_offer/statsGET/pre_solicitation/statsGET/contract/coverageGET/tender/coverageGET/award/coverageGET/disclosure/coverageGET/standing_offer/coverageGET/pre_solicitation/coverageGET/procurement/{solicitation_number}GET/contract/{record_id}GET/tender/{record_id}GET/award/{record_id}GET/disclosure/{record_id}GET/standing_offer/{record_id}GET/pre_solicitation/{record_id}Every record in one procurement: the tender, the award, the contract
Parameters
| Parameter | Type | Description | |
|---|---|---|---|
process_key | string | required |
Request
curl --request GET \
--url 'https://api.procuredata.ca/process/PROCESS_KEY' \
--header 'X-API-Key: YOUR_API_KEY'import requests
url = "https://api.procuredata.ca/process/PROCESS_KEY"
headers = {"X-API-Key": "YOUR_API_KEY"}
resp = requests.get(url, headers=headers)
print(resp.json())const res = await fetch("https://api.procuredata.ca/process/PROCESS_KEY", {
headers: {
"X-API-Key": "YOUR_API_KEY",
},
});
const data = await res.json();
console.log(data);<?php
$ch = curl_init("https://api.procuredata.ca/process/PROCESS_KEY");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"X-API-Key: YOUR_API_KEY",
]);
echo curl_exec($ch);require "net/http"
require "uri"
uri = URI("https://api.procuredata.ca/process/PROCESS_KEY")
req = Net::HTTP::Get.new(uri)
req["X-API-Key"] = "YOUR_API_KEY"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.bodypackage main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.procuredata.ca/process/PROCESS_KEY", nil)
req.Header.Add("X-API-Key", "YOUR_API_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://api.procuredata.ca/process/PROCESS_KEY"))
.header("X-API-Key", "YOUR_API_KEY")
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());Errors
Every error returns {"detail": "…"}, a sentence naming what was wrong and, where there is one, the fix.
| Status | When |
|---|---|
400 | The request is understood but cannot be served as asked, e.g. offset above 9500, or cursor combined with sort_by=value. The message names the fix. |
403 | Missing or invalid API key. |
404 | No such endpoint, or no record with that id. |
422 | A parameter is invalid: an unknown city slug, an impossible date, a limit above 500, an unrecognised sort field, or a misspelled parameter name. The message names the parameter and, where there is one, the nearest valid value. |
429 | Rate limit or plan quota exceeded. |
500 | Unexpected server error. |
504 | The query took too long. Narrow it with a municipality or a date range. |
Ready to build?Create a free key and start calling ProcureData in minutes. No card required.
Get your API key →