Documentation menu
Getting started
QuickstartEndpoints
GET/sourcesGET/tender/alerts/unsubscribeGET/tender/{record_id}/documents/{doc_index}GET/vendorsGET/departmentsGET/department/{name}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/tender/feedGET/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}List all data sources
Parameters
This endpoint takes no parameters.
Request
curl --request GET \
--url 'https://procuredata-canadian-government-procurement-api.p.rapidapi.com/sources' \
--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/sources"
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/sources", {
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/sources");
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/sources")
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.bodypackage main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://procuredata-canadian-government-procurement-api.p.rapidapi.com/sources", 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/sources"))
.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
{
"count": 6,
"sources": [
{
"source_id": "canada_contracts",
"entity_type": "contract",
"records": 2100000,
"last_updated": "2026-04-01T04:08:14+00:00",
"earliest_date": "2009-01-05",
"latest_date": "2026-03-28"
},
{
"source_id": "canada_tenders",
"entity_type": "tender",
"records": 650000,
"last_updated": "2026-03-30T02:01:27+00:00",
"earliest_date": "2009-01-05",
"latest_date": "2026-03-27"
},
{
"source_id": "seao",
"entity_type": "tender",
"records": 140000,
"last_updated": "2026-04-01T10:00:00+00:00",
"earliest_date": "2021-03-01",
"latest_date": "2026-03-29"
}
]
}Ready to build?Subscribe on RapidAPI to get your key and start calling ProcureData in minutes.
Get your API key →