Area data
Road Safety API
Reported road collisions near a location over the last 5 years, by severity and year, with traffic volume at the nearest Department for Transport count point.
Endpoints
- GET/api/v1/area/road-safetyCollisions and traffic near a location
Each call costs 1 credit. Requests that return an error are not charged.
Billing details in the response
Successful chargeable JSON responses include a top-level billing object. The endpoint examples on this page focus on the endpoint-specific data, so this repeated block may not be shown in every example.
"billing": {
"mode": "prepaid",
"creditsCharged": 1,
"creditsRemaining": 1999,
"creditsRefreshAt": "2026-08-14T09:30:00.000Z"
}| Field or header | Meaning |
|---|---|
| billing.creditsCharged X-Credits-Charged | Credits charged by this call. Failed and non-chargeable calls return 0 in the header. |
| billing.creditsRemaining X-Credits-Remaining | The credit balance after the call. |
| billing.creditsRefreshAt X-Credits-Refresh-At | The next monthly credit refresh as an ISO 8601 timestamp. Trial and non-renewing balances return null and omit the header. |
All authenticated API-key calls expose the billing headers, including validation errors and zero-credit status or management requests. Only successful chargeable JSON responses add the billing object to the response body.
When credits run out
If your balance is lower than the cost of a request, the API returns HTTP 402 and charges nothing. The error includes the credits needed, your balance and a link to change plan.
{
"statusCode": 402,
"statusMessage": "Payment Required",
"data": {
"success": false,
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "This request costs 35 API credits. Upgrade your plan or wait for your monthly refresh: https://propertyinsights.co.uk/billing",
"required": 35,
"available": 12,
"upgradeUrl": "https://propertyinsights.co.uk/billing"
}
}
}Area road safety
/api/v1/area/road-safetyCounts police-reported injury collisions within a radius of a postcode or point, split into fatal, serious and slight for each of the last 5 years. Also returns the nearest traffic count point with its road name, distance and annual average daily flow (AADF) by vehicle type, including the HGV share.
| Name | Required | Type | Description |
|---|---|---|---|
| postcode | One of | string | Full postcode in England, Scotland or Wales. |
| latitude | One of | number | Latitude in decimal degrees. Use with longitude. |
| longitude | One of | number | Longitude in decimal degrees. Use with latitude. |
| radiusMetres | No | integer | Collision search radius, 50 to 2000. Default 500. |
Coverage is Great Britain. Locations in Northern Ireland, the Isle of Man or out at sea return a 404 and are not charged. The nearest count point can be on a different road from the location, so check its road name and distance.
Example request
curl -X GET "https://propertyinsights.co.uk/api/v1/area/road-safety?latitude=51.4545&longitude=-2.5879&radiusMetres=500" \
-H "x-api-key: YOUR_API_KEY"Example response
Collision and traffic figures are DfT data for a point in central Bristol.
{
"success": true,
"data": {
"input": {
"postcode": null,
"latitude": 51.4545,
"longitude": -2.5879,
"radiusMetres": 500
},
"collisions": {
"fromYear": 2021,
"toYear": 2025,
"total": 194,
"casualties": 208,
"bySeverity": {
"fatal": 0,
"serious": 26,
"slight": 168
},
"byYear": [
{
"year": 2021,
"total": 32,
"fatal": 0,
"serious": 3,
"slight": 29,
"casualties": 34
},
{
"year": 2022,
"total": 43,
"fatal": 0,
"serious": 5,
"slight": 38,
"casualties": 48
},
{
"year": 2023,
"total": 45,
"fatal": 0,
"serious": 3,
"slight": 42,
"casualties": 49
},
{
"year": 2024,
"total": 35,
"fatal": 0,
"serious": 3,
"slight": 32,
"casualties": 37
},
{
"year": 2025,
"total": 39,
"fatal": 0,
"serious": 12,
"slight": 27,
"casualties": 40
}
]
},
"nearestCountPoint": {
"countPointId": 92040,
"roadName": "A4044",
"roadCategory": "PA",
"roadType": "Major",
"startJunction": "lat: 51.4488 long: -2.5842",
"endJunction": "lat: 51.4558 long: -2.5835",
"localAuthority": "Bristol, City of",
"distanceMetres": 303,
"year": 2025,
"estimationMethod": "Estimated",
"aadf": {
"allMotorVehicles": 34667,
"carsAndTaxis": 27630,
"lgvs": 5077,
"hgvs": 833,
"busesAndCoaches": 302,
"twoWheeledMotorVehicles": 825,
"pedalCycles": 608
},
"hgvSharePct": 2.4
},
"notes": "Collisions are personal injury collisions reported to the police, with severity as the police recorded it. Damage-only collisions are not included. Traffic is the annual average daily flow (AADF) in both directions at the nearest count point, which may be on a different road from the location.",
"sources": [
{
"name": "Department for Transport road safety data (STATS19)",
"url": "https://www.data.gov.uk/dataset/cb7ae6f0-4be6-4935-9277-47e5ce24a11f/road-accidents-safety-data",
"licence": "Open Government Licence v3.0",
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0."
},
{
"name": "Department for Transport road traffic statistics",
"url": "https://roadtraffic.dft.gov.uk/downloads",
"licence": "Open Government Licence v3.0",
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0."
}
]
}
}Sources and coverage
| Data | Source | Geography | Updated |
|---|---|---|---|
| Collisions | DfT road safety data (STATS19), last 5 years | Great Britain | Yearly, final data each September |
| Traffic counts | DfT road traffic statistics, AADF by count point | Great Britain | Yearly, each June |
Both sources are published by the Department for Transport under the Open Government Licence v3.0. Contains public sector information licensed under the Open Government Licence v3.0.
OpenAPI specification
Authentication, parameters, billing headers and response schemas are also published in the machine-readable OpenAPI documents in JSON and YAML.