Check the setup
- Python 3.10 or newer
- A notebook environment such as Jupyter or Google Colab
- An internet connection
Monthly street-level crime and outcome records for building neighbourhood safety monitors in England, Wales, and Northern Ireland.
From source to product signal
The Police API returns street-level crimes for a point or custom area. Start with one coordinate pair and the most recently published month. Locations are snapped to anonymised map points, reporting coverage varies by force, and counts are not official statistics.
Install the packages, then run the notebook cell.
python -m pip install pandas requests
import pandas as pd
import requests
response = requests.get(
"https://data.police.uk/api/crimes-street/all-crime",
params={"lat": 51.5074, "lng": -0.1278},
timeout=30,
)
response.raise_for_status()
crimes = pd.json_normalize(response.json())
print(crimes[["id", "category", "month", "location.street.name"]].head(20))
print(crimes["category"].value_counts().head())Test a useful signal
Test whether category counts can power a neighbourhood safety snapshot.
data.police.uk is a government source. Last verified 2026-08-18. Temporal coverage: 2014-present street-level records.