CS
CrimeScore

Methodology

How a police report becomes a CrimeScore.

CrimeScore is a monthly index of reported crime intensity for US ZIP codes and counties. This page walks through where the data comes from, what the model does with it, how to read the outputs, and where the whole approach has limits. It is written for people who will rely on the numbers.

Current publication: July 2026 · 30 ZIP codes and 0 counties scored.

1. The data: SpotCrime

Every score starts with a police incident report. SpotCrime has collected these since 2007 from police departments, sheriff's offices, and public safety agencies across the United States. Reports arrive as blotters, daily logs, open-data feeds, and press releases, and in every format those come in. SpotCrime normalises each one into a record with a type, a time, and a location, and geocodes it to a point. The result is a dataset of more than 60 million incidents that grows every day.

The types are the ones the public recognises: assault, robbery, burglary, theft, vehicle theft, vandalism, arson, shooting, and arrest. Each record keeps its source, so an incident can always be traced back to the agency that reported it.

What is deliberately not in the data

No demographic, economic, or housing variables of any kind. CrimeScore does not know, and does not use, who lives in an area. The model sees incidents, places, and dates. That is a design choice, made so the score can be explained in one sentence and so it cannot become a proxy for the people who live somewhere.

2. From incidents to an index

Each month, SpotCrime aggregates the incidents that fall inside every ZIP Code Tabulation Area (ZCTA) and county over a recent window. Incident types are weighted by severity, so a robbery counts for more than a vandalism report, and the totals are normalised for area so a large rural ZIP and a dense urban one can be compared. Because crime does not stop at a ZIP line, a ZIP's index also reflects the ZIPs that touch it: calmer neighbours pull it down, busier ones pull it up. The output is the score index, a positive number where higher means more reported crime intensity.

The exact weights and window are proprietary and are versioned. Every published score carries a model_hash, a fingerprint of the model version that produced it. Two scores with the same hash were produced the same way, so they can be compared. If the methodology changes, the hash changes with it.

3. From index to percentile and rank

The index is hard to read on its own, so every scored ZIP is ranked against every other scored ZIP in the country. Its percentile is the share of scored ZIPs with a lower index: a ZIP at the 99th percentile has more reported crime than 99% of them. National rank is the same idea as a position, where #1 is the highest-crime ZIP. State rank repeats the ranking within the state. Counties are ranked against counties the same way.

Percentiles map to six fixed levels so a page can say something in words: Low under 25, Below Average to 50, Above Average to 75, High to 90, Very High to 99, and Extreme at 99 and above. The cutoffs never move, so a ZIP's level only changes when its own standing does.

4. Monthly snapshots

Scores are published once a month and stamped with their snapshot month. Earlier months are kept, so a ZIP page shows how its percentile has moved. A month-to-month change of a few tenths of a point is noise; a sustained move over several months is a trend worth noticing.

5. Coverage

A ZIP or county gets a score only when there is enough incident data behind it. Roughly 41,700 ZIP codes qualify. When an area is missing, the connector returns “not found”. That means SpotCrime does not yet have enough published police data for it, and nothing more. It is never a statement that the area is safe.

The public preview on this site covers Baltimore ZIP codes 21201 through 21231 without a token. Full coverage is available through the MCP connector with an API token.

6. Data quality: what SpotCrime does that others cannot

Anyone can download a city's open-data crime file. The hard part is doing it for hundreds of jurisdictions, every day, for nearly two decades, and making the records comparable. That is the work behind the score.

  • Source diversity. Open-data portals, agency websites, PDF blotters, and direct feeds are all normalised to one schema. A model built only on the cities with tidy APIs would score the tidy cities and miss everyone else.
  • Deduplication. The same incident often appears in more than one source. Records are matched on time, place, and type so it counts once.
  • Geocoding with judgement. Agencies report locations as block addresses, intersections, or landmarks. Each is resolved to a point and checked against the agency's jurisdiction so a bad geocode does not land an incident in the wrong ZIP.
  • Type classification. Hundreds of local offence labels are mapped to a small, stable set of types so a “burglary” in Baltimore and one in Phoenix mean the same thing to the model.
  • Continuity. Feeds break, portals move, and agencies change formats. SpotCrime maintains the collectors so the monthly series stays comparable over time.

7. Limits, stated plainly

  • It measures reported crime. Unreported incidents are invisible, and reporting rates differ by place and by offence type.
  • It depends on what agencies publish. A department that releases less, or later, produces a lower-looking area. Coverage gaps are a property of the source, not a finding about the neighbourhood.
  • It describes areas, not people. A ZIP score says nothing about any resident, visitor, or property owner, and must not be used as if it did.
  • It is not a forecast. The score summarises the recent past. It does not predict what will happen next month or to anyone in particular.
  • ZIPs are approximations. Scores use Census ZCTAs, which follow the US Census Bureau's boundaries rather than USPS delivery routes. City assignments on this site use the place holding most of a ZCTA's land area.
  • Decisions that affect people carry their own law. Housing, lending, insurance, and employment decisions are governed by fair-housing, fair-lending, and anti-discrimination rules. The score is an input; it is never a substitute for the judgement those laws require. See the Terms.

8. Reading a page in thirty seconds

  1. Look at the level first. Extreme and Very High are the top 10%; Low is the bottom quarter.
  2. Read the percentile as “more reported crime than X% of scored ZIPs”.
  3. Check the state rank against how many ZIPs the state has; #2 of 30 and #2 of 1,800 are different stories.
  4. Scan the monthly history for a trend, not a single month.
  5. Compare with the touching or nearby ZIPs. A ZIP far above its neighbours is a local hotspot; one in line with them is a regional pattern.

Questions about the data: feedback@spotcrime.com. For integration details see the developer docs.