Canada Federal Grant Amendment Watch
Pricing
from $67.00 / 1,000 amendment deltas
Canada Federal Grant Amendment Watch
Amendments to federal grant and contribution agreements as Canada discloses them - which agreement moved, the amendment number and date, and the restated value. Every amendment in this source carries a date; 1,446 of 1,446 sampled did.
Pricing
from $67.00 / 1,000 amendment deltas
Rating
0.0
(0)
Developer
NexGen Watch
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Share
Amendments to federal grant and contribution agreements as Canada discloses them - which agreement moved, the amendment number and date, and the restated value. Every amendment in this source carries a date; 1,446 of 1,446 sampled did. Bounded by your filters.
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.
| Event | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|
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 |
Amendment delta (cafed-disclosure-delta) | $0.10 | $0.09 | $0.08 | $0.067 |
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 amendment 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.