Data API Documentation
The CharityVerify Data API gives foundations, DAF administrators, researchers, and compliance teams programmatic access to verification status, trust scores, T3010 financial history, and change-monitoring for over 130,000 Canadian registered charities.
Base URL: https://charityverify.com
Authentication: include an X-API-Key: your_key_here header with every request (except /health).
Data freshness: registration status and filings are re-scraped from CRA on a rolling cadence and scores are recomputed on change. Every scored record carries a data_vintage timestamp so you can verify exactly how fresh the underlying filing is.
Quick Start
curl -H "X-API-Key: YOUR_KEY" https://charityverify.com/v1/verify/119219814RR0001
Plans
Monitoring a grantee portfolio? The Grantee Watchlist adds change-detection and alerting on top of the Data API.
See How Monitoring Works
| Plan | Requests/Month | Includes | Price | |
| Free | 1,000 | Verification, search, trust grades | $0 | Get a key |
| Data API | 10,000+ | Full T3010 history, score timeseries, benchmark CSV export | from $1,490/yr | See pricing |
| Watchlist | Per plan | Portfolio change-monitoring, alert digests, due-diligence records; bulk-BN ingest API on Foundation+ | from $1,990/yr | Learn more |
| AML / Compliance | Custom | Sanctions & FATF screening, audit-log export, SLA | Custom | Contact us |
Get a Free API Key
1,000 requests/month, no credit card. Your key is shown once below — save it immediately.
Endpoints
Health
GET/health
Health check. No authentication required. Returns DB status, charity count, last sync time.
Verification
GET/v1/verify/:business_number
Quick verification. Returns registration status, category, trust grade, and flag summary — the single call to confirm a charity is in good standing before money moves.
GET/v1/charity/:business_number
Full charity detail including current board of directors (latest filing), trust score, financials, and compensation. Add ?narratives=false for a data-only profile — narrative prose is omitted and no narrative generation is triggered (recommended for bulk sweeps).
GET/v1/search?name=&limit=
Search charities by name. Limit: 2-100 results.
Grantee Watchlist (change-monitoring)
Create a portfolio of the charities you fund and CharityVerify watches the public record for you: registration-status changes, grade drops, new critical flags, and board changes, delivered as alert digests. Watchlist plans start at $1,990/yr — see how monitoring works.
POST/v1/watchlists
Create a watchlist. Body: { "name": "...", "contact_email": "..." }. Optional: digest_cadence (daily | weekly | immediate), alert_on (array — defaults to ["status_loss","new_critical_flag","grade_drop"]; board-change events director_joined / director_departed are opt-in), min_grade_drop (integer letters). Requires a Watchlist plan.
POST/v1/watchlists/:id/members
Add grantee BNs to a watchlist (up to 1,000 per call). Body: { "business_numbers": ["...", "..."] } or { "csv": "BN, BN, BN" }. Each BN is validated against the registry; the response separates added, unknown_bns, and already_present.
GET/v1/watchlists
List your watchlists.
GET/v1/watchlists/:id
Watchlist detail with current portfolio status: per-grantee registration status, trust grade, flag summary, and the data vintage of each underlying filing.
Registry Changes
GET/v1/changes?days=30&limit=200
Public feed of registration-status changes detected in the CRA record (revocations, annulments, penalties). No key required. Powers the
/changes page.
days: 1-90;
limit: up to 200.
Directors & Board Changes
GET/v1/directors/:business_number
Current board of directors (latest CRA filing) with positions.
GET/v1/charity/:bn/director-changes
Board changes between the two most recent CRA filings: who joined and who departed. Free with any key; push alerts on board changes are a Watchlist feature.
Historical Data
GET/v1/charity/:bn/financials?year=&from=&to=
Financial history (2009 to latest filing). Revenue, expenditures, assets, liabilities, program spending.
GET/v1/charity/:bn/compensation?year=&from=&to=
Employee compensation data with salary bracket distribution.
GET/v1/charity/:bn/flows?direction=&limit=
Charity-to-charity donation flows. Filter by donor, recipient, or both.
GET/v1/charity/:bn/programs
Charitable program descriptions.
GET/v1/charity/:bn/international
International activities by country with expenditures.
GET/v1/charity/:bn/political
Political activity records.
GET/v1/charity/:bn/trend
Financial trend summary with revenue change percentage.
Peer Benchmarks
GET/v1/benchmarks?category=0160&revenue_band=large
Peer benchmark distributions (p10–p90) by charity category and revenue band, across 8 financial metrics.
Example response
{
"category": "0160",
"revenue_band": "large",
"tier": "full",
"metrics": {
"program_ratio": { "p10": 0.52, "p25": 0.68, "p50": 0.79, "p75": 0.87, "p90": 0.94, "sample_size": 312 },
"comp_ratio": { "p10": 0.08, "p25": 0.18, "p50": 0.31, "p75": 0.44, "p90": 0.58, "sample_size": 312 },
"reserves_months": { "p10": 1.2, "p25": 3.8, "p50": 8.4, "p75": 18.6, "p90": 42.1, "sample_size": 312 },
"revenue_cagr": { "p10": -0.12, "p25": -0.02, "p50": 0.04, "p75": 0.11, "p90": 0.24, "sample_size": 312 }
}
}
GET/v1/benchmarks/export?category=0160&revenue_band=large
CSV export of benchmark data for a category and revenue band. Requires a Data API plan.
Trust Scores
GET/v1/risk/:business_number
Full trust score breakdown: legitimacy, financial health, compliance, grade, flags. Full component data requires a paid plan.
GET/v1/risk/:bn/history
Score history over time (up to 50 entries) — the timeseries behind grade-drop detection.
GET/v1/stats/distribution
Aggregate trust grade distribution across all scored charities.
POST/v1/charity/:bn/comment
Submit a community comment for moderation. Body: { "comment_text": "...", "submitted_by": "..." }
Webhooks Early Access
Per-charity webhooks push status changes to your endpoint as they are detected. For portfolio-level monitoring with digests and audit records, use the Grantee Watchlist.
POST/v1/webhooks/subscribe
Subscribe to status changes for one charity. Body: { "business_number": "...", "callback_url": "https://..." }
DELETE/v1/webhooks/:subscription_id
Deactivate a webhook subscription.
GET/v1/webhooks
List your active webhook subscriptions.
Error Codes
| Code | Meaning |
401 | Missing or invalid API key |
402 | Endpoint requires a paid plan |
404 | Charity not found |
429 | Monthly rate limit exceeded |
500 | Internal server error |
Questions, higher volumes, or a data shape you need that isn't here? Email outreach@charityverify.com.