Australia does not have one scam problem

Scams are often discussed as one broad national issue. However, Scamwatch data from January to August 2025 shows a more complicated pattern. The harm is not evenly spread. Some scam types create far greater financial losses, some contact methods expose people to higher risk, and different age groups experience different forms of harm.

This story uses five charts to show why Australia’s scam problem should not be treated as one crisis, but as several overlapping crises.

1. Scam losses remained persistent across early 2025

monthly_data <- scams_clean %>%
  group_by(StartOfMonth) %>%
  summarise(
    Total_Loss = sum(Amount_lost, na.rm = TRUE),
    Reports = sum(Number_of_reports, na.rm = TRUE)
  )

graph1 <- ggplot(monthly_data, aes(
  x = StartOfMonth,
  y = Total_Loss,
  text = paste0(
    "Month: ", format(StartOfMonth, "%B %Y"),
    "<br>Total losses: ", dollar(Total_Loss),
    "<br>Reports: ", comma(Reports)
  )
)) +
  geom_line(linewidth = 1.2, colour = "#005689") +
  geom_point(size = 2.8, colour = "#E31B23") +
  scale_y_continuous(labels = dollar_format()) +
  labs(
    title = "Reported scam losses stayed high across early 2025",
    subtitle = "Monthly reported losses in the Scamwatch public scams dashboard, Jan–Aug 2025",
    x = "Month",
    y = "Total reported losses",
    caption = "Source: Scamwatch Public Scams Dashboard export."
  ) +
  theme_minimal()

ggplotly(graph1, tooltip = "text")

Reported scam losses were not limited to one isolated spike. Losses remained high across the first eight months of 2025, with notable peaks in January and July. This shows scam harm was persistent across the year rather than concentrated in a single event.

2. Investment scams caused disproportionate financial harm

scam_type_data <- scams_clean %>%
  group_by(Category_Level_2) %>%
  summarise(
    Total_Loss = sum(Amount_lost, na.rm = TRUE),
    Reports = sum(Number_of_reports, na.rm = TRUE)
  ) %>%
  arrange(desc(Total_Loss)) %>%
  slice_head(n = 10)

graph2 <- ggplot(scam_type_data,
                 aes(
                   x = reorder(Category_Level_2, Total_Loss),
                   y = Total_Loss,
                   text = paste0(
                     "Scam type: ", Category_Level_2,
                     "<br>Total losses: ", dollar(Total_Loss),
                     "<br>Reports: ", comma(Reports)
                   )
                 )) +
  geom_col(fill = "#005689") +
  coord_flip() +
  scale_y_continuous(labels = dollar_format()) +
  labs(
    title = "Investment scams caused the largest losses",
    subtitle = "Top 10 scam categories by reported losses, Jan–Aug 2025",
    x = "",
    y = "Total reported losses",
    caption = "Source: Scamwatch Public Scams Dashboard export."
  ) +
  theme_minimal()

ggplotly(graph2, tooltip = "text")

Investment scams were responsible for substantially larger losses than any other category. This is important because not every scam type creates the same level of financial harm. Some scams may generate many reports, but investment scams appear to create the most severe losses.

3. Online contact methods were central to scam harm

contact_data <- scams_clean %>%
  group_by(Scam___Contact_Mode) %>%
  summarise(
    Total_Loss = sum(Amount_lost, na.rm = TRUE),
    Reports = sum(Number_of_reports, na.rm = TRUE)
  ) %>%
  arrange(desc(Total_Loss))

graph3 <- ggplot(contact_data,
                 aes(
                   x = Reports,
                   y = Total_Loss,
                   size = Total_Loss,
                   colour = Scam___Contact_Mode,
                   text = paste0(
                     "Contact method: ", Scam___Contact_Mode,
                     "<br>Total losses: ", dollar(Total_Loss),
                     "<br>Reports: ", comma(Reports)
                   )
                 )) +
  geom_point(alpha = 0.75) +
  scale_y_continuous(labels = dollar_format()) +
  scale_x_continuous(labels = comma) +
  labs(
    title = "Scam harm was strongly tied to contact method",
    subtitle = "Contact methods by number of reports and total reported losses, Jan–Aug 2025",
    x = "Number of reports",
    y = "Total reported losses",
    size = "Losses",
    colour = "Contact method",
    caption = "Source: Scamwatch Public Scams Dashboard export."
  ) +
  theme_minimal()

ggplotly(graph3, tooltip = "text")

The relationship between reports and losses shows that contact method matters. Online channels were especially important because they combined high reporting volume with substantial financial losses. This suggests scam prevention cannot focus only on individual behaviour. It also needs to consider the digital environments where scams reach people.

4. Different age groups experienced different scam risks

age_data <- scams_clean %>%
  group_by(Complainant_Age, Category_Level_2) %>%
  summarise(
    Total_Loss = sum(Amount_lost, na.rm = TRUE),
    Reports = sum(Number_of_reports, na.rm = TRUE),
    .groups = "drop"
  )

graph4 <- ggplot(age_data,
                 aes(
                   x = Category_Level_2,
                   y = Complainant_Age,
                   fill = Total_Loss,
                   text = paste0(
                     "Age group: ", Complainant_Age,
                     "<br>Scam type: ", Category_Level_2,
                     "<br>Total losses: ", dollar(Total_Loss),
                     "<br>Reports: ", comma(Reports)
                   )
                 )) +
  geom_tile() +
  scale_fill_gradient(
    low = "white",
    high = "#005689",
    labels = dollar_format()
  ) +
  labs(
    title = "Scam harm changed by age group",
    subtitle = "Reported losses by age group and scam category, Jan–Aug 2025",
    x = "Scam category",
    y = "Age group",
    fill = "Losses",
    caption = "Source: Scamwatch Public Scams Dashboard export."
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

ggplotly(graph4, tooltip = "text")

The heatmap shows that scam harm varied strongly by age group and scam category. This is the clearest sign that Australia’s scam crisis is not uniform. Different generations appear to face different patterns of risk, meaning public education campaigns may need to be more targeted.

5. Geography still shaped reported losses

state_data <- scams_clean %>%
  group_by(Address_State) %>%
  summarise(
    Total_Loss = sum(Amount_lost, na.rm = TRUE),
    Reports = sum(Number_of_reports, na.rm = TRUE)
  ) %>%
  arrange(desc(Total_Loss))

graph5 <- ggplot(state_data,
                 aes(
                   x = reorder(Address_State, Total_Loss),
                   y = Total_Loss,
                   text = paste0(
                     "State: ", Address_State,
                     "<br>Total losses: ", dollar(Total_Loss),
                     "<br>Reports: ", comma(Reports)
                   )
                 )) +
  geom_col(fill = "#005689") +
  coord_flip() +
  scale_y_continuous(labels = dollar_format()) +
  labs(
    title = "Reported losses were highest in the largest states",
    subtitle = "Reported scam losses by state, Jan–Aug 2025",
    x = "",
    y = "Total reported losses",
    caption = "Source: Scamwatch Public Scams Dashboard export."
  ) +
  theme_minimal()

ggplotly(graph5, tooltip = "text")

New South Wales recorded the highest reported losses, followed by Queensland and Victoria. Population size partly explains this pattern, but the chart still shows that scam harm is experienced unevenly across the country.

Conclusion

The Scamwatch data suggests Australia is facing multiple scam problems rather than one national crisis. Losses differed by scam type, contact method, age group and state. Investment scams generated the greatest financial harm, online channels were central to how scammers reached people, and age groups experienced different patterns of risk.

The key implication is that scam prevention should not rely on one-size-fits-all warnings. More targeted strategies are needed: different messages for different age groups, stronger protections in online environments, and closer attention to the scam types causing the greatest financial losses.

References

Scamwatch. (2025). Scamwatch Public Scams Dashboard export. Australian Competition and Consumer Commission. https://www.scamwatch.gov.au/scam-statistics