# Police.uk API

> Police.uk returns crime reports and neighbourhood policing details as a workflow and API.

Police.uk finds crimes within one mile of a UK postcode or place, using the location and an optional reporting month. It finds neighbourhood policing teams, contacts, officers, priorities and events using a UK postcode.

- Page: https://fous.com/tools/police-uk
- Handle: `@police-uk`
- Category: [Government](https://fous.com/tools/category/government)
- Source website: https://data.police.uk
- Last verified: Sep 29, 2026

## Methods

### Get crimes near postcode

Operation `get_crimes_near_postcode`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get crimes reported within one mile of a UK postcode or place in England, Wales or Northern Ireland, with category totals, up to 100 example incidents, the previous month’s total, and a local crime-map link. Results use anonymised street locations; the latest published month is used unless you choose a month.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `month` | string | no | `"2026-06"` | Crime reporting month in YYYY-MM, such as 2026-06. Defaults to the latest published month. |
| `location` | string | yes | `"SW1A 1AA"` | UK postcode or place, such as SW1A 1AA or Camden, London. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "location"
  ],
  "properties": {
    "month": {
      "type": "string",
      "pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
      "description": "Crime reporting month in YYYY-MM, such as 2026-06. Defaults to the latest published month.",
      "examples": [
        "2026-06"
      ]
    },
    "location": {
      "type": "string",
      "minLength": 2,
      "description": "UK postcode or place, such as SW1A 1AA or Camden, London.",
      "examples": [
        "SW1A 1AA",
        "Camden, London",
        "BT1 5GS"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "location": "SW1A 1AA"
    },
    {
      "month": "2026-06",
      "location": "Camden, London"
    },
    {
      "location": "BT1 5GS"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `month` | string | `"2026-07"` | Month of the crime reports, YYYY-MM. |
| `crimes` | array |  | Up to 100 crimes sampled from the month, including different crime categories where possible. |
| `crimes[].street` | string or null | `"On or near Chapone Place"` | Approximate anonymised street location. |
| `crimes[].category` | string | `"Anti-social behaviour"` | Crime category in plain words. |
| `crimes[].crime_id` | integer or null | `136370872` | Police.uk crime data record ID. |
| `crimes[].latest_outcome` | string or null |  | Latest recorded outcome in words, if available. |
| `latitude` | number | `51.50101` | Latitude of the matched location. |
| `area_link` | string | `"https://www.police.uk/pu/your-area/metropolitan-police-service/st-jamess/?tab=CrimeMap"` | Police.uk crime map for the local policing area. |
| `longitude` | number | `-0.141563` | Longitude of the matched location. |
| `total_crimes` | integer | `3483` | Total crimes within one mile in the selected month. |
| `category_counts` | array |  | Counts for each crime category, most frequent first. Empty when there are no crimes. |
| `category_counts[].count` | integer | `710` | Number of crimes in this category. |
| `category_counts[].category` | string | `"Other theft"` | Crime category in plain words. |
| `matched_location` | string | `"SW1A 1AA"` | The matched postcode or place name. |
| `previous_month_total` | integer or null | `3256` | Total for the prior month, or null if there are no data for that month. |
| `change_from_previous_month` | integer or null | `227` | Current total minus previous month total, or null when the previous month is unavailable. |

**Example input**

```json
{
  "location": "SW1A 1AA"
}
```

**Example output**

```json
{
  "month": "2026-07",
  "crimes": [
    {
      "street": "On or near Chapone Place",
      "category": "Anti-social behaviour",
      "crime_id": 136370872,
      "latest_outcome": null
    },
    {
      "street": "On or near Palace Street",
      "category": "Anti-social behaviour",
      "crime_id": 136369360,
      "latest_outcome": null
    },
    {
      "street": "On or near Ebury Bridge Road",
      "category": "Anti-social behaviour",
      "crime_id": 136360180,
      "latest_outcome": null
    }
  ],
  "latitude": 51.50101,
  "area_link": "https://www.police.uk/pu/your-area/metropolitan-police-service/st-jamess/?tab=CrimeMap",
  "longitude": -0.141563,
  "total_crimes": 3483,
  "category_counts": [
    {
      "count": 710,
      "category": "Other theft"
    },
    {
      "count": 612,
      "category": "Violence and sexual offences"
    },
    {
      "count": 598,
      "category": "Theft from the person"
    }
  ],
  "matched_location": "SW1A 1AA",
  "previous_month_total": 3256,
  "change_from_previous_month": 227
}
```

### Get neighbourhood team

Operation `get_neighbourhood_team`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Find the neighbourhood policing team for a UK postcode, with its force, contacts, officers, priorities and upcoming events. Covers England, Wales and Northern Ireland; details depend on what the force publishes.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `postcode` | string | yes | `"M1 1AE"` | UK postcode to look up, for example M1 1AE. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "postcode"
  ],
  "properties": {
    "postcode": {
      "type": "string",
      "description": "UK postcode to look up, for example M1 1AE.",
      "examples": [
        "M1 1AE",
        "CF10 1EP",
        "BT1 5GS"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "postcode": "M1 1AE"
    },
    {
      "postcode": "CF10 1EP"
    },
    {
      "postcode": "BT1 5GS"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `team_members` | array |  |  |
| `team_members[].name` | string | `"Kam Hare"` |  |
| `team_members[].rank_or_role` | string or null | `"Inspector"` |  |
| `contact_details` | object |  |  |
| `contact_details.email` | string or null | `"citycentre@gmp.police.uk"` |  |
| `contact_details.phone` | string or null | `"0161 856 3221"` |  |
| `contact_details.website` | string or null | `"https://www.gmp.police.uk"` |  |
| `contact_details.social_media` | array |  |  |
| `upcoming_events` | array |  |  |
| `upcoming_events[].date` | string | `"2026-10-05"` |  |
| `upcoming_events[].title` | string or null | `"PACT Meeting"` |  |
| `upcoming_events[].address` | string or null | `"Greater Manchester Police Museum 57A Newton Street Northern Quarter Manchester M1 1ET"` |  |
| `upcoming_events[].description` | string or null | `"The Piccadilly Ward PACT Meeting covers communities, businesses and stakeholders across the Northern Quarter, Ancoats, ` |  |
| `police_force_name` | string | `"Greater Manchester Police"` |  |
| `current_priorities` | array |  |  |
| `current_priorities[].issue` | string or null | `"Priority 1: Anti-Social Behaviour Entrenched Rough Sleeping, Homelessness and Begging – Manchester City Centre"` |  |
| `current_priorities[].action` | string or null | `"We have conducted plain-clothes operations to target offenders. We have deployed CCTV vans to monitor and identify susp` |  |
| `current_priorities[].issue_date` | string or null | `"2026-07-23"` |  |
| `current_priorities[].action_date` | string or null | `"2026-07-23"` |  |
| `neighbourhood_link` | string | `"https://www.police.uk/pu/your-area/greater-manchester-police/northern-quarter/"` |  |
| `neighbourhood_name` | string | `"Northern Quarter"` |  |
| `police_force_website` | string or null | `"http://www.gmp.police.uk"` |  |

**Example input**

```json
{
  "postcode": "M1 1AE"
}
```

**Example output**

```json
{
  "team_members": [
    {
      "name": "Kam Hare",
      "rank_or_role": "Inspector"
    }
  ],
  "contact_details": {
    "email": "citycentre@gmp.police.uk",
    "phone": "0161 856 3221",
    "website": "https://www.gmp.police.uk",
    "social_media": []
  },
  "upcoming_events": [
    {
      "date": "2026-10-05",
      "title": "PACT Meeting",
      "address": "Greater Manchester Police Museum 57A Newton Street Northern Quarter Manchester M1 1ET",
      "description": "The Piccadilly Ward PACT Meeting covers communities, businesses and stakeholders across the Northern Quarter, Ancoats, Piccadilly Gardens, Piccadilly Trading Estate, The Village (Canal Street area) an…"
    }
  ],
  "police_force_name": "Greater Manchester Police",
  "current_priorities": [
    {
      "issue": "Priority 1: Anti-Social Behaviour Entrenched Rough Sleeping, Homelessness and Begging – Manchester City Centre",
      "action": "Priority 1: Anti-Social Behaviour Entrenched Rough Sleeping, Homelessness and Begging – Manchester City Centre. The GMP City Centre Street Engagement Neighbourhood Policing Team, working in partnershi…",
      "issue_date": "2026-07-23",
      "action_date": "2026-07-23"
    }
  ],
  "neighbourhood_link": "https://www.police.uk/pu/your-area/greater-manchester-police/northern-quarter/",
  "neighbourhood_name": "Northern Quarter",
  "police_force_website": "http://www.gmp.police.uk"
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@police-uk",
  "visibility": "public",
  "operation": "get_crimes_near_postcode",
  "version": 1,
  "input": {
    "location": "SW1A 1AA"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@police-uk\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_crimes_near_postcode\",\n  \"version\": 1,\n  \"input\": {\n    \"location\": \"SW1A 1AA\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@police-uk",
  "visibility": "public",
  "operation": "get_crimes_near_postcode",
  "version": 1,
  "input": {
    "location": "SW1A 1AA"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/police-uk`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_crimes_near_postcode`: Get crimes near postcode. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_neighbourhood_team`: Get neighbourhood team. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-police-uk https://api.fous.com/mcp/tools/police-uk --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare local crime totals across reporting months
- Review crime categories near a postcode
- Find neighbourhood team contact details
- Track local policing priorities and upcoming events

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Police.uk tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Police.uk account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from data.police.uk when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### How many crimes were reported near a postcode?

Get crimes near postcode returns the total for the selected month and the previous month when available.

### Which crime categories are most common nearby?

Get crimes near postcode returns counts for each crime category, ordered from most frequent first.

### Who is the neighbourhood policing team for a postcode?

Get neighbourhood team returns the team, its force, contact details, officers, priorities and upcoming events.

## Related

- [Postcodes.io API](https://fous.com/tools/postcodes-io.md): Postcodes.io provides UK postcode, location and administrative information; nearby postcode results include distance and coordinates, while retired postcodes lack administrative details.
- [NHS API](https://fous.com/tools/nhs.md): NHS provides condition and medicine guidance, with condition dates reflecting the latest pages used, and nearby England service listings ordered by distance; availability details may be missing.
- [Rightmove API](https://fous.com/tools/rightmove.md): Rightmove searches UK homes for sale or rent and finds recent sold prices; searches return up to 100 listings, and area averages reflect returned properties only.
- [Zoopla API](https://fous.com/tools/zoopla.md): UK homes for sale and to rent.
- [GOV.UK API](https://fous.com/tools/gov-uk.md): GOV.UK provides summarized current travel advice with linked details, published regional holidays (none for unpublished years), and possible matches on the current UK Sanctions List.
- [Companies House API](https://fous.com/tools/companies-house.md): Companies House returns UK public-register company details, officers, people with significant control and recent filings; records may be incomplete, and ceased entries are optional.
- [US Census Bureau API](https://fous.com/tools/us-census-bureau.md): US Census Bureau returns statistics from varying Census years, population estimates through July 1, and address geographies using Census vintages that may differ from representation.
- [FBI API](https://fous.com/tools/fbi.md): Federal Bureau of Investigation wanted notices and public safety information.
- [All Government tools](https://fous.com/tools/category/government)
