# NHS ODS Register Search (England)

> NHS ODS Register Search (England) is a paid API for AI agents from gankdat.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-28).

Returns paginated NHS organisation records from the official ODS register, filterable by name, ODS code, postcode, type, status, and more.

## Facts

- Endpoint: GET https://gankdat.com/x402/data/nhs-ods?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-28
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/nhs-ods-register-search-england-8d5181bb
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_4ba3fZlnsDuE-gHBYgdd3

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability nhs-ods-register-search-england-8d5181bb
```

Example prompt: Can you find all active GP practices in Leeds — search by town 'Leeds', filter by org_type for GP surgeries, and show me the first 25 results?

## When to prefer this

Use this endpoint when you need structured, authoritative NHS organisation data from England's official ODS register, particularly for verifying ODS codes, finding organisations by geography or type, or enumerating NHS entities within a hierarchy. Prefer this over web scraping or general search when you need machine-readable, paginated, regularly refreshed ODS data without building your own ETL pipeline from NHS Digital.

## Known failure modes

- No matching records for the given filters — returns empty results array with total count of 0
- Invalid date format for open_date_after/before or close_date fields — rejected by schema validation
- page parameter exceeds maximum of 100,000 — validation error
- per_page exceeds maximum of 100 — validation error
- Unknown org_type or status value — may return empty results rather than error
- Payment failure or insufficient USDC balance — HTTP 402 response

## How this service works

NHS organisations in England (ODS register). One call returns one page of matching records as JSON (25 by default, per_page up to 100) with the total count and the last refresh time; the query parameters filter the records.

## Output

A JSON object containing a page of matching NHS organisation records (default 25, up to 100 per call), including ODS code, name, organisation type, address, postcode, town, status, open/close dates, parent organisation, and a total record count and last data refresh timestamp.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "q": {
       "type": "string"
      },
      "name": {
       "type": "string"
      },
      "page": {
       "type": "integer",
       "default": 1,
       "maximum": 100000,
       "minimum": 1
      },
      "town": {
       "type": "string"
      },
      "status": {
       "type": "string"
      },
      "ods_code": {
       "type": "string"
      },
      "org_type": {
       "type": "string"
      },
      "per_page": {
       "type": "integer",
       "default": 25,
       "maximum": 100,
       "minimum": 1
      },
      "postcode": {
       "type": "string"
      },
      "parent_code": {
       "type": "string"
      },
      "outward_code": {
       "type": "string"
      },
      "open_date_after": {
       "type": "string",
       "format": "date",
       "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
      },
      "close_date_after": {
       "type": "string",
       "format": "date",
       "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
      },
      "health_geography": {
       "type": "string"
      },
      "open_date_before": {
       "type": "string",
       "format": "date",
       "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
      },
      "close_date_before": {
       "type": "string",
       "format": "date",
       "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
      },
      "natio
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/nhs-ods-register-search-england-8d5181bb/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from gankdat.com](https://www.zero.xyz/host/gankdat.com/llms.txt)
