Canada Gazette Regulatory Monitor avatar

Canada Gazette Regulatory Monitor

Pricing

from $0.25 / actor start

Go to Apify Store
Canada Gazette Regulatory Monitor

Canada Gazette Regulatory Monitor

Monitor official Canada Gazette Part I/II regulatory changes and consultation deadlines as structured, webhook-ready data from public Government of Canada sources.

Pricing

from $0.25 / actor start

Rating

0.0

(0)

Developer

Peter Drucker

Peter Drucker

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Canada Gazette Regulatory Change & Consultation Deadline Monitor

An Apify Actor that turns official Canada Gazette publications into structured, filterable, webhook-ready JSON. It monitors proposed regulations and notices in Part I, enacted regulations and statutory instruments in Part II, and the exact deadlines listed on the open-consultations page.

The Actor uses only public Government of Canada sources. It does not log in, submit consultation comments, bypass access controls, or collect private data.

Official sources

SourceExact endpointUse
Canada Gazette Part I RSShttps://www.gazette.gc.ca/rss/p1-eng.xmlDiscover weekly Part I issues containing notices and proposed regulations
Canada Gazette Part II RSShttps://www.gazette.gc.ca/rss/p2-eng.xmlDiscover Part II issues containing enacted regulations and statutory instruments
Open consultationshttps://gazette.gc.ca/consult/consult-eng.htmlRead current proposed-regulation consultation periods and closing timestamps

The Canada Gazette's official RSS instructions identify the Part I and Part II feeds. The open-consultations page is the authoritative deadline source used by this Actor.

What each record contains

  • Stable id, canonical Government of Canada sourceUrl, Gazette part, publication date, and source list.
  • classification: proposed, final, or notice.
  • Department/agency, statutory authority, SOR/SI registration number, and a concise source summary when available.
  • Normalized ISO 8601 deadline, deadlineKind, consultation length, and daysRemaining.
  • Case-insensitive keyword matches.
  • Deterministic priorityScore and priority band.
  • changeType, first/last seen timestamps, and a deterministic fingerprint.
  • A webhook envelope with an event name, deduplication key, timestamp, and compact payload.

Example input

{
"keywords": ["bank", "privacy", "money laundering"],
"keywordMode": "any",
"parts": ["I", "II"],
"includeConsultations": true,
"includeNotices": true,
"onlyNewOrChanged": true,
"maxIssuesPerPart": 2,
"maxItems": 250
}

Leave keywords empty to include every record. Set onlyNewOrChanged to false for a complete point-in-time export. The default named key-value store preserves fingerprints across Actor runs; set a different stateKey to create an independent monitoring stream.

Example output record

{
"id": "gazette:5e9f…",
"title": "Consumer-Driven Banking Regulations",
"classification": "proposed",
"part": "I",
"publicationDate": "2026-06-27",
"deadline": "2026-08-26T23:59:00-04:00",
"deadlineKind": "consultation",
"daysRemaining": 14,
"consultationDays": 60,
"department": "Department of Finance Canada",
"statutoryAuthority": "Consumer-Driven Banking Act",
"sourceUrl": "https://gazette.gc.ca/rp-pr/p1/2026/2026-06-27/html/reg3-eng.html",
"matchedKeywords": ["bank"],
"priorityScore": 72,
"priority": "high",
"changeType": "new",
"webhook": {
"eventType": "canada_gazette.record.new",
"deduplicationKey": "gazette:5e9f…:<fingerprint>",
"occurredAt": "2026-08-12T14:00:00.000Z",
"payload": {
"title": "Consumer-Driven Banking Regulations"
}
}
}

Priority scoring

The score is deterministic and capped from 0 to 100:

  • Base: final regulation 50, proposed regulation 40, notice 20.
  • Deadline: +35 within 3 days, +30 within 7, +22 within 14, +14 within 30, +7 within 60, or -10 when expired.
  • Keyword relevance: +5 per matched keyword, capped at +20.
  • Change signal: +10 for changed, +5 for new, 0 for unchanged.
  • Bands: urgent 80–100, high 60–79, medium 40–59, low 0–39.

Because all rules are explicit, the same record, reference time, keyword set, and state produce the same score.

Stateful new/changed detection

Each record gets a stable ID from its canonical source URL and a SHA-256 fingerprint of its substantive fields and normalized source content. A persistent named Apify key-value store records the previous fingerprint:

  • No prior ID: new
  • Same ID, different fingerprint: changed
  • Same ID, same fingerprint: unchanged

onlyNewOrChanged: true suppresses unchanged dataset items. The state is still updated for all discovered records. Stored entries not observed for two years are pruned, and the state is capped at 10,000 records.

Webhooks and schedules

Schedule the Actor weekly after the Part I publication window and every second Wednesday after Part II is published, or run it daily for deadline monitoring. Each dataset item contains a self-contained webhook event envelope. Apify webhooks, the API, Make, Zapier, or another consumer can pass the dataset item downstream and deduplicate on webhook.deduplicationKey.

Local development

Requirements: Node.js 22 or newer and pnpm.

pnpm install
pnpm check
pnpm start:dev

Local Apify storage is written under storage/ and ignored by Git. Run pnpm test:live to verify that the three official endpoints remain reachable and parseable.

Deployment

The .actor directory contains the current Actor definition, multi-stage Node.js 24 Dockerfile, input schema, output schema, dataset schema, changelog, and Store listing draft. Deploy with the Apify CLI after authenticating:

apify login
apify push

The Actor is published in Apify Store without creator monetization; normal Apify platform usage may apply. No tax/KYC or payout setup was required for publication.

Reliability notes

  • HTTP requests use a descriptive user agent, bounded timeouts, and limited retries.
  • RSS is only the discovery layer; the Actor parses each official issue index and its linked records.
  • Part I grouped pages are identified by their official anchors; Part II items use their individual SOR/SI pages.
  • Open consultations are merged into matching Part I records by canonical URL, so a proposal appears once with its deadline attached.
  • Fixture tests mirror the actual Government of Canada structures and a separate live smoke test checks the current endpoints.

License

MIT