# ORR Enforcement Data

> ORR Enforcement Data is a paid API for AI agents from ticks.bnm.farm, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-12).

Returns structured JSON records of UK Office of Rail and Road (ORR) enforcement actions, statutory notices, and investigations against rail operators.

## Facts

- Endpoint: GET https://ticks.bnm.farm/orr-enforcement?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/orr-enforcement-data-1794d0fb
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_0STOMrPXi7SjtWl7bsmIA

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 orr-enforcement-data-1794d0fb
```

Example prompt: Pull the latest ORR enforcement actions and statutory notices against UK rail operators so I can see which train companies have been sanctioned recently.

## When to prefer this

Choose this endpoint when you need machine-readable, structured access to official UK ORR enforcement data without scraping the ORR website yourself. It is ideal for agents monitoring rail sector regulatory compliance, building alerting pipelines for new enforcement actions, or conducting due diligence on UK train operating companies. Prefer this over manual web scraping or Freedom of Information requests when you need clean JSON with docket IDs, dates, and source document links.

## Known failure modes

- HTTP 402 Payment Required if the x402 micropayment header is missing or invalid — endpoint requires $0.05 USDC per call
- Empty records array if no enforcement actions have been published recently
- Stale asOf date if the ORR source page has not been updated
- Network timeout if the upstream ORR.gov.uk source is unavailable
- Malformed response if the ORR website structure changes and scraping breaks

## How this service works

Official public data as JSON. Unpaid paid routes return HTTP 402.

## Output

A JSON object containing a boolean success flag, product name ('orr-enforcement-bodies'), status string, fetch timestamp, asOf date, source URL, record count, an array of enforcement records (each with id, url, date, firm name, and type), and a cards array with richer teaser objects including body text, docket reference, source PDF URL, and institution name.

## 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",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "headers": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    },
    "queryParams": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "schema": {
     "type": "object"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "schema": {
  "type": "object",
  "required": [
   "ok",
   "product",
   "status",
   "fetchedAt",
   "asOf",
   "source",
   "recordCount",
   "records",
   "cards"
  ],
  "properties": {
   "ok": {
    "type": "boolean"
   },
   "asOf": {
    "type": "string"
   },
   "cards": {
    "type": "array",
    "items": {
     "type": "object"
    }
   },
   "source": {
    "type": "string"
   },
   "status": {
    "type": "string"
   },
   "product": {
    "type": "string"
   },
   "records": {
    "type": "array",
    "items": {
     "type": "object"
    }
   },
   "fetchedAt": {
    "type": "string"
   },
   "recordCount": {
    "type": "integer"
   }
  }
 },
 "example": {
  "ok": true,
  "asOf": "2026-03-03",
  "cards": [
   {
    "id": "orr-to-northern-trains-limited-statutory-notice-dated-3-march-2026",
    "body": "This teaser is not an official enforcement body. Northern Trains Limited Railways Act 1993 s.55 statutory-notice excerpt.",
    "date": "2026-03-03",
    "docket": "orr-to-northern-trains-limited-statutory-notice-dated-3-march-2026",
    "sourceUrl": "https://www.orr.gov.uk/sites/default/files/2026-03/orr-to-northern-trains-limited-statutory-notice-dated-3-march-2026.pdf",
    "institution": "Northern Trains Limited"
   }
  ],
  "source": "https://www.orr.gov.uk/monitoring-regulation/rail/investigations",
  "status": "ok",
  "product": "orr-enforcement-bodies",
  "records": [
   {
    "id": "orr-to-northern-trains-limited-statutory-notice-dated-3-march-2026",
    "url": "https://www.orr.gov.uk/sites/default/files/2026-03/orr-to-northern-trains-limited-statutory-notice-dated-3-march-2026.pdf",
    "date": "2026-03-03",
    "firm": "Northern Trains Limited",
    "type": "orr-enforcement"
   }
  ],
  "fetchedAt": "2026-08-27T22:45:00.000Z",
  "recordCount": 1
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/orr-enforcement-data-1794d0fb/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from ticks.bnm.farm](https://www.zero.xyz/host/ticks.bnm.farm/llms.txt)
