๐Ÿšจ
St. Louis Metropolitan Police Dept.

About This Dashboard

โ† Back to Dashboard

What Is the STL Monthly Crash Report?

The STL Monthly Crash Report is a free, open-source public safety dashboard that tracks traffic crashes within the City of St. Louis. It aggregates data from the St. Louis Metropolitan Police Department's Daily Accident Reports, which are published as PDF documents on the SLMPD website. The dashboard provides a rolling 31-day window of crash data, updated automatically every day via a scheduled scraping process.

The goal of this project is to make traffic crash data more accessible and understandable for residents, journalists, city officials, and anyone interested in road safety in St. Louis. Rather than requiring people to download and manually read through dozens of PDF reports, the dashboard extracts key information and presents it through interactive charts, filterable tables, and summary statistics.

St. Louis consistently ranks among the most dangerous cities for traffic fatalities in the United States. By providing transparent, up-to-date crash data, this dashboard aims to support data-driven conversations about infrastructure improvements, traffic enforcement priorities, and pedestrian safety initiatives.

Data Sources and Methodology

All crash data comes directly from the SLMPD Daily Accident Report, available at slmpd.org/daily-accident-report. Each business day, SLMPD publishes a PDF containing crash reports that were recently approved by supervisors. It is important to note that a report's publication date may differ from the actual crash date โ€” reports can appear days or even weeks after the crash occurred.

The automated scraper downloads each PDF and uses text extraction to parse structured fields including crash date, time of day, street location, cross streets, number of vehicles involved, injury severity levels, whether any driver fled the scene, vehicle colors, and the sequence of events that led to each crash. The scraper runs daily at 6:00 AM Central Time via GitHub Actions.

The dashboard filters data to only show crashes whose actual crash date falls within the last 31 calendar days. This means the window reflects real crash activity, not report filing dates. As a result, the total number of displayed crashes may differ from the count on any single daily report PDF.

Fatal and serious incidents are sourced separately from SLMPD's Accident Reconstruction Unit page, which publishes preliminary information about crashes that result in fatalities or life-threatening injuries. These are investigated by a specialized unit and represent the most severe outcomes on St. Louis roads.

Understanding the Dashboard

Overview Tab

The overview tab provides a high-level snapshot of crash activity. The five key performance indicators at the top show total crash reports, total persons injured, hit-and-run incidents where at least one driver fled the scene, multi-vehicle crashes involving two or more vehicles, and the average number of vehicles per crash. The daily volume chart breaks down each day's crashes by the most severe injury reported: property damage only, non-disabling injury, disabling injury, or fatal.

The temporal patterns section reveals when crashes are most likely to occur. The hour-of-day chart highlights rush hour periods, overnight hours, and regular daytime hours with different colors. The day-of-week chart distinguishes weekdays from weekends. Together, these charts help identify high-risk time periods that might benefit from increased enforcement or public awareness campaigns.

The hit-and-run chart tracks the daily proportion of crashes where at least one driver fled the scene. Hit-and-run crashes are a significant concern in St. Louis, often accounting for more than 30% of all crashes. These incidents leave victims without recourse and make it harder for investigators to determine fault and ensure accountability.

Incidents Tab

The incidents tab displays every individual crash report in a filterable, sortable table. Each row represents one crash and includes the report number, crash date, location, number of vehicles, injury count, whether a driver fled, and the worst injury severity. Clicking any row expands a detail panel showing the full crash information including the sequence of events.

Corridors Tab

The corridors tab identifies the top 20 streets with the highest crash frequency in the current 31-day window. These high-frequency corridors represent locations where targeted infrastructure improvements โ€” such as better signage, traffic calming measures, or signal timing adjustments โ€” could have the greatest impact on reducing crash rates. The risk index provides a relative comparison showing how each corridor's crash count compares to the busiest street.

Limitations and Disclaimers

This dashboard covers only the City of St. Louis proper, which is an independent city separate from St. Louis County. Crashes in the surrounding county municipalities, on interstate highways managed by the Missouri State Highway Patrol, or in the Metro East area of Illinois are not included. The jurisdictional boundary is important context โ€” many major corridors like Interstate 70 and Interstate 64 pass through both city and county jurisdictions, but only the city portions are captured here.

The data typically lags approximately three business days behind real-time events. This delay reflects the time needed for officers to file reports and supervisors to approve them. Major holidays and weekends can extend this lag further. As a result, the most recent two to three days on the daily volume chart may show artificially low numbers that will increase as additional reports are processed.

Street names are extracted from PDF text using automated parsing, which achieves approximately 85% accuracy. Some reports contain formatting inconsistencies that prevent reliable extraction. Crashes with missing street data are still included in aggregate statistics but will not appear in the corridors analysis.

This is an independent, community-built project and is not officially affiliated with or endorsed by the St. Louis Metropolitan Police Department. The data is provided as-is for informational purposes only.

Privacy Policy

This website uses Google AdSense to display advertisements. Google AdSense may use cookies and web beacons to serve ads based on your prior visits to this site or other websites. You can opt out of personalized advertising by visiting Google's Ads Settings.

We do not collect any personal information from visitors. The crash data displayed on this dashboard is derived entirely from publicly available government records published by SLMPD. No personally identifiable information about crash victims or drivers is displayed.

Third-party vendors, including Google, use cookies to serve ads based on your visits to this and other websites. For more information about how Google uses data when you visit partner sites, visit Google's privacy policy.

Open Source

The source code for this project is freely available on GitHub. Contributions, bug reports, and suggestions are welcome. The project is built with Next.js, React, Recharts, and Python for the data scraping pipeline.