Skip to content
CrimeAtlas Official city crime data explorer

Methodology

CrimeAtlas methodology and caveats

CrimeAtlas imports raw incidents into PostgreSQL, stores normalized dimensions, and refreshes monthly and yearly aggregate tables offline. The current Chicago snapshot includes 7,855,000 imported incidents plus precomputed yearly and monthly tables for the main reference pages.

Imported incidents
7,855,000

Raw Chicago incidents available for aggregate refreshes.

Yearly city rows
26

Rows currently stored in the yearly city aggregate table.

Monthly city rows
303

Rows currently stored in the monthly city aggregate table.

Crime type rows
487

Yearly category aggregate rows used by crime type pages.

Context

How the data pipeline works

Additional reading notes to help interpret the statistics on this page.

Aggregate tables power the main SEO pages so totals, breakdowns, and trend charts load quickly and stay consistent across routes.

The Chicago importer is resumable and idempotent, which allows backfills and later revisions to reuse the same raw storage without duplicate rows.

Supporting lists on page templates intentionally show recent samples rather than the full raw table, keeping HTML output compact and crawl-friendly.

Pipeline

The MVP uses explicit import and refresh steps so the data flow stays easy to inspect and rerun.

1. Bootstrap the city and source datasets.

2. Import Chicago community areas into the neighborhoods table.

3. Import crime incidents in batches via Socrata using checkpoint-aware upserts.

4. Refresh yearly and monthly aggregate tables used by the SEO pages.

How to read the data

CrimeAtlas presents reported incidents as published by the source and does not infer broader safety conditions from the counts alone.

CrimeAtlas summarizes reported incidents and official classifications as published by the source. It does not attempt to infer unreported crime or safety conditions beyond the dataset.

Citywide, neighborhood, and crime-type pages use aggregate tables refreshed offline so page generation stays fast and consistent.

Incident lists and the map are intentionally constrained to recent rows to keep payload size manageable.

Important context

Methodology and caveats

These pages summarize reported public records. Use source notes and methodology before drawing comparisons.

Reported crime data can lag the real world and may exclude the most recent days.

Case classifications can change after additional investigation or administrative review.

Map coordinates are approximate because the source data is redacted to the block level.

Counts on this site summarize reported incidents and should not be treated as a complete measure of safety.

Read the methodology page for pipeline details and the about page for source notes.

Sources

Official data sources

CrimeAtlas is built from public datasets published by city agencies. Each page links back to the underlying source and the latest import timestamp.

About the data
socrata dataset

Chicago community areas

Publisher: City of Chicago

Dataset ID: igwz-8jzy

Refresh cadence: Updated as needed

Last imported: March 12, 2026

socrata dataset

Chicago crime incidents

Publisher: Chicago Police Department

Dataset ID: ijzp-q8t2

Refresh cadence: Daily

Last imported: March 12, 2026

socrata file

Chicago neighborhood boundaries reference

Publisher: City of Chicago

Dataset ID: 9wp7-iasj

Refresh cadence: Legacy file dataset

Last imported: Not available

Explore more

Related pages

Move between citywide, map, category, neighborhood, and year-specific routes with descriptive internal links.

FAQ

Frequently asked questions

Short answers about data coverage, definitions, and how to read these pages.

Does CrimeAtlas calculate pages from raw incidents on every request?

No. The app imports raw incidents into normalized tables and then refreshes monthly and yearly aggregate tables used by the core SEO pages.

Can older records change after import?

Yes. Source systems can revise classifications or other attributes, so the importer is idempotent and designed to handle updates cleanly.