Crime Data API

Crime data API for real estate and location products

Resolve addresses, look up ZIP and coordinate-based Safety Scores, explain model factors, retrieve bounded nearby incidents, and embed matching safety maps through one product-ready API.

crime data APIcrime APIcrime data for developerscrime data by addressneighborhood crime data

Browse-only API reference

Integrate one consistent Safety Score contract

This page is the readable product reference. Use the playground when you are ready to add a key and run a live request.

Production base URL https://api.crimescore.io/v1
Development base URL https://api.dev.crimescore.io/v1

Authentication

Send your secret key in the request header

Score and incident routes use the x-api-key header. Keep secret keys on your server. Use a publishable key only for the hosted embed workflow.

curl "https://api.crimescore.io/v1/score?zip=10001" \
  -H "x-api-key: YOUR_SECRET_KEY"
JSONREST responses use JSON with snake_case field names.
Higher is saferSafety Scores run from 0 to 100; A is best and F is worst.
One geographySend coordinates or a ZIP/ZCTA query, never both.

Endpoints

Choose the smallest route for the product job

5 live routes and surfaces. Everything documented below is available today. Compare CrimeScore with SpotCrime.

GET /v1/score Starter, Pro, Enterprise

Safety Score by coordinate or ZIP

Use the score endpoint when your product needs a higher-is-safer 0-100 Safety Score, letter grade, resolved geography, and component scores.

  • lat + lng or zip
  • No mixed coordinate and ZIP queries

Returns the overall Safety Score, grade, component scores, resolved geography, and release metadata.

GET /v1/score?lat=40.7128&lng=-74.0060

{
  "geoid": "360610031002",
  "resolved": {
    "lat": 40.7128,
    "lng": -74.006,
    "state": "NY",
    "county_fips": "061"
  },
  "safety_score": 28,
  "safety_grade": "D",
  "components": {
    "violent_crime": 24.8,
    "property_crime": 37.9,
    "disorder": 29.2,
    "frequency": 31.5
  },
  "data": {
    "census_vintage": "2024",
    "model_version": "2.0"
  }
}
GET /v1/score/details Starter, Pro, Enterprise

Contributor details by component

Use score details on Starter and higher tiers when your product needs the available contributor explanation for the overall score or a selected component.

  • lat + lng or zip
  • component is optional

Adds the eligible contributors for the overall score or one selected component.

GET /v1/score/details?lat=40.7128&lng=-74.0060&component=property_crime

{
  "geoid": "360610031002",
  "resolved": {
    "lat": 40.7128,
    "lng": -74.006,
    "state": "NY",
    "county_fips": "061"
  },
  "component": "property_crime",
  "safety_score": 37.9,
  "safety_grade": "D",
  "contributors": [
    {
      "label": "High rental vacancy rate",
      "direction": "lowers_safety_score",
      "impact": "high"
    }
  ],
  "data": {
    "census_vintage": "2024",
    "model_version": "2.0"
  }
}
GET /v1/incidents/nearby Pro and Enterprise

Bounded incidents near a point

Use nearby incidents when a listing, map click, address lookup, or internal workflow needs a short-term local pulse beside the score.

  • lat + lng
  • radius_m
  • hours

Returns bounded recent incident context; it does not recompute or replace the modeled Safety Score.

GET /v1/incidents/nearby?lat=40.7128&lng=-74.0060&radius_m=5000&hours=24

{
  "capturedAt": "2026-06-23T16:00:00.000Z",
  "center": {
    "lat": 40.7128,
    "lng": -74.006
  },
  "radius_m": 5000,
  "hours": 24,
  "limit": 25,
  "count": 3,
  "scannedCells": 4,
  "incidents": [
    {
      "id": "crimescore_9f3a2b7c1d4e5f60718293ab",
      "label": "Theft",
      "categories": ["property"],
      "latitude": 40.7142,
      "longitude": -74.0028,
      "reportedAt": "2026-06-23T13:42:00Z",
      "distance_m": 384
    }
  ]
}
GET /v1/geocode Public helper

Address to coordinate helper

Use geocode when a public search box or app workflow needs to resolve a US address before centering the map or calling the score API.

  • address

Resolves a US address before a coordinate score or map request. It does not return a Safety Score.

GET /v1/geocode?address=1600%20Pennsylvania%20Ave%20NW%20Washington%20DC

{
  "query": "1600 Pennsylvania Ave NW Washington DC",
  "matched": true,
  "lat": 38.8977,
  "lng": -77.0365,
  "matchedAddress": "1600 PENNSYLVANIA AVE NW, WASHINGTON, DC, 20500"
}
GET /embed Starter, Pro, Enterprise

Embeddable safety map

Use the hosted embed when a customer-facing page needs the map layer without rebuilding the CrimeScore map stack.

  • publishable key
  • lat + lng or zip
  • theme + layer

Loads the embeddable map surface. Starter embeds retain CrimeScore attribution.

<iframe
  src="https://crimescore.io/embed?key=cs_pub_...&lat=40.7128&lng=-74.0060&zoom=12&theme=dark"
  width="100%"
  height="520"
></iframe>

Response handling

Use standard HTTP status outcomes

200Request completed successfully.
400Parameters are missing, mixed, or invalid.
401The API key is missing or invalid.
403The organization or plan cannot use this route.
404The route or requested coverage is unavailable.
500An unexpected service error occurred.

Start with an account

Review the contract before beginning a trial

Account creation is payment-free. Production API access begins with a Starter trial or paid plan.

Create account

Why raw crime data is not enough

Most crime APIs start with incident rows. That can help if you are building a public blotter, but it puts a lot of cleanup work on your team. Categories vary by city, update timing is uneven, and population density can make busy places look worse without context.

CrimeScore is built for teams that need a product-ready signal. You send coordinates, we resolve the Census block group, and the API returns a higher-is-safer Safety Score with the response detail available on your plan.

What the API returns

The score endpoint returns a 0 to 100 Safety Score, a letter grade, component scores, resolved location metadata, and model data. Starter and higher tiers can call score details for contributor explanations.

The nearby incidents endpoint is separate and gives bounded local context around a coordinate without turning your app into a raw public feed.

  • Address and coordinate based scoring
  • Public geocode helper for US address search
  • Census block group level resolution
  • Overall score plus violent crime, property crime, disorder, and frequency components
  • Nearby incident context
  • Embeddable crime map layers for customer-facing pages

Built for real product workflows

CrimeScore is useful when crime data is one part of a larger user decision, like comparing listings, reviewing markets, enriching location profiles, or giving customers a safer way to understand neighborhood context.

The API is not designed for predictive policing, individual screening, or any workflow that makes a legally adverse decision about a specific person based on their address.

FAQ

Common questions

Is CrimeScore a raw crime data API?

CrimeScore provides normalized Safety Scores and bounded recent activity context. It is not a bulk raw incident export feed.

Can I query by latitude and longitude?

Yes. The score endpoint accepts latitude and longitude, resolves the location, and returns the matching neighborhood score where coverage is available.

Can I use CrimeScore in a real estate product?

Yes. Real estate and PropTech platforms are core use cases, as long as the score is used for location context and not prohibited individual-level decisions.