Canada Federal New Grant Award Watch avatar

Canada Federal New Grant Award Watch

Pricing

from $33.50 / 1,000 new-award deltas

Go to Apify Store
Canada Federal New Grant Award Watch

Canada Federal New Grant Award Watch

New federal grant and contribution awards as Canada discloses them - the recipient, the programme, the agreement value, the dates and the reporting quarter, keyed on the government's own reference number.

Pricing

from $33.50 / 1,000 new-award deltas

Rating

0.0

(0)

Developer

NexGen Watch

NexGen Watch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

New federal grant and contribution awards as Canada discloses them - the recipient, the programme, the agreement value, the dates and the reporting quarter, keyed on the government's own reference number. Bounded by your filters: department, agreement type, recipient type, province, city, recipient or programme.

Source

Proactive Disclosure - Grants and Contributions, Treasury Board of Canada Secretariat, published on open.canada.ca (public, logged-out, no key).

  • https://open.canada.ca/data/en/dataset/432527ab-7aac-45b5-81d6-7597107a7013

Declared update frequency: P3M - QUARTERLY. Measured 2026-07-28: 1,315,562 rows across the whole disclosure.

Run this MONTHLY, not daily

The source publishes quarterly and departments run behind that - one department's newest reported quarter was 2025-2026 Q4 while the calendar sat in FY2026-2027 Q2, a two-quarter lag. A daily run would charge a source check about ninety times to observe one publication event. Monthly is the cadence this source deserves and the one this listing recommends.

It reads an API, not the 2.29 GB file

The bulk CSV is 2,289,162,586 bytes. This Actor never downloads it. It reads the CKAN datastore endpoint, which is bounded, sortable and paginated.

The API offers exact-match filters only - no date range, no text search above 100,000 rows, no SQL. That is why the watch is bounded by who and what, not by when.

Your filters bound the watch, and the cap REFUSES rather than truncates

Supply at least one of: department, agreement type, recipient type, province, city, recipient legal name, programme name. With none, the run fails and says so - this Actor will not watch 1.3 million agreements.

One run watches at most 25,000 rows. Over that the run fails and names the number. It does not quietly watch a slice of your own filter, because a truncated window cannot tell a withdrawal from the cut-off and would report records sliding out of it as though the government had pulled them.

Name filters are case-sensitive

Measured at the source: recipient_legal_name="Carleton University" returns 232 rows and "carleton university" returns 0. Same organisation. So a name, city or programme filter that matches nothing fails the run and names the case, rather than reporting an empty source. An outage you can see beats an emptiness you cannot.

The arrival clock is inside the reference number

ref_number carries the fiscal quarter the award was reported in - 001-2022-2023-Q3-00019. Measured across 6,578 rows from two departments: 6,578 parsed a quarter, 0 did not. That is what gets parsed and signed.

The datastore _id is NOT an arrival clock and is never signed. The newest 500 rows by _id are all one department and span six fiscal years, because _id orders by when a department last re-uploaded its whole file. Signing it would report a routine republication as a flood of new awards.

The key

ref_number alone is not unique - measured on a full department read, 2,204 distinct reference numbers across 2,578 rows, because a number repeats across an agreement's amendments. The key is ref_number plus amendment_number, both carried verbatim from the source, nothing inferred and nothing hashed.

Pricing

Pay-per-event on the ratified four-tier ladder (FREE → GOLD, with Platinum and Diamond floored at the Gold rate). Apify applies its own plan discount on top.

EventFREEBRONZESILVERGOLD
Actor start (apify-actor-start)$0.02$0.02$0.02$0.02
Source check (source-check)$0.10$0.09$0.08$0.067
New-award delta (cafed-disclosure-delta)$0.05$0.045$0.04$0.0335

source-check is charged once per run, after the source enumeration terminates — seed runs and no-change runs included. It is not charged when the source refused the read, and not when the run is refused for an unbounded or oversized watch set.

cafed-disclosure-delta is charged per emitted delta, in watch mode only. Seed runs and no-change runs charge nothing here.

apify-actor-start is the platform's reserved event, never charged in this code. The Actor is clamped to 1024 MB on both settings, so it is charged exactly once per run — the platform bills it once per gigabyte of run memory.

Snapshot mode is a PREVIEW

watch_mode: false returns at most 25 records, hard-capped in code, labelled output_mode: "preview". This Actor sells change detection, not bulk export.

Watch semantics

The first watch run stores a private baseline and emits zero deltas. Later runs emit a delta for each new row appearing in your filtered set. A department restating a figure is a correction, not a new award, and classifies as nothing; a row withdrawn from the disclosure likewise. Billed deltas are capped at 500 per run; the overflow is a named PARTIAL withholding, never billed, and re-detected on the next run.

One row class per Actor

This Actor emits original rows and nothing else. Its sibling reads the same source for the other class, each with its own baseline and its own price.

Terminal states

NORMAL - SUCCEEDED-0: GENUINE_EMPTY - SUCCEEDED-0 (no change) - PARTIAL - BLOCKED. A zero with no evidence FAILS loud rather than exiting 0 quietly, and a case-sensitive filter that matched nothing is never reported as an empty source.