GrantData API Documentation

Canadian government grants and research funding API. Federal proactive disclosure, Infrastructure Canada projects, NSERC and SSHRC research grants. Filter by department, recipient, program, agreement type, value.

Documentation menu

Quickstart

Three steps to your first call:

  1. Subscribe on RapidAPI and copy your key (there is a free tier).
  2. Call the base URL https://grantdata-canadian-government-grants-api.p.rapidapi.com with your key in the headers.
  3. Parse the JSON response.
curl --request GET \
  --url 'https://grantdata-canadian-government-grants-api.p.rapidapi.com/department/NAME' \
  --header 'x-rapidapi-host: grantdata-canadian-government-grants-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY'
import requests

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

uri = URI("https://grantdata-canadian-government-grants-api.p.rapidapi.com/department/NAME")
req = Net::HTTP::Get.new(uri)
req["x-rapidapi-host"] = "grantdata-canadian-government-grants-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://grantdata-canadian-government-grants-api.p.rapidapi.com/department/NAME", nil)
    req.Header.Add("x-rapidapi-host", "grantdata-canadian-government-grants-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://grantdata-canadian-government-grants-api.p.rapidapi.com/department/NAME"))
    .header("x-rapidapi-host", "grantdata-canadian-government-grants-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());

Guides

Endpoint reference

Every GrantData route. Click through for parameters, examples and a sample response.

Ready to build?Subscribe on RapidAPI to get your key and start calling GrantData in minutes.
Get your API key →