Chicago Crash Data

Traffic crashes sourced from the Chicago Data Portal.

Crashes

17,219
2018-01-01
2026-10-11

Injuries by Month — last 24 months

Fatal Incapacitating
2026
Oct
2 / 53
Sep
6 / 162
Aug
8 / 171
Jul
14 / 195
Jun
10 / 175
May
6 / 148
Apr
10 / 139
Mar
6 / 115
Feb
6 / 79
Jan
10 / 101
2025
Dec
10 / 113
Nov
12 / 138
Oct
8 / 149
Sep
6 / 160
Aug
7 / 205
Jul
9 / 165
Jun
8 / 187
May
6 / 124
Apr
9 / 135
Mar
9 / 139
Feb
3 / 90
Jan
6 / 102
2024
Dec
6 / 102
Nov
10 / 164
Oct
8 / 107

Locations

CategoryCount
intersection 23,877
neighborhood 98
street 1,832
ward 50

API Endpoints

  • GET/api/status Database status and row counts
  • GET/api/crashes/nearpoint Crashes near a lat/lng point — latitude (required), longitude (required), since (optional, YYYY-MM-DD), until (optional, YYYY-MM-DD), distance_feet (default 2640), severe_only (default false; true narrows to severe crashes only)
  • GET/api/crashes/recent Most recent crashes citywide — limit (default 20, max 50), fatal_only (default false), include_people (default false), severe_only (default false; true narrows to severe crashes only)
  • GET/api/crashes/fatalities Every fatal crash in the database, fully hydrated (people, vehicles, stories)
  • GET/api/crashes/brief All crashes with a brief field set for heatmaps and bulk visualization — since (optional, YYYY-MM-DD), until (optional, YYYY-MM-DD), location_category + location_id (optional, both required together), limit (default 50000, max 50000; response carries truncated:true if total exceeds limit), severe_only (default false; true narrows to severe crashes only)
  • GET/api/crashes/summary Aggregated crash and casualty totals — crashes, people killed, people injured, pedestrians, cyclists — for one location or citywide — location_category + location_id (both required together; omit both for citywide), since (optional, YYYY-MM-DD), until (optional, YYYY-MM-DD), severe_only (default false; true narrows to severe crashes only)
  • GET/api/crashes/date-count Crash injury counts grouped by time period — unit (day | month | year, default month), last (integer, default 6; ignored when year is given), year (optional, YYYY — returns that year instead of a rolling window), month (optional, 1-12 — narrows to that calendar month), severe_only (default false; true narrows to severe crashes only)
  • GET/api/fetch-stories All news stories, deduped by URL, each with the crashes it covers — limit (optional, N newest stories; 0 or absent = all)
  • GET/api/locations/search Search locations by name — q (required)
  • GET/api/crashes/<crash_record_id> Fetch a crash detail payload including related neighborhood, ward, street, and intersection locations
  • GET/api/locations/<category>/<location_id> Fetch a single location by category and id
  • GET/api/locations/<category>/<location_id>/nearby Fetch nearby locations in the same category — limit (default 5, max 20), severe_only (default false; true narrows to severe crashes only)
  • GET/api/locations/for-point Neighborhood and ward containing a lat/lng point, with crash counts — latitude (required), longitude (required), severe_only (default false; true narrows to severe crashes only)
  • GET/api/neighborhoods/stats Crash stats aggregated by neighborhood (includes rank and percentile per area) — include_geometry (default true), severe_only (default false; true narrows to severe crashes only)
  • GET/api/wards/stats Crash stats aggregated by ward (includes rank and percentile per area) — include_geometry (default true), severe_only (default false; true narrows to severe crashes only)
  • GET/api/streets/stats Crash stats aggregated by street (includes rank and percentile per area) — severe_only (default false; true narrows to severe crashes only)
  • GET/api/intersections/top Top intersections by crash count from crash_locations mapping — recent_days (default 90), limit (default 20), severe_only (default false; true narrows to severe crashes only)