The Natural Sciences and Engineering Research Council (NSERC) funds natural science and engineering research across Canada. It publishes every grant it awards, but the data lives in a search portal built for one-off lookups. There is no public REST API, and the open data files change structure from year to year.
GrantData exposes this data through a clean REST API: NSERC and SSHRC research grants, normalized to a consistent schema, queryable by program, institution, department, keyword, date, and value. Coverage refreshes weekly.
The NSERC web portal works for a single lookup. It breaks down the moment you need data systematically: for a funding dashboard, a competitive-intelligence tool, an LLM agent, or simply a spreadsheet of one institution's Discovery Grants over ten years.
?q=/recipient/{name} rolls up every grant for a recipient670,000+ NSERC and SSHRC research grants. One endpoint. The Basic plan is free, 25 requests per day.
Each record exposes top-level fields for fast filtering (department, recipient_name, program, value, event_date) plus a data object with the source fields. A grant record:
{
"record_id": "research_grants|nserc|RGPIN-2023-04821",
"entity_type": "research_grant",
"department": "Natural Sciences and Engineering Research Council",
"recipient_name": "University of Toronto",
"program": "Discovery Grants",
"value": 52000.00,
"event_date": "2023-04-01",
"data": {
"fiscal_year": "2023-2024",
"committee": "Evolution and Ecology",
"province": "Ontario",
"installment": 1
}
}
curl -G "https://grantdata-canadian-government-grants-api.p.rapidapi.com/research_grant" \
--data-urlencode "program_exact=Discovery Grants" \
--data-urlencode "q=quantum" \
--data-urlencode "issued_after=2022-01-01" \
--data-urlencode "limit=20" \
-H "X-RapidAPI-Key: YOUR_API_KEY" \
-H "X-RapidAPI-Host: grantdata-canadian-government-grants-api.p.rapidapi.com"
curl -G "https://grantdata-canadian-government-grants-api.p.rapidapi.com/research_grant" \
--data-urlencode "recipient_name=University of British Columbia" \
--data-urlencode "sort_by=value" \
--data-urlencode "sort_order=desc" \
--data-urlencode "limit=50" \
-H "X-RapidAPI-Key: YOUR_API_KEY" \
-H "X-RapidAPI-Host: grantdata-canadian-government-grants-api.p.rapidapi.com"
The /research_grant/stats endpoint aggregates without pulling records: total by program, by institution, or by period. One call instead of thousands.
curl -G "https://grantdata-canadian-government-grants-api.p.rapidapi.com/research_grant/stats" \
--data-urlencode "group_by=program" \
--data-urlencode "sum_field=value" \
-H "X-RapidAPI-Key: YOUR_API_KEY" \
-H "X-RapidAPI-Host: grantdata-canadian-government-grants-api.p.rapidapi.com"
Source data names the same funder several ways: "NSERC", "CRSNG", "Natural Sciences and Engineering Research Council". The API normalizes these variants. Use department=NSERC and you get every record regardless of the original spelling. For a known program, program_exact=Discovery Grants is faster than a partial match.
This API is the access layer behind our NSERC analysis: the 6x gap between disciplines and 26 years and $28 billion. The same data, raw and queryable.
/research_grant with ?program_exact=Discovery Grants for an exact match, faster than program=. Add department=NSERC to scope to NSERC only.