A read-only JSON API over the CrimeScope UK aggregated dataset: media-reported incidents and police appeals, fatal road traffic collisions from DfT STATS19, and area statistics. Free developer keys include 1,000 requests per calendar month.
Authentication
Send your key as a bearer token on every request. Keys are shown once when created and stored only as a hash.
curl "https://crimescope.uk/api/public/v1/incidents?lat=55.8642&lng=-4.2518&radius=10" \
-H "Authorization: Bearer csk_live_..."Endpoints
GET /api/public/v1/incidents
Media-reported incidents and police appeals, deduplicated across sources.
Params — lat, lng, radius (miles, max 50), from, to (YYYY-MM-DD), category, limit, offset
GET /api/public/v1/collisions
Fatal road traffic collisions from DfT STATS19.
Params — lat, lng, radius, from, to, limit, offset
GET /api/public/v1/stats
Aggregated counts by crime category and by month for an area.
Params — lat, lng, radius, from, to
GET /api/public/v1
Service discovery document (no key required).
Params — —
Example response
{
"count": 2,
"query": { "lat": 55.8642, "lng": -4.2518, "radiusMiles": 10 },
"incidents": [
{
"id": "…",
"category": "violent-crime",
"summary": "Man seriously injured in city-centre assault",
"locality": "Glasgow",
"lat": 55.8612, "lng": -4.2500,
"occurredOn": "2026-08-21",
"status": "unsolved",
"sources": [{ "url": "https://…", "name": "Police Scotland" }]
}
]
}Rate limits & errors
X-RateLimit-LimitandX-RateLimit-Remainingare returned on every authenticated response.401— missing, invalid or revoked key.429— monthly quota exhausted.- Responses are cacheable for 5 minutes.
Attribution & terms
Media-layer records are aggregated from published police appeals and news reporting. They are reports, not official recorded-crime statistics, and may be incomplete or superseded. Collision data is derived from Department for Transport STATS19 under the Open Government Licence. Attribute CrimeScope UK when republishing, and do not present unverified reports as findings of guilt.