UK Police Street-Level Crime Data Scraper
Pricing
Pay per event
UK Police Street-Level Crime Data Scraper
Export UK Police street-level crime records for up to 5 points and a 6-month window: category, month, street name, coordinates, outcome status, and crime id. Keyless data.police.uk API, no auth, no proxy needed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
Quick answer: The UK Police Street-Level Crime Data Scraper exports UK Police street-level crime records — category, month, street name, coordinates, outcome status, and crime id — for up to 5 points and a bounded 6-month range, from the public
data.police.ukAPI. Pricing is pay-per-result — $2.70 per 1 000 rows, no subscription, no card required to try it.
🎯 What this scrapes
data.police.uk is the UK government's keyless street-level crime API, but a single request downloads an entire month's raw crime file for a point before you can filter it. This Actor queries the public API for up to 5 points and a bounded month range, trims every record to a flat lead-ready row — category, month, street name, coordinates, outcome status, crime id — and stops once your result cap is reached. No API key, no login, no raw-payload cleanup.
🔥 What we handle for you
- 🔁 Retries with exponential backoff on
408/429/5xxand network errors — up to 5 attempts,Retry-Afterhonoured. - 🧊 Clean, typed dataset rows — Pydantic-validated, no raw nested payload,
outcome_statusandpersistent_idnormalised tonullwhen empty. - 🧱 404s handled correctly — a month too recent to be published yet returns zero rows for that pair, not a failed run.
- 💰 Pay-Per-Event pricing — you only pay for rows that land in your dataset. No data, no charge.
💡 Use cases
- Real-estate risk screening — pull crime density around a shortlist of addresses before you list or buy.
- Insurance underwriting — attach a crime-context signal to a property or postcode.
- Local journalism and research — track category-level crime trends for a neighbourhood over a bounded month range.
- Neighbourhood/relocation apps — surface recent crime categories near a point of interest.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
locations | array | no | [{"lat": 51.5074, "lng": -0.1278}] | 1-5 points; each becomes one lookup in the API's fixed ~1-mile radius. |
category | string | no | "all-crime" | One of the 15 UK Police crime categories. all-crime returns every category. |
month_from | string | no | "2026-06" | First month (inclusive), YYYY-MM. The API lags 1-2 months behind the calendar date. |
month_to | string | no | "2026-06" | Last month (inclusive), YYYY-MM. Must be on/after month_from; span capped at 6 months. |
max_results | integer | no | 500 | Hard cap on rows emitted. Each (point, month) pair still downloads the full month first. |
Example input
{"locations": [{ "lat": 51.5074, "lng": -0.1278 }],"category": "all-crime","month_from": "2026-06","month_to": "2026-06","max_results": 500}
📤 Output
| Field | Type | Notes |
|---|---|---|
category | string | Crime category, e.g. burglary. |
month | string | YYYY-MM the crime was recorded. |
street_name | string | Nearest street name reported by the API. |
latitude | float | Latitude of the reported location. |
longitude | float | Longitude of the reported location. |
outcome_status | string | null | Outcome category, or null if unresolved. |
persistent_id | string | null | Persistent crime ID, or null when the API returns an empty string. |
crime_id | integer | Numeric crime ID from the API. |
search_lat | float | Latitude of the input point that produced this row. |
search_lng | float | Longitude of the input point that produced this row. |
Example output
{"category": "anti-social-behaviour","month": "2026-06","street_name": "On or near Bedford Street","latitude": 51.510389,"longitude": -0.124157,"outcome_status": null,"persistent_id": null,"crime_id": 136061732,"search_lat": 51.5074,"search_lng": -0.1278}
💰 Pricing
Pay-Per-Event — you only pay for what lands in your dataset.
| Event | Price | Trigger |
|---|---|---|
| Actor start | $0.20 | Once per run, after input validation passes. |
| Result row | $0.0025 | Per crime record pushed to the dataset. |
Effective ~$2.70 per 1 000 rows. A default run (500 rows) costs about $1.45.
🚧 Limitations
- Bounded lookup tool: up to 5 points and a 6-month span per run, not an unbounded national or historical mirror.
- The API's ~1-mile search radius is fixed server-side and not configurable.
- The upstream API lags 1-2 months behind the calendar date; very recent months return zero rows for that pair rather than an error.
- No polygon-vertex search and no per-crime-id lookup in v1.
❓ FAQ
Does this need an API key or proxy?
No. data.police.uk is a keyless UK government API with no observed anti-bot behaviour, so this Actor makes direct requests — no proxyConfiguration to configure.
Why did my run return zero rows? Either the point/month pair genuinely had no recorded crimes, or the month is too recent for the API's publish lag. Both cases finish as a successful run with a status message explaining what was searched — never a failed run.
Can I search more than 5 points or a longer date range? Not in v1 — this Actor is intentionally bounded to keep runs fast and predictably priced. Contact us if you need a wider range.
Where does the data come from?
The UK Police public Street-Level Crimes API (data.police.uk), the same open dataset published by UK police forces.
📮 Your feedback
Found a bug, a category mismatch, or want a feature? Open an issue on the Actor's Apify Store page or reach out at apify.com/DevilScrapes — we read every message.