Data source

All data displayed on CrimeMapsUK is sourced from data.police.uk, the official open-data platform maintained by the Home Office. The data is published under the Open Government Licence v3.0.

We collect two types of record:

We do not create, modify, or interpret police records. We do not blend in third-party datasets, composite scores, or AI-generated analysis. The service reshapes published data so it can be searched, summarised, and compared — nothing more.

How data is collected

Data is ingested from the data.police.uk API using an automated pipeline. The pipeline runs for each monthly release:

  1. The list of active police forces is fetched from the API.
  2. For each force, stop-and-search records are downloaded by force identifier. Street-crime records are downloaded by geographic area using polygon coordinates that cover each force's jurisdiction.
  3. Larger force areas (for example, the Metropolitan Police area and Surrey) are split into smaller geographic tiles to avoid exceeding the API's response limits.
  4. Requests are rate-limited to 15 per second, with automatic retry and exponential backoff for failed or throttled requests.
  5. Records are inserted into the database using PostgreSQL bulk operations. Street crime data for a given month is replaced atomically — the existing month's records are deleted and new records are inserted within a single database transaction, so a failed import cannot leave the table empty.

Deduplication

Each record is assigned a SHA-256 hash derived from all of its data fields. This hash is used to identify duplicate records. If the same record appears in overlapping API responses (for example, where force area tiles overlap), the duplicate is detected and only one copy is stored.

For stop-and-search data, a unique constraint on the hash column prevents duplicate insertion at the database level. For street crime data, each monthly import replaces the full month, so duplicates within a month are naturally eliminated.

Location data

Coordinates published by data.police.uk are not exact incident locations. Before publication, the Home Office snaps each coordinate to a nearby anonymous map point — typically the centre of a street or a local landmark. This means that multiple incidents may share the same published coordinate, and no individual address can be identified from the data.

Coordinates are stored using the WGS 84 coordinate reference system (SRID 4326). Where PostGIS is available, spatial indexes and geography columns are used for efficient radius and bounding-box queries. Where PostGIS is not available, the service falls back to bounding-box filtering with haversine distance calculations in Python.

Maps and hex grid summarisation

The interactive maps display crime and stop-and-search density using a hexagonal grid rather than showing individual incident markers. This approach protects the approximate nature of the location data and provides a clearer picture of geographic patterns.

Hex grids are pre-computed using the PostGIS ST_HexagonGrid function at two zoom levels:

For each hexagon, incidents are classified by their published outcome. Street crime outcomes are grouped into police-recorded action (such as a charge, caution, or penalty notice), local resolution, and other or unresolved (such as no suspect identified or investigation incomplete). Stop-and-search outcomes are grouped into find or arrest, other action taken, and nothing found.

Hex summaries are rebuilt automatically after each monthly data ingest.

Dashboard calculations

Dashboards present grouped totals, rates, and comparisons calculated directly from stored records. Available filters vary by dashboard but typically include police force, time period, crime category, and age range.

All dashboard queries are cached for 15 minutes. This means that the figures shown may lag slightly behind the most recent database update, but will never be more than 15 minutes out of date during normal operation.

Neighbourhood reports

Neighbourhood PDF reports are scoped to a postcode and a fixed search radius. The report process works as follows:

  1. The postcode is geocoded to a latitude and longitude representing the postcode centroid.
  2. A search radius of 0.5 kilometres is applied. All street crime records with published coordinates within this radius are selected. The radius query uses PostGIS ST_DWithin on geography columns for accurate distance measurement, with a bounding-box pre-filter for efficiency.
  3. The search radius is fixed at 0.5 km for every neighbourhood report. The time window depends on the product: 12 months for the 12-month report, or 60 months for the 5-year report (including prepaid pack vouchers).
  4. Selected crimes are aggregated by category, month, outcome status, and location. The report includes a breakdown of crime types, a month-by-month trend, the most frequently occurring locations, and an outcome resolution rate.
  5. Local crime category shares are compared against the wider police force area and against England and Wales as a whole. The national benchmark is built from the published dataset itself: national aggregates of all published incidents for the same month window as the report.
  6. The report includes a static density map showing where published incidents are concentrated within the search radius, with the 0.5 km boundary drawn on the map. It does not use exact-looking incident pins.

Every report documents its postcode, search radius, time window, and the comparison method used, so readers can assess exactly what area and period the figures cover. For a walkthrough, see How to read a neighbourhood report.

National comparison method

National comparisons appear in neighbourhood reports, where the local area is benchmarked against England and Wales. The benchmark uses the published dataset itself: national aggregates of all published incidents for the same month window as the report. If no same-window national aggregates are available, the report omits the England and Wales comparison and says so — we do not substitute figures from another source.

Category-mix benchmarking compares the share of each crime type in the local area against the share nationally. For example, if violent crime makes up 35% of local incidents but 28% nationally, that difference is reported as a percentage-point deviation. This method compares the composition of crime rather than the absolute volume, because population data is not available at the small-area level needed for per-capita rates.

Police-area comparison follows the same method but uses the full set of published incidents for the relevant constabulary in the same time window as the baseline.

Important limitations

The source data has known limitations. We document these rather than hiding them.

Force area pages

Indexable place pages such as Crime in London use the same monthly force rollups as the dashboards. The public URL may use a familiar city name, but the figures remain police-force totals — not city-council or postcode boundaries. Browse the full list at crime by police force area.

Open data and licensing

The policing data used by this service is published by the Home Office under the Open Government Licence v3.0. National comparison figures are derived from the same published dataset; no other data source is used.

For shorter answers to common questions, see the FAQ. Guides for buyers include how to check crime rates before buying a house and crime checks vs conveyancing searches. If you believe something on this page is inaccurate, please get in touch.