Open source

An independent open-source project. Not affiliated with the Government of Canada, the RCMP, or the CAFC.

Open NshipyardFraud Losses, Tracked

Nshipyard Canada · Open data project

Fraud Losses, Tracked

The Canadian Anti-Fraud Centre publishes 350,361 reports and $2.687 billion in reported losses, row by row, and it never answers the follow-up: which scams drain the most money, from which Canadians. This project normalizes the registry, ranks every scam type by loss, and cross-tabs losses by age band and province, quarterly, from January 2021 to September 2025.

$2.69B

reported losses across 350,361 reports filed between January 2021 and September 2025. Every dollar comes from rows marked Victim, none from attempts

51.5%

of all reported losses comes from investment fraud alone: $1.38 billion across 18,610 victim reports. It is the top scam type in every age band from 20 to 89

$102,911

average loss per spear-phishing victim report, the highest of any scam type. Investment fraud averages $80,676

7.5x

growth in quarterly job-scam losses from Q1 2021 to Q3 2025. Bank investigator scams grew 5.1x

$62 vs $26

reported losses per person in British Columbia vs Quebec, the highest and lowest large provinces. Ontario matches BC at $62

Explorer

Filter 350,361 reports by scam, age, province.

Pick a scam type, an age band, or a province to see the matching slice of the data. Matching rows are the precomputed category, province, and age-band triples, ranked by loss.

Showcase

Six questions the registry never answers.

Every number below is computed from the 350,361 normalized CAFC reports, January 2021 to September 2025. The sixth card states the limits plainly, because a ranking without its blind spots is a marketing chart.

Which scams drain the most money from Canadians?

Investment fraud: $1.38 billion, 51.5% of the $2.687 billion total, across 18,610 victim reports. It is the top scam type in every victim age band from 20 to 89. Romance scams ($292.7M) and spear phishing ($281.7M) are next, each about a fifth of investment fraud's toll.

Which scam type hits the hardest per victim?

Spear phishing, at $102,911 per victim report, the highest average of any scam type. Investment fraud averages $80,676, foreign money offers $89,202, romance scams $62,676. Spear phishing needs few victims: 2,737 victim reports produced $281.7M.

Who loses the most: which age groups?

Canadians aged 60 to 69 lost $429M, more than any other age band. Average loss per victim report climbs with age and peaks there at $49,708. The honest gap: 37.7% of reported losses carry no victim age at all, so every age number is a floor, not a total.

Which provinces pay the most per person?

British Columbia and Ontario: $62 in reported losses per person, more than twice Quebec's $26. Manitoba ($54) and Alberta ($54) follow. The honest gap: 19.9% of reported losses carry no province, and geographic grain stops at the province, so no city-level view is possible.

Which scams are growing fastest?

Job scams: quarterly losses rose 7.5x from Q1 2021 ($1.53M) to Q3 2025 ($11.41M). Bank investigator scams grew 5.1x ($1.30M to $6.61M). Investment fraud grew 4.5x and remains the volume leader at $100.2M in Q3 2025 alone. The fastest way in is the screen: Internet-social network ($828.8M) and Internet ($678.3M) are the top loss channels, while direct calls generate the most reports (81,723) at far lower losses.

What this data cannot say.

37.7% of reported losses carry no victim age and 19.9% carry no province, so the age and province views are floors, not totals. All $2.687B comes from rows marked Victim: Attempt rows carry $0 in this extract, which means attempts are free to report but invisible in loss math. Losses are reported, not verified: one self-reported $23.6M loss is the largest single row. The data stops at September 30, 2025.

Methodology

How the ranking was built, and where it is weak.

  1. 01

    Source: the Canadian Anti-Fraud Centre Fraud Reporting System Dataset, open.canada.ca, publisher Royal Canadian Mounted Police / CAFC. Coverage 2021-01-01 to 2025-09-30, extracted 2025-10-01, file 75.5 MB, 350,361 rows, retrieved 2026-10-10.

  2. 02

    Loss parsing: the raw field writes currency as $1,234.56 with dollar signs and commas. The parser accepts only plain currency text. It rejected zero rows out of 350,361, and zero rows were dropped from any total.

  3. 03

    Age bands: the raw field carries a leading Excel quote, like '30 - 39, which is stripped. 'Not Available / non disponible becomes Not Available. 37.7% of reported losses carry no victim age and are counted in totals but excluded from every age view.

  4. 04

    Provinces: 'North West Territories' and 'Newfoundland And Labrador' spellings are canonicalized. Rows whose province is a US state (2,399 US-country rows plus entries like California and Texas) are kept in national totals but excluded from per-capita math. 19.9% of reported losses carry no province.

  5. 05

    Per-capita: StatCan quarterly population estimates, July 1 2026, table 17-10-0009-01. Territories with under 1,000 reports are flagged as small-sample.

  6. 06

    Complaint types: rows marked Victim carry 100% of the $2.687B in reported losses. Attempt rows carry $0 in this extract. Other, Unknown, and Incomplete rows also carry $0.

  7. 07

    Quarantine: zero rows were quarantined from totals. The only flagged rows are 10 US-state province entries kept out of the province ranking, recorded in meta.json.

  8. 08

    Trends: quarters are computed from the date-received field. Q4 2025 is partial (data stops 2025-09-30) and is excluded from growth comparisons.

  9. 09

    Honest limits: losses are self-reported, not verified. Reports are not victims: one report is one report. The CAFC's own documentation notes accuracy depends on the person filing.

Why this matters now

The CAFC's published annual figures put 2025 fraud losses in the hundreds of millions of dollars, and the Senate has held hearings on seniors' fraud vulnerability. This project turns the CAFC's own rows into the ranked, age-banded, per-capita view the agency never publishes, so banks, police, and seniors' advocates can aim prevention budgets at the costliest scam-demographic pairs instead of reading annual PDFs.

For developers

Query it from code, or from an agent.

Three consumption paths, same normalized data. REST for applications, OpenAPI for integration, MCP tools over streamable HTTP for AI agents.

Endpoints

GET

/api/v1/explore?category=Investments&province=Ontario

Filter the 1,829 precomputed scam-type, province, and age-band slices by any combination of facets

{
  "total": 9,
  "summary": { "loss": 372341234.50, "reports": 6120, "avg": 60856.90 },
  "hits": [
    { "category": "Investments", "province": "Ontario", "age": "60 - 69",
      "loss": 124883401.22, "reports": 2043 }
  ]
}
Try it →

GET

/api/v1/ranking?limit=3

39 scam types ranked by reported loss, with victim counts and average loss per victim

{
  "total": 39,
  "categories": [
    { "category": "Investments", "loss": 1382138342.47, "reports": 20394,
      "victim_reports_with_loss": 17132, "avg_loss_per_victim": 80676.23,
      "share": 51.44 }
  ]
}
Try it →

GET

/api/v1/provinces

13 provinces and territories ranked by reported loss per person, with 2026 populations

{
  "provinces": [
    { "province": "British Columbia", "loss": 355311375.12, "reports": 33958,
      "population": 5710598, "loss_per_capita": 62.22, "unstable": false }
  ]
}
Try it →

Connect your agent

Put this data to work inside your AI tools.

Pick your harness, copy the prompt, send it to your agent. Your agent runs the setup itself.

Copy and send this to Claude Code

Set up the Fraud Losses, Tracked MCP server so I can query it from here.
1. Run: claude mcp add --transport http fraud-living https://this-site.example/mcp
2. Run `claude mcp list` to confirm it connected.
3. Rank scam types by reported loss and show me the top 3 with their per-victim averages, and show me the result.

Data

Take the files.

The cleaned extracts and the build metadata. Same files the API reads. MIT licensed.

scam-type-ranking.csv

39 scam types ranked by reported loss, with victim counts and averages

Download
province-per-capita.csv

13 provinces and territories: loss, reports, 2026 population, loss per person

Download
quarterly-trends.csv

Quarterly loss by top 12 scam types, 2021-Q1 to 2025-Q3

Download
age-band-by-scam-type.csv

Loss matrix: 9 age bands by top 12 scam types

Download