# UK Police Data

> Look up open police data for England, Wales and Northern Ireland from data.police.uk: street-level crimes and their outcomes near a place or inside an area, stop and searches, police forces and their senior officers, and each neighbourhood's team, boundary, events and priorities.

App · 20 actions. Web page: https://docs.lodol.com/docs/integrations/uk-police

## Actions

### Check which months have data

See which months of police data are published, the latest first, when it was last updated, and which forces published stop and search for each month.

**Inputs**: None.

**Outputs**

- `count` (number): How many came back
- `earliest_month` (text): The oldest month still served, as YYYY-MM
- `last_updated` (text): When crime data was last updated (YYYY-MM-DD)
- `latest_month` (text): The newest month with data, as YYYY-MM
- `months` (list): Each month with data, newest first

**Example output**

```json
{
  "count": 2,
  "earliest_month": "2023-09",
  "last_updated": "2026-08-01",
  "latest_month": "2026-08",
  "months": [
    {
      "month": "2026-08",
      "stop_and_search_force_count": 2,
      "stop_and_search_forces": [
        "btp",
        "leicestershire"
      ]
    },
    {
      "month": "2026-07",
      "stop_and_search_force_count": 3,
      "stop_and_search_forces": [
        "btp",
        "leicestershire",
        "metropolitan"
      ]
    }
  ]
}
```

### Find crimes at a location

Find the crimes recorded at one place in a month, rather than everything in a radius: a location ID from another result, or the nearest place to a point.

**Inputs**

- Find by (`search_by`, text): A location ID from another result, or the nearest location to a point. One of: `location` (A location ID from another result), `point` (The nearest location to a point). Default: `location`.
- Location ID (`location_id`, text): The location_id of a crime, outcome or stop and search from an earlier step, such as 1678386. Only when Find by is A location ID from another result.
- Latitude (`latitude`, number): The point's latitude, such as 51.5074 for central London. Only when Find by is The nearest location to a point. From 49.0 to 61.0.
- Longitude (`longitude`, number): The point's longitude, such as -0.1278 for central London. Only when Find by is The nearest location to a point. From -11.0 to 2.0.
- Month (`month`, date): Any day in the month to look at; police data is published by month. Leave empty for the latest month published, usually two months ago.

**Outputs**

- `category_counts` (list): Crimes per category, most first
- `crimes` (list): The crimes
- `latitude` (number): Latitude of the place
- `location_id` (number): The ID of the location
- `longitude` (number): Longitude of the place
- `month` (text): The month the data is for, as YYYY-MM
- `search` (text): Where was searched, in words
- `street_name` (text): The approximate place, such as 'On or near Cornwall Road'. Locations are moved to the nearest of a set of points to keep victims anonymous
- `total` (number): How many crimes there were

**Example output**

```json
{
  "category_counts": [
    {
      "category": "bicycle-theft",
      "count": 1,
      "name": "Bicycle theft"
    }
  ],
  "crimes": [
    {
      "category": "bicycle-theft",
      "category_name": "Bicycle theft",
      "context": "",
      "crime_id": "8a1562ff38d2ba5ee06657a897da014728c4bbaa13a3585fc47d04f5cc6a5205",
      "latitude": 51.521458,
      "location_id": 1678167,
      "location_subtype": "",
      "location_type": "Force",
      "longitude": -0.130305,
      "month": "2026-08",
      "outcome": "Investigation complete; no suspect identified",
      "outcome_month": "2026-08",
      "record_id": 136888834,
      "street_name": "On or near Malet Street"
    }
  ],
  "latitude": 51.521458,
  "location_id": 1678167,
  "longitude": -0.130305,
  "month": "2026-08",
  "search": "at location 1678167",
  "street_name": "On or near Malet Street",
  "total": 1
}
```

### Find crimes with no location

Find a force's crimes in a month that could not be placed on the map, so they appear in no area search.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.
- Crime category (`category`, text): Only crimes of this kind. All crime unless chosen. Default: `all-crime`.
- Month (`month`, date): Any day in the month to look at; police data is published by month. Leave empty for the latest month published, usually two months ago.
- Most results (`max_results`, number): The most records to list. The total and the counts still include them all. From 1 to 10000. Default: `500`.

**Outputs**

- `category` (text): The category asked for; all-crime for every one
- `category_counts` (list): Crimes per category, most first
- `category_name` (text): The category asked for, in words
- `crimes` (list): The crimes
- `force` (text): The force's ID, such as metropolitan
- `force_name` (text): The force's name
- `month` (text): The month the data is for, as YYYY-MM
- `returned` (number): How many are in the list
- `total` (number): How many there are in all, before Most results cut the list
- `truncated` (true/false): Whether there were more than Most results; the counts cover all

**Example output**

```json
{
  "category": "all-crime",
  "category_counts": [
    {
      "category": "violent-crime",
      "count": 87,
      "name": "Violence and sexual offences"
    },
    {
      "category": "criminal-damage-arson",
      "count": 35,
      "name": "Criminal damage and arson"
    }
  ],
  "category_name": "All crime",
  "crimes": [
    {
      "category": "anti-social-behaviour",
      "category_name": "Anti-social behaviour",
      "context": "",
      "crime_id": "",
      "latitude": null,
      "location_id": null,
      "location_subtype": "",
      "location_type": "",
      "longitude": null,
      "month": "2026-08",
      "outcome": "",
      "outcome_month": "",
      "record_id": 137347755,
      "street_name": ""
    }
  ],
  "force": "leicestershire",
  "force_name": "Leicestershire Police",
  "month": "2026-08",
  "returned": 1,
  "total": 215,
  "truncated": true
}
```

### Find stop and searches at a location

Find the stop and searches at one place in a month, from a location ID in another result.

**Inputs**

- Location ID (`location_id`, text, required): The location_id of a stop and search or a crime from an earlier step, such as 1676405.
- Month (`month`, date): Any day in the month to look at. Leave empty for the latest of the last three months with any at this place.
- Most results (`max_results`, number): The most records to list. The total and the counts still include them all. From 1 to 10000. Default: `500`.

**Outputs**

- `location_id` (number): The ID of the location
- `month` (text): The month the data is for, as YYYY-MM
- `note` (text): Why the list may be empty, such as the force not having published the month yet; empty otherwise
- `outcome_counts` (list): Outcomes per kind, most first
- `returned` (number): How many are in the list
- `search` (text): Where was searched, in words
- `stops` (list): The stop and searches
- `total` (number): How many there are in all, before Most results cut the list
- `truncated` (true/false): Whether there were more than Most results; the counts cover all

**Example output**

```json
{
  "location_id": 1676405,
  "month": "2026-07",
  "note": "",
  "outcome_counts": [
    {
      "count": 1,
      "outcome": "A no further action disposal"
    }
  ],
  "returned": 1,
  "search": "at location 1676405",
  "stops": [
    {
      "age_range": "",
      "datetime": "2026-07-02T23:52:00+00:00",
      "gender": "Male",
      "involved_person": true,
      "latitude": 51.496466,
      "legislation": "Police and Criminal Evidence Act 1984 (section 1)",
      "location_id": 1676405,
      "longitude": -0.141499,
      "object_of_search": "Offensive weapons",
      "officer_defined_ethnicity": "White",
      "operation": false,
      "operation_name": "",
      "outcome": "A no further action disposal",
      "outcome_code": "bu-no-further-action",
      "outcome_linked_to_object_of_search": false,
      "removal_of_more_than_outer_clothing": false,
      "self_defined_ethnicity": "White - English/Welsh/Scottish/Northern Irish/British",
      "street_name": "On or near Shopping Area",
      "type": "Person search"
    }
  ],
  "total": 1,
  "truncated": false
}
```

### Find stop and searches in an area

Find the stop and searches in a month within a mile of a point, or inside an area you mark out, with what each was for and its outcome.

**Inputs**

- Search (`search_by`, text): Look within a mile of a point, or inside an area you mark out. One of: `point` (Within a mile of a point), `area` (Within a custom area). Default: `point`.
- Latitude (`latitude`, number): The point's latitude, such as 51.5074 for central London. Only when Search is Within a mile of a point. From 49.0 to 61.0.
- Longitude (`longitude`, number): The point's longitude, such as -0.1278 for central London. Only when Search is Within a mile of a point. From -11.0 to 2.0.
- Custom area (`area`, list): The area's corners in order, one per line, each a latitude and longitude such as 51.50, -0.14. At least three; the last joins back to the first. A neighbourhood boundary's points work too. Areas with more than 10,000 records are refused. Only when Search is Within a custom area.
- Month (`month`, date): Any day in the month to look at. Leave empty for the latest month the force has published stop and search for, which can be a month behind its crimes.
- Most results (`max_results`, number): The most records to list. The total and the counts still include them all. From 1 to 10000. Default: `500`.

**Outputs**

- `month` (text): The month the data is for, as YYYY-MM
- `note` (text): Why the list may be empty, such as the force not having published the month yet; empty otherwise
- `outcome_counts` (list): Outcomes per kind, most first
- `returned` (number): How many are in the list
- `search` (text): Where was searched, in words
- `stops` (list): The stop and searches
- `total` (number): How many there are in all, before Most results cut the list
- `truncated` (true/false): Whether there were more than Most results; the counts cover all

**Example output**

```json
{
  "month": "2026-07",
  "note": "",
  "outcome_counts": [
    {
      "count": 388,
      "outcome": "A no further action disposal"
    },
    {
      "count": 107,
      "outcome": "Arrest"
    },
    {
      "count": 46,
      "outcome": "Community resolution"
    }
  ],
  "returned": 1,
  "search": "within a mile of 51.5074, -0.1278",
  "stops": [
    {
      "age_range": "",
      "datetime": "2026-07-02T23:52:00+00:00",
      "gender": "Male",
      "involved_person": true,
      "latitude": 51.496466,
      "legislation": "Police and Criminal Evidence Act 1984 (section 1)",
      "location_id": 1676405,
      "longitude": -0.141499,
      "object_of_search": "Offensive weapons",
      "officer_defined_ethnicity": "White",
      "operation": false,
      "operation_name": "",
      "outcome": "A no further action disposal",
      "outcome_code": "bu-no-further-action",
      "outcome_linked_to_object_of_search": false,
      "removal_of_more_than_outer_clothing": false,
      "self_defined_ethnicity": "White - English/Welsh/Scottish/Northern Irish/British",
      "street_name": "On or near Shopping Area",
      "type": "Person search"
    }
  ],
  "total": 562,
  "truncated": true
}
```

### Find street-level crimes

Find the crimes reported in a month within a mile of a point, or inside an area you mark out, with counts per category. Locations are approximate, to protect victims.

**Inputs**

- Search (`search_by`, text): Look within a mile of a point, or inside an area you mark out. One of: `point` (Within a mile of a point), `area` (Within a custom area). Default: `point`.
- Latitude (`latitude`, number): The point's latitude, such as 51.5074 for central London. Only when Search is Within a mile of a point. From 49.0 to 61.0.
- Longitude (`longitude`, number): The point's longitude, such as -0.1278 for central London. Only when Search is Within a mile of a point. From -11.0 to 2.0.
- Custom area (`area`, list): The area's corners in order, one per line, each a latitude and longitude such as 51.50, -0.14. At least three; the last joins back to the first. A neighbourhood boundary's points work too. Areas with more than 10,000 records are refused. Only when Search is Within a custom area.
- Crime category (`category`, text): Only crimes of this kind. All crime unless chosen. Default: `all-crime`.
- Month (`month`, date): Any day in the month to look at; police data is published by month. Leave empty for the latest month published, usually two months ago.
- Most results (`max_results`, number): The most records to list. The total and the counts still include them all. From 1 to 10000. Default: `500`.

**Outputs**

- `category` (text): The category asked for; all-crime for every one
- `category_counts` (list): Crimes per category, most first
- `category_name` (text): The category asked for, in words
- `crimes` (list): The crimes
- `month` (text): The month the data is for, as YYYY-MM
- `returned` (number): How many are in the list
- `search` (text): Where was searched, in words
- `total` (number): How many there are in all, before Most results cut the list
- `truncated` (true/false): Whether there were more than Most results; the counts cover all

**Example output**

```json
{
  "category": "all-crime",
  "category_counts": [
    {
      "category": "other-theft",
      "count": 860,
      "name": "Other theft"
    },
    {
      "category": "theft-from-the-person",
      "count": 731,
      "name": "Theft from the person"
    },
    {
      "category": "violent-crime",
      "count": 642,
      "name": "Violence and sexual offences"
    }
  ],
  "category_name": "All crime",
  "crimes": [
    {
      "category": "anti-social-behaviour",
      "category_name": "Anti-social behaviour",
      "context": "",
      "crime_id": "",
      "latitude": 51.504507,
      "location_id": 1681118,
      "location_subtype": "",
      "location_type": "Force",
      "longitude": -0.110609,
      "month": "2026-08",
      "outcome": "",
      "outcome_month": "",
      "record_id": 137006808,
      "street_name": "On or near Cornwall Road"
    },
    {
      "category": "bicycle-theft",
      "category_name": "Bicycle theft",
      "context": "",
      "crime_id": "8a1562ff38d2ba5ee06657a897da014728c4bbaa13a3585fc47d04f5cc6a5205",
      "latitude": 51.521458,
      "location_id": 1678167,
      "location_subtype": "",
      "location_type": "Force",
      "longitude": -0.130305,
      "month": "2026-08",
      "outcome": "Investigation complete; no suspect identified",
      "outcome_month": "2026-08",
      "record_id": 136888834,
      "street_name": "On or near Malet Street"
    }
  ],
  "month": "2026-08",
  "returned": 2,
  "search": "within a mile of 51.5074, -0.1278",
  "total": 4160,
  "truncated": true
}
```

### Find street-level outcomes

Find what happened to crimes in a month (charges, cautions, investigations closed) within a mile of a point, inside an area, or at one location, with each outcome's crime.

**Inputs**

- Search (`search_by`, text): Look within a mile of a point, inside an area you mark out, or at one location from another result. One of: `point` (Within a mile of a point), `area` (Within a custom area), `location` (At a location ID from another result). Default: `point`.
- Latitude (`latitude`, number): The point's latitude, such as 51.5074 for central London. Only when Search is Within a mile of a point. From 49.0 to 61.0.
- Longitude (`longitude`, number): The point's longitude, such as -0.1278 for central London. Only when Search is Within a mile of a point. From -11.0 to 2.0.
- Custom area (`area`, list): The area's corners in order, one per line, each a latitude and longitude such as 51.50, -0.14. At least three; the last joins back to the first. A neighbourhood boundary's points work too. Areas with more than 10,000 records are refused. Only when Search is Within a custom area.
- Location ID (`location_id`, text): The location_id of a crime, outcome or stop and search from an earlier step, such as 1678386. Only when Search is At a location ID from another result.
- Month (`month`, date): Any day in the month to look at; police data is published by month. Leave empty for the latest month published, usually two months ago.
- Most results (`max_results`, number): The most records to list. The total and the counts still include them all. From 1 to 10000. Default: `500`.

**Outputs**

- `month` (text): The month the data is for, as YYYY-MM
- `outcome_counts` (list): Outcomes per kind, most first
- `outcomes` (list): The outcomes, each with its crime
- `returned` (number): How many are in the list
- `search` (text): Where was searched, in words
- `total` (number): How many there are in all, before Most results cut the list
- `truncated` (true/false): Whether there were more than Most results; the counts cover all

**Example output**

```json
{
  "month": "2026-08",
  "outcome_counts": [
    {
      "count": 2658,
      "outcome": "Investigation complete; no suspect identified"
    },
    {
      "count": 760,
      "outcome": "Unable to prosecute suspect"
    },
    {
      "count": 449,
      "outcome": "Awaiting court outcome"
    }
  ],
  "outcomes": [
    {
      "crime_category": "drugs",
      "crime_category_name": "Drugs",
      "crime_id": "93030b201a1bd37ab3dd845e49a2e601a3629ca6e93a4d3c8948d0ba684850c7",
      "crime_month": "2026-07",
      "latitude": 51.515939,
      "location_id": 1677739,
      "location_subtype": "ROAD",
      "longitude": -0.132693,
      "outcome": "Awaiting court outcome",
      "outcome_code": "awaiting-court-result",
      "outcome_month": "2026-08",
      "person_id": null,
      "record_id": 136336623,
      "street_name": "On or near Soho Street"
    }
  ],
  "returned": 1,
  "search": "within a mile of 51.5074, -0.1278",
  "total": 4007,
  "truncated": true
}
```

### Find the neighbourhood for a location

Find which force and neighbourhood policing team cover a point, to use in the neighbourhood actions. Found is false where none does, such as in Scotland.

**Inputs**

- Latitude (`latitude`, number, required): The point's latitude, such as 51.5074. From 49.0 to 61.0.
- Longitude (`longitude`, number, required): The point's longitude, such as -0.1278. From -11.0 to 2.0.

**Outputs**

- `force` (text): The force's ID, such as metropolitan
- `force_name` (text): The force's name
- `found` (true/false): Whether a neighbourhood covers the point
- `latitude` (number): The latitude looked up
- `longitude` (number): The longitude looked up
- `neighbourhood` (text): The neighbourhood's ID, for the other actions
- `neighbourhood_name` (text): The neighbourhood's name

**Example output**

```json
{
  "force": "metropolitan",
  "force_name": "Metropolitan Police Service",
  "found": true,
  "latitude": 51.5074,
  "longitude": -0.1278,
  "neighbourhood": "E05013806N",
  "neighbourhood_name": "St James's"
}
```

### Get a neighbourhood

Get a neighbourhood team's contact details, web page, centre point, description and the places it works from.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.
- Neighbourhood (`neighbourhood`, text, required): The neighbourhood policing area, from the chosen force's list. Find the neighbourhood for a location gives the one covering a place.

**Outputs**

- `centre_latitude` (number): Latitude of the neighbourhood's centre
- `centre_longitude` (number): Longitude of the neighbourhood's centre
- `contact_details` (object): Contact details by kind (email, telephone, twitter and so on); only the ones given
- `description` (text): What the team says about the area, as plain text
- `email` (text): The team's email address, if given
- `force` (text): The force's ID, such as metropolitan
- `force_name` (text): The force's name
- `id` (text): The neighbourhood's ID
- `links` (list): Useful links the team lists
- `locations` (list): Police stations and other places the team works from
- `name` (text): The neighbourhood's name
- `population` (number): The population, when the force gives one
- `telephone` (text): The team's telephone number, if given
- `url` (text): The neighbourhood's page on the force's website

**Example output**

```json
{
  "centre_latitude": 51.5053,
  "centre_longitude": -0.131324,
  "contact_details": {
    "email": "stjamesward@met.police.uk"
  },
  "description": "",
  "email": "stjamesward@met.police.uk",
  "force": "metropolitan",
  "force_name": "Metropolitan Police Service",
  "id": "E05013806N",
  "links": [],
  "locations": [],
  "name": "St James's",
  "population": null,
  "telephone": "",
  "url": "https://www.met.police.uk/area/your-area/met/Westminster/St-Jamess"
}
```

### Get a neighbourhood's boundary

Get the outline of a neighbourhood as a list of points. Give them to a custom area to search for crimes or stop and searches inside it.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.
- Neighbourhood (`neighbourhood`, text, required): The neighbourhood policing area, from the chosen force's list. Find the neighbourhood for a location gives the one covering a place.

**Outputs**

- `count` (number): How many came back
- `force` (text): The force's ID, such as metropolitan
- `neighbourhood` (text): The neighbourhood's ID
- `points` (list): The boundary's corners, in order. Give them to a custom area to search inside the neighbourhood

**Example output**

```json
{
  "count": 3,
  "force": "metropolitan",
  "neighbourhood": "E05013806N",
  "points": [
    {
      "latitude": 51.5134638677,
      "longitude": -0.129094904803
    },
    {
      "latitude": 51.5134595656,
      "longitude": -0.129074385012
    },
    {
      "latitude": 51.513451458,
      "longitude": -0.129035717542
    }
  ]
}
```

### Get a police force

Get a police force's website, non-emergency number and social media accounts.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.

**Outputs**

- `description` (text): What the force says about itself, if anything
- `id` (text): The force's ID, such as metropolitan
- `links` (list): Where else to find the force
- `name` (text): The force's name
- `telephone` (text): The force's non-emergency number
- `url` (text): The force's website

**Example output**

```json
{
  "description": "",
  "id": "metropolitan",
  "links": [
    {
      "description": "",
      "title": "facebook",
      "type": "facebook",
      "url": "https://www.facebook.com/metpoliceuk/"
    },
    {
      "description": "",
      "title": "twitter",
      "type": "twitter",
      "url": "https://x.com/Metpoliceuk"
    }
  ],
  "name": "Metropolitan Police Service",
  "telephone": "101",
  "url": "https://www.met.police.uk/"
}
```

### Get outcomes for a crime

Follow one crime through the justice system: every outcome recorded for it so far, and the latest.

**Inputs**

- Crime ID (`crime_id`, text, required): The crime_id of a crime from an earlier step: 64 letters and digits. Anti-social behaviour has none.

**Outputs**

- `count` (number): How many came back
- `crime` (object): The crime
- `crime_id` (text): The crime's ID
- `latest_outcome` (text): The most recent outcome; empty if none
- `latest_outcome_month` (text): The month of it, as YYYY-MM
- `outcomes` (list): Every outcome so far, oldest first

**Example output**

```json
{
  "count": 2,
  "crime": {
    "category": "bicycle-theft",
    "category_name": "Bicycle theft",
    "context": "",
    "crime_id": "eb8aaca18ae27656e8f5b8bc98c62b889f504c2422ca00becb6a297f0b99721a",
    "latitude": 51.509944,
    "location_id": 1678386,
    "location_subtype": "",
    "location_type": "Force",
    "longitude": -0.127807,
    "month": "2026-08",
    "record_id": 136972422,
    "street_name": "On or near Theatre/Concert Hall"
  },
  "crime_id": "eb8aaca18ae27656e8f5b8bc98c62b889f504c2422ca00becb6a297f0b99721a",
  "latest_outcome": "Investigation complete; no suspect identified",
  "latest_outcome_month": "2026-08",
  "outcomes": [
    {
      "month": "2026-08",
      "outcome": "Under investigation",
      "outcome_code": "under-investigation",
      "person_id": null
    },
    {
      "month": "2026-08",
      "outcome": "Investigation complete; no suspect identified",
      "outcome_code": "no-further-action",
      "person_id": null
    }
  ]
}
```

### List a force's stop and searches

List every stop and search a force reported in a month, or only those that could not be placed on the map.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service. The British Transport Police are here too.
- Month (`month`, date): Any day in the month to look at. Leave empty for the latest month the force has published stop and search for, which can be a month behind its crimes.
- Only those with no location (`without_location_only`, true/false): List only the stop and searches that could not be placed on the map, which no area search finds. Default: `false`.
- Most results (`max_results`, number): The most records to list. The total and the counts still include them all. From 1 to 10000. Default: `500`.

**Outputs**

- `force` (text): The force's ID, such as metropolitan
- `force_name` (text): The force's name
- `month` (text): The month the data is for, as YYYY-MM
- `note` (text): Why the list may be empty, such as the force not having published the month yet; empty otherwise
- `outcome_counts` (list): Outcomes per kind, most first
- `returned` (number): How many are in the list
- `stops` (list): The stop and searches
- `total` (number): How many there are in all, before Most results cut the list
- `truncated` (true/false): Whether there were more than Most results; the counts cover all
- `without_location_only` (true/false): Whether only stop and searches with no location were asked for

**Example output**

```json
{
  "force": "metropolitan",
  "force_name": "Metropolitan Police Service",
  "month": "2026-07",
  "note": "",
  "outcome_counts": [
    {
      "count": 7928,
      "outcome": "A no further action disposal"
    },
    {
      "count": 2243,
      "outcome": "Arrest"
    },
    {
      "count": 1354,
      "outcome": "Community resolution"
    }
  ],
  "returned": 1,
  "stops": [
    {
      "age_range": "",
      "datetime": "2026-07-02T23:52:00+00:00",
      "gender": "Male",
      "involved_person": true,
      "latitude": 51.496466,
      "legislation": "Police and Criminal Evidence Act 1984 (section 1)",
      "location_id": 1676405,
      "longitude": -0.141499,
      "object_of_search": "Offensive weapons",
      "officer_defined_ethnicity": "White",
      "operation": false,
      "operation_name": "",
      "outcome": "A no further action disposal",
      "outcome_code": "bu-no-further-action",
      "outcome_linked_to_object_of_search": false,
      "removal_of_more_than_outer_clothing": false,
      "self_defined_ethnicity": "White - English/Welsh/Scottish/Northern Irish/British",
      "street_name": "On or near Shopping Area",
      "type": "Person search"
    }
  ],
  "total": 12088,
  "truncated": true,
  "without_location_only": false
}
```

### List a neighbourhood's team

List the officers and PCSOs on a neighbourhood's policing team, with their ranks.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.
- Neighbourhood (`neighbourhood`, text, required): The neighbourhood policing area, from the chosen force's list. Find the neighbourhood for a location gives the one covering a place.

**Outputs**

- `count` (number): How many came back
- `force` (text): The force's ID, such as metropolitan
- `neighbourhood` (text): The neighbourhood's ID
- `officers` (list): The neighbourhood's police team

**Example output**

```json
{
  "count": 2,
  "force": "metropolitan",
  "neighbourhood": "E05013806N",
  "officers": [
    {
      "bio": "",
      "contact_details": {},
      "name": "Graham Burke",
      "rank": "Sergeant"
    },
    {
      "bio": "",
      "contact_details": {},
      "name": "Gareth Bone",
      "rank": "Dedicated Ward Officer"
    }
  ]
}
```

### List crime categories

List the kinds of crime police data is grouped into, such as Burglary and Vehicle crime, with their IDs.

**Inputs**

- Month (`month`, date): Any day in the month to look at; police data is published by month. Leave empty for the latest month published, usually two months ago.

**Outputs**

- `categories` (list): The crime categories
- `count` (number): How many came back
- `month` (text): The month the data is for, as YYYY-MM

**Example output**

```json
{
  "categories": [
    {
      "id": "all-crime",
      "name": "All crime"
    },
    {
      "id": "burglary",
      "name": "Burglary"
    },
    {
      "id": "violent-crime",
      "name": "Violence and sexual offences"
    }
  ],
  "count": 3,
  "month": "2026-08"
}
```

### List neighbourhood events

List a neighbourhood team's upcoming events, such as beat meetings and crime prevention stalls.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.
- Neighbourhood (`neighbourhood`, text, required): The neighbourhood policing area, from the chosen force's list. Find the neighbourhood for a location gives the one covering a place.

**Outputs**

- `count` (number): How many came back
- `events` (list): Upcoming events
- `force` (text): The force's ID, such as metropolitan
- `neighbourhood` (text): The neighbourhood's ID

**Example output**

```json
{
  "count": 1,
  "events": [
    {
      "address": "Covent Garden, Long Acre London",
      "contact_details": {},
      "description": "",
      "end_date": "2026-11-19T16:00:00",
      "start_date": "2026-11-19T14:00:00",
      "title": "Crime Prevention Stall",
      "type": "other"
    }
  ],
  "force": "metropolitan",
  "neighbourhood": "E05013806N"
}
```

### List neighbourhood priorities

List the problems a neighbourhood team has promised to work on, and what it is doing about each.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.
- Neighbourhood (`neighbourhood`, text, required): The neighbourhood policing area, from the chosen force's list. Find the neighbourhood for a location gives the one covering a place.

**Outputs**

- `count` (number): How many came back
- `force` (text): The force's ID, such as metropolitan
- `neighbourhood` (text): The neighbourhood's ID
- `priorities` (list): The team's current priorities

**Example output**

```json
{
  "count": 1,
  "force": "metropolitan",
  "neighbourhood": "E05013806N",
  "priorities": [
    {
      "action": "Increased high visibility patrols in the evening and nights around night time entertainment venues.",
      "action_date": "2026-10-06T00:00:00",
      "issue": "Drug usage and dealing contribute to the violence on St. James.",
      "issue_date": "2026-10-06T00:00:00"
    }
  ]
}
```

### List neighbourhoods

List a force's neighbourhood policing areas, by name, with their IDs.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.

**Outputs**

- `count` (number): How many came back
- `force` (text): The force's ID, such as metropolitan
- `force_name` (text): The force's name
- `neighbourhoods` (list): The force's neighbourhoods, by name

**Example output**

```json
{
  "count": 2,
  "force": "metropolitan",
  "force_name": "Metropolitan Police Service",
  "neighbourhoods": [
    {
      "id": "E05013810",
      "name": "Abbey"
    },
    {
      "id": "E05013806N",
      "name": "St James's"
    }
  ]
}
```

### List police forces

List the police forces of England, Wales and Northern Ireland, with the ID each one goes by in the other actions.

**Inputs**: None.

**Outputs**

- `count` (number): How many came back
- `forces` (list): Every police force

**Example output**

```json
{
  "count": 2,
  "forces": [
    {
      "id": "city-of-london",
      "name": "City of London Police"
    },
    {
      "id": "metropolitan",
      "name": "Metropolitan Police Service"
    }
  ]
}
```

### List senior officers

List a force's senior officers, such as its Chief Constable, with their biographies. Some forces list none.

**Inputs**

- Police force (`force`, text, required): The police force, such as the Metropolitan Police Service.

**Outputs**

- `count` (number): How many came back
- `force` (text): The force's ID, such as metropolitan
- `force_name` (text): The force's name
- `officers` (list): The force's senior officers

**Example output**

```json
{
  "count": 1,
  "force": "leicestershire",
  "force_name": "Leicestershire Police",
  "officers": [
    {
      "bio": "Rob has served with Leicestershire Police for 25 years, beginning his policing career here in 1993.",
      "contact_details": {},
      "name": "Rob Nixon",
      "rank": "Chief Constable"
    }
  ]
}
```
