Product teams searching for a "crime data API" usually discover they are choosing between two quite different things. One returns incidents: individual reported events with a type, a time, and a location. The other returns a score: a summary of those events for an area, already compared with everywhere else. Both are useful. They are not interchangeable.
What an incident API gives you
A raw feed hands you the events. You get the granularity to draw a map, list the last ten reports near an address, or run your own analysis. You also inherit all the work: deciding which offence types count, handling duplicate reports from multiple sources, normalizing type labels across hundreds of agencies, geocoding, and choosing a window and a baseline so two areas can be compared. That is a data engineering project, and it has to be maintained as agencies change formats.
Choose an incident API when the product is the incidents: a map, an alert service, a research tool.
What a score API gives you
A score API does that work for you and returns one comparable number per area, plus the context to read it. CrimeScore's published_score tool returns, for any ZIP or county:
- percentile: share of scored areas with lower crime intensity
- national_rank and state_rank: the same comparison as a position
- score_index: the underlying intensity value
- month: the snapshot it belongs to
- model_hash: the model version, so results are reproducible
Choose a score API when the product needs a consistent, explainable signal inside a decision or a display: a badge on a listing, a filter in a search, a field in a model, an answer from an assistant.
The questions that separate vendors
- What is the source, and how deep is it? Ask how many jurisdictions, how many years, and how incidents are collected. CrimeScore is built on SpotCrime's collection, which has run since 2007 and holds more than 60 million incidents.
- What is the comparison? A number without a stated baseline is decoration. Insist on a percentile or rank against a named population.
- Is it dated and versioned? Every score should carry the month it describes and an identifier for the model that produced it. Without both, you cannot reproduce a result or explain a change.
- Is there history? A score you can trend is worth more than a score you cannot.
- What does it deliberately exclude? CrimeScore uses no demographic, economic, or housing variables. The model sees incidents, places, and dates. Ask any vendor what their model sees, and be wary of one that cannot say.
- How is access controlled? Bearer tokens that can be revoked individually, rate limits sized to your use, and a read-only surface are the baseline.
The integration difference
An incident API is a REST surface you call and post-process. CrimeScore is exposed as an MCP connector as well: one tool, published_score, that any Model Context Protocol client can call, which means an AI assistant can look up a score in plain English with no code on your side. The same endpoint answers a plain JSON-RPC request from a script. The developer docs show both in a few lines.
Where CrimeScore fits
If you need to show what happened near a place, SpotCrime's map and alerts are the incident layer. If you need to state how a place compares, in a product, a model, or an assistant, that is the score. Many teams use both: the score to filter and rank, the incidents to explain. Request a token and we will benchmark the score against your own ZIP list.