Crime Data API and MCP Server

Every map, factbox and report on this site is drawn from one dataset. The API serves that dataset directly: UK crime statistics as JSON over HTTPS. Use a secret key from your own server, or a public key straight from your website's JavaScript. If you can curl, you already know how to use it.

Coverage
England, Wales & NI
Postcodes
~1.7M live
Updated
Monthly
Format
JSON / HTTPS

 

~ 200 OK
  curl https://api.crime.uk/v1/crime-data/postcode/SW1A1AA \
     -H "Authorization: Bearer $CRIME_UK_SECRET_KEY"

{
  "error":        false,
  "errorMessage": "",
  "content": {
    "metadata": {
      "latestMonthKey":  "2026-04",
      "latestMonthName": "April",
      "latestYear":      "2026"
    },
    "walkingDistances": {
      "fiveMinutes":    { "latestRollingYear": { … } },
      "tenMinutes":     { "latestRollingYear": { … } },
      "fifteenMinutes": { "latestRollingYear": { … } }
    }
  }
}
  _

Authentication

Ship to the browser without exposing secrets

Publishable keys are safe for client-side code; secret keys stay on your servers. Both share one credit balance, managed from your API keys page page.

Secret key

cr_sk_…

For code running on your own servers. Send it as an Authorization: Bearer header. It is never accepted in a query string, and never gets a CORS header - so even if one leaks into a web page, a browser can't read the response.

Public key

cr_pk_…

For JavaScript in a web page. Put it in the ?key= query string. You choose which websites may use it; until you add one it works nowhere but localhost and 127.0.0.1, on any port.

app.js 200 OK
const res = await fetch(
  'https://api.crime.uk/v1/crime-data/postcode/SW1A1AA?key=cr_pk_…'
)
const { content } = await res.json()

A public key is not a secret. Anyone who views your page source can read it, and the origin list only constrains browsers - anything else can use the key regardless. It limits casual misuse; it doesn't protect your balance from someone determined. Revoking a key is immediate.

API credits

Spend your credits your way

A single monthly allowance covers every endpoint and every key on your account - no per-endpoint quotas to juggle. Rate limits increase as you move up tiers.

Starter For integrating and light production From £28/mo
Growth Most common For products with steady traffic From £144/mo
Scale For platforms and data pipelines From £384/mo
Selected

Prices exclude VAT.

What a credit buys

1 credit is one crime-data call. An insights report is 100.

Rate limits

Calls per 10 seconds rise with tier, with a burst of 10 at every tier.

Rollover

Unused credits roll over while you're subscribed. Lapse and your balance freezes; resubscribe and it thaws.

One balance

Every key on your account - secret and public - draws on the same balance.

api.crime.uk · v1

A consistent envelope at every scale

Country, region, city, postcode, or coordinate — same request pattern, same response shape. Filter by category anywhere with ?crimeTypes=.

Places

GET/v1/places/countries

England, Wales and Northern Ireland - the national baselines.

3 countries

GET/v1/places/counties-regions

ONS regions, ceremonial counties, preserved Welsh counties, NI council areas.

9 + 88

GET/v1/places/towns-cities/{countyRegionSlug}

Every named town and city, scoped to its county or region.

~3,800 named

Crime data

GET/v1/crime-data/place/{slug}

One slug, any granularity - england and haywards-heath return the same shape.

country → town

GET/v1/crime-data/place/{slug}/{subSlug}

Qualified slugs for neighbourhoods and ambiguous names - london/notting-hill.

nested

GET/v1/crime-data/postcode/{postcode}

Walking-distance crime rates around any live UK postcode.

~1.7M live

GET/v1/crime-data/coordinates/{latitude}/{longitude}

The same, computed around any WGS84 point - address-level if you have one.

anywhere

Reference

GET/v1/places/police-forces

Every Home Office force, flagged where data coverage is partial.

all UK forces

GET/v1/crime-types/list

Every published category with full names, short names, slugs and abbreviations.

28 categories

api.crime.uk · mcp

Give your agent direct access via MCP

The same crime data, served over the Model Context Protocol. Connect once and Claude, ChatGPT or Gemini can resolve postcodes and pull crime summaries mid-conversation - no glue code, no key pasting.

Authorisation is OAuth 2.1: you sign in via the browser, tokens never touch a prompt, and each tool call draws on the same credit balance as the REST API.

~ https://api.crime.uk/mcp
  claude mcp add --transport http crime-uk https://api.crime.uk/mcp

# ChatGPT · Settings → Connectors → Add:
#   https://api.crime.uk/mcp

  gemini mcp add --transport http crime-uk https://api.crime.uk/mcp

The tools wrap the same code paths as the endpoints above: lookup_postcode, get_postcode_crime_summary and get_coordinate_crime_summary.

The signature feature

Crime rates at walking distance

Every postcode and coordinate response includes the crime rate within a five-, ten- and fifteen-minute walk of the point - the rolling year, computed around the location itself rather than snapped to whichever administrative boundary happens to contain it.

It answers the question people actually ask - what is it like around here? - and it's the same calculation behind this site's postcode pages and reports.

fiveMinutes

Your street and the next few - the immediate surroundings.

tenMinutes

The neighbourhood - school runs, corner shops, the walk home.

fifteenMinutes

The wider area - the high street, the station, the park.

Provenance

The same numbers as the site

The dataset is built from the monthly police-force open-data releases, loaded as published - typically about two months behind the calendar. The API reads the same tables as the public maps, factboxes and reports, so a number you see on this site is a number you can fetch.

Where the source data has gaps, we say so rather than smooth over it. Forces with partial coverage are flagged in the police-forces resource, and every response carries a metadata block naming the exact month you're reading.

Police data - what's in right now

How this works →
Data update
07 Jun 2026 — including police data up to Apr 2026.
Delay Gloucestershire Police — last submitted Jan 2026
Delay Gwent Police — last submitted Aug 2025
Data gap Greater Manchester Police — unavailable since 2019 (ongoing computer-system issues prevent submission to all analysts, ourselves included).
Data gap Police Scotland — unavailable due to a lack of granular data.

Need files, not endpoints?

We also cut custom extracts: send us your boundaries and we'll return crime statistics aggregated to them, with history back to 2013. Typically delivered within ten business days of payment.

Ask about an extract
Boundaries in
GeoJSON · Shapefile
TopoJSON · WKT
Data out
CSV · TSV
JSON · XML
History
Back to 2013
Turnaround
~10 business days

Frequently asked questions

How do I get an API key?

Self-serve: create a key on your account's API keys page, pick a tier on this page, and you can be making calls in minutes. For custom extracts, boundaries or anything unusual, your point of contact is Thomas Buck, our Technical Director - the person who built the API.

What does it cost?

Monthly credit subscriptions, from £28 to £1,300 a month - the full tier table is on this page. Unused credits roll over while you're subscribed. Prices exclude VAT, which is added at the current rate.

Can I publish the data on a public website?

As a general rule, no - our crime data can't appear on publicly-accessible websites. We do consider exceptions case by case, so if that's your plan, raise it first and we'll talk it through.

What formats does the API return?

The live API speaks JSON, over HTTPS, with a consistent envelope on every resource. If you need CSV, TSV or XML, that's what custom extracts are for.

How do custom geographic boundaries work?

Send us boundaries as GeoJSON, shapefile, TopoJSON or WKT and we'll aggregate crime statistics to them - your sales territories, catchment areas, or any other polygon you care about.

How fresh is the data?

Police forces publish monthly, roughly two months behind the calendar, and we load each release as it lands. Every API response includes a metadata block naming the latest month, so your integration never has to guess.

Start with the docs, or start with us

The reference at api.crime.uk/scalar shows every resource with live examples. When you're ready for a key - or you'd rather just describe the problem - get in touch.

Police data latest update: 07 Jun 2026