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.
➜ 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
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.
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
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.
Prices exclude VAT.
1 credit is one crime-data call. An insights report is 100.
Calls per 10 seconds rise with tier, with a burst of 10 at every tier.
Unused credits roll over while you're subscribed. Lapse and your balance freezes; resubscribe and it thaws.
Every key on your account - secret and public - draws on the same balance.
api.crime.uk · v1
Country, region, city, postcode, or coordinate — same request pattern, same response shape. Filter by category anywhere with ?crimeTypes=.
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
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
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
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.
➜ 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
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 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.
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 extractSelf-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.
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.
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.
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.
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.
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.
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