# Find Case Law API

> Find Case Law returns UK court judgments and tribunal decisions as a workflow and API.

Search judgments requires keywords or party names and can be filtered by court and judgment dates; results can be sorted and paged.

- Page: https://fous.com/tools/find-case-law
- Handle: `@find-case-law`
- Category: [Legal](https://fous.com/tools/category/legal)
- Source website: https://caselaw.nationalarchives.gov.uk
- Last verified: Sep 29, 2026

## Methods

### Search judgments

Operation `search_judgments`, 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.

Search UK court judgments and tribunal decisions by keywords or party names. Filter by court and judgment dates, and return matching text, citations, and available PDF links. Coverage depends on judgments published by Find Case Law.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `page` | integer | no | `2` | Page of results, for example 2. Defaults to 1. |
| `sort` | string | no | `"oldest"` | Result order, for example newest. Defaults to relevance. |
| `court` | string | no | `"Employment Appeal Tribunal"` | Court or tribunal name, for example Supreme Court, Court of Appeal, Employment Appeal Tribunal, or High Court (King's Bench). Defaults to all. |
| `query` | string | yes | `"unfair dismissal"` | Keywords or party names to search, for example Uber v Aslam. |
| `max_results` | integer | no | `3` | Maximum judgments to return, for example 20 (up to 50). |
| `decided_after` | string | no | `"2021-01-01"` | Include judgments on or after this date, for example 2021-01-01. |
| `decided_before` | string | no | `"2021-12-31"` | Include judgments on or before this date, for example 2021-12-31. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "description": "Page of results, for example 2. Defaults to 1.",
      "x-fous-developer": true,
      "examples": [
        2
      ]
    },
    "sort": {
      "enum": [
        "relevance",
        "newest",
        "oldest"
      ],
      "type": "string",
      "default": "relevance",
      "description": "Result order, for example newest. Defaults to relevance.",
      "examples": [
        "oldest",
        "newest"
      ]
    },
    "court": {
      "type": "string",
      "default": "all",
      "description": "Court or tribunal name, for example Supreme Court, Court of Appeal, Employment Appeal Tribunal, or High Court (King's Bench). Defaults to all.",
      "examples": [
        "Employment Appeal Tribunal",
        "Supreme Court",
        "High Court (King's Bench)"
      ]
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Keywords or party names to search, for example Uber v Aslam.",
      "examples": [
        "unfair dismissal",
        "Uber v Aslam",
        "zzzxqnonexistentpartynamenothing"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum judgments to return, for example 20 (up to 50).",
      "x-fous-developer": true,
      "examples": [
        3,
        2
      ]
    },
    "decided_after": {
      "type": "string",
      "format": "date",
      "description": "Include judgments on or after this date, for example 2021-01-01.",
      "examples": [
        "2021-01-01"
      ]
    },
    "decided_before": {
      "type": "string",
      "format": "date",
      "description": "Include judgments on or before this date, for example 2021-12-31.",
      "examples": [
        "2021-12-31"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "page": 2,
      "sort": "oldest",
      "court": "Employment Appeal Tribunal",
      "query": "unfair dismissal",
      "max_results": 3
    },
    {
      "sort": "newest",
      "court": "Supreme Court",
      "query": "Uber v Aslam",
      "max_results": 3,
      "decided_after": "2021-01-01",
      "decided_before": "2021-12-31"
    },
    {
      "query": "zzzxqnonexistentpartynamenothing",
      "max_results": 2
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `judgments` | array |  | Matching judgments and decisions. |
| `judgments[].court` | string or null | `"Employment Appeal Tribunal"` | Court or tribunal name. |
| `judgments[].snippet` | string or null | `"...video link rendered the hearing unfair as it prevented the Appellant..."` | Plain-text matching passage from the search results. |
| `judgments[].pdf_link` | string or null | `"https://caselaw.nationalarchives.gov.uk/eat/2022/3/data.pdf"` | PDF link, when one is available. |
| `judgments[].case_name` | string | `"Haziz Rahim v The Commissioner of Police of The Metropolis"` | Name of the case. |
| `judgments[].judgment_date` | string or null | `"2021-07-19"` | Date the judgment was handed down. |
| `judgments[].judgment_link` | string | `"https://caselaw.nationalarchives.gov.uk/eat/2022/3"` | Judgment page link. |
| `judgments[].neutral_citation` | string or null | `"[2022] EAT 3"` | Neutral case citation. |

**Example input**

```json
{
  "page": 2,
  "sort": "oldest",
  "court": "Employment Appeal Tribunal",
  "query": "unfair dismissal",
  "max_results": 3
}
```

**Example output**

```json
{
  "judgments": [
    {
      "court": "Employment Appeal Tribunal",
      "snippet": "...video link rendered the hearing unfair as it prevented the Appellant...",
      "pdf_link": "https://caselaw.nationalarchives.gov.uk/eat/2022/3/data.pdf",
      "case_name": "Haziz Rahim v The Commissioner of Police of The Metropolis",
      "judgment_date": "2021-07-19",
      "judgment_link": "https://caselaw.nationalarchives.gov.uk/eat/2022/3",
      "neutral_citation": "[2022] EAT 3"
    },
    {
      "court": "Employment Appeal Tribunal",
      "snippet": "...presented a claim form claiming unfair dismissal against the respondent, a...",
      "pdf_link": "https://caselaw.nationalarchives.gov.uk/eat/2022/22/data.pdf",
      "case_name": "Y Saloo v Interserve Learning and Employment (Services) Ltd",
      "judgment_date": "2021-08-05",
      "judgment_link": "https://caselaw.nationalarchives.gov.uk/eat/2022/22",
      "neutral_citation": "[2022] EAT 22"
    },
    {
      "court": "Employment Appeal Tribunal",
      "snippet": "Unfair Dismissal",
      "pdf_link": "https://caselaw.nationalarchives.gov.uk/eat/2022/2/data.pdf",
      "case_name": "I Mbola v Royal Mail",
      "judgment_date": "2021-09-01",
      "judgment_link": "https://caselaw.nationalarchives.gov.uk/eat/2022/2",
      "neutral_citation": "[2022] EAT 2"
    }
  ]
}
```

## 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": "@find-case-law",
  "visibility": "public",
  "operation": "search_judgments",
  "version": 1,
  "input": {
    "page": 2,
    "sort": "oldest",
    "court": "Employment Appeal Tribunal",
    "query": "unfair dismissal",
    "max_results": 3
  },
  "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\": \"@find-case-law\",\n  \"visibility\": \"public\",\n  \"operation\": \"search_judgments\",\n  \"version\": 1,\n  \"input\": {\n    \"page\": 2,\n    \"sort\": \"oldest\",\n    \"court\": \"Employment Appeal Tribunal\",\n    \"query\": \"unfair dismissal\",\n    \"max_results\": 3\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": "@find-case-law",
  "visibility": "public",
  "operation": "search_judgments",
  "version": 1,
  "input": {
    "page": 2,
    "sort": "oldest",
    "court": "Employment Appeal Tribunal",
    "query": "unfair dismissal",
    "max_results": 3
  },
  "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/find-case-law`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `search_judgments`: Search judgments. 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-find-case-law https://api.fous.com/mcp/tools/find-case-law --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

- Find judgments by case name or keywords
- Review decisions from a selected court or tribunal
- Track judgments within a date range
- Gather case citations for legal research
- Open available judgment PDFs

## 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 Find Case Law 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 Find Case Law account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from caselaw.nationalarchives.gov.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.

### Which judgments mention a specific party or keyword?

Search judgments finds matches using the party name or keywords you provide.

### Which court or tribunal issued a judgment?

Search judgments returns the court or tribunal name for each matching judgment.

### What is a judgment’s neutral citation and date?

Search judgments returns each matching judgment’s neutral citation and the date it was handed down.

## Related

- [legislation.gov.uk API](https://fous.com/tools/legislation-gov-uk.md): legislation.gov.uk provides official legislation, latest available revised section text or contents, and title or topic search results; some older Acts lack structured text.
- [CourtListener API](https://fous.com/tools/courtlistener.md): CourtListener returns searchable published U.S. opinions with accessible text and case details, plus archived federal RECAP dockets newest-first, with previews limited to public search results.
- [National Archives API](https://fous.com/tools/national-archives.md): Search the public U.S. National Archives Catalog for historical records.
- [Oyez API](https://fous.com/tools/oyez.md): Oyez provides Supreme Court cases, oral arguments and opinions, with case summaries, decisions and votes; some voting, citation, audio or decision details are unavailable.
- [Federal Register API](https://fous.com/tools/federal-register.md): Search United States federal rules, proposed rules, notices, and presidential documents.
- [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.
- [Find a Tender API](https://fous.com/tools/find-a-tender.md): UK government public procurement notices and tenders.
- [EUR-Lex API](https://fous.com/tools/eur-lex.md): EUR-Lex provides official EU legislation, relevance-ranked filtered searches, and article text from the latest consolidation when available, with stated general application dates.
- [All Legal tools](https://fous.com/tools/category/legal)
