API Specification·Web Service Reference

SpotCrime API Specification

The complete reference for the SpotCrime crime-data web service: endpoints, parameters, crime types, and JSON response shapes. Two simple GET endpoints return real-time, geocoded incident data for any point in the United States.

Base URL https://api.spotcrime.comFormat JSON / JSONPLast updated October 21, 2023
Get an API Key
Endpoints
2
Crime search · Crime detail
Method
GET
Simple HTTPS requests
Response
JSON
Optional JSONP callback
Auth
API key
Per-customer · static-IP bound
Data window
90 days
Rolling · 6mo on Pro annual
Getting started

Authentication

Every request is authenticated with the API key SpotCrime issues to you, passed as the key query parameter. Keys are tied to a single customer — keep them secret, never embed them in client-side code, and rotate immediately if one is exposed.

Static IP required (all plans)

Every API key is bound to the static IP address(es) you register with SpotCrime. Requests from any other IP are rejected. You must provide at least one static IP before your key is issued; you can register more than one and update them by contacting us. This applies to every plan.

Need a key?

Request access at spotcrime.io/request-access. Usage terms are governed by the API License Agreement.

Important

Data Coverage & Availability

The SpotCrime API serves recent incident data. The coverage window is the most important thing to understand before you build.

Standard API
90 days

Both endpoints return incidents from a rolling 90-day window. Included on the Developer and Pro (monthly) plans.

Pro annual
6 months

The annual Pro plan extends the lookback to a 6-month historical window.

Enterprise · archives
AWS S3

Data beyond 6 months, deeper datasets, and bulk historical archives are delivered separately in all standard formats via AWS S3.

What this means for your queries

The sinceparameter narrows the window but cannot reach beyond your plan’s coverage: requests for dates older than the window return no results rather than an error. If you need a longer lookback (6 months on Pro annual) or a bulk archive, talk to us about Enterprise.

Endpoint 2

Specific Crime Detail

Returns the full record for a single incident, including its narrative description. Look up a crime by the cdid returned in any search result.

GET/crimes/{cdid}.json

Parameters

ParameterRequiredPermitted valuesDescription
cdid
integer
RequiredA crime detail ID (cdid)The unique crime ID, taken from the cdid field of a search result. Provided in the request path, not the query string.
key
string
RequiredYour SpotCrime API keyThe API key issued to you by SpotCrime.

Sample request

https://api.spotcrime.com/crimes/23923102.json?key=YOUR_KEY

Sample response

Formatted for readability — production output omits whitespace.

{
  "type": "Assault",
  "address": "8XX N. CAROLINE STREET",
  "lat": 39.2993153,
  "lon": -76.5976891,
  "cdid": 23923102,
  "date": "10/17/11 09:00 PM",
  "link": "https://spotcrime.com/crime/23923102-88a90eee2890388cf8c679b4519c4619",
  "description": "Reported assault. Officers responded to the location and a report was filed. See the linked incident for the agency's public narrative."
}
Reference

Response Fields

Every incident object can contain the following fields. The description field is returned only by the crime detail endpoint.

FieldTypeDescription
typestringCrime category, e.g. "Assault", "Robbery", "Theft".
addressstringBlock-level street address of the incident.
latnumberLatitude of the incident.
lonnumberLongitude of the incident.
cdidintegerUnique crime detail ID. Pass it to the detail endpoint.
linkstring (URL)Permalink to the incident on spotcrime.com.
datestringLocal report date & time, formatted MM/DD/YY HH:MM AM/PM.
descriptionstringNarrative description of the incident. Returned by the detail endpoint only.
Guidance

Notes & Best Practices

Keep the radius small

Larger radii scan more area and respond more slowly. Stay at 0.01° or below where possible; 1 mile is roughly 0.01448°.

Always set since

It’s optional but strongly recommended. Bounding results to a recent date keeps responses fast and relevant.

Page with max_records

Defaults to 50, caps at 500. Combine with sort_by and sort_order to control which records you receive.

Use callback for JSONP

Supplying callback wraps the JSON in a JavaScript function for legacy cross-origin browser use. Prefer a server-side request with CORS otherwise.

Ready to build?

Request an API key and start pulling real-time crime data across 22,000+ U.S. cities. Looking for the interactive developer guide with code samples? See the full documentation.

SpotCrime API Specification · Base URL https://api.spotcrime.com · Last updated October 21, 2023 · © 2026 SpotCrime