# 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/workflows/find-case-law
- Handle: `@find-case-law`
- Category: [Legal](https://fous.com/workflows/category/legal)
- Source website: https://caselaw.nationalarchives.gov.uk
- Last verified: Sep 29, 2026
- Fous is not affiliated with Find Case Law.

## Methods

### Search judgments

Operation `search_judgments`, version 1. 1 credit per call.

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

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_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.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

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=120) 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.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_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);
```

Or describe the data in plain language: send `{"api":"@find-case-law","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## 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

### Is Fous affiliated with Find Case Law?

No. Fous is not affiliated with Find Case Law. This workflow reads the public caselaw.nationalarchives.gov.uk website and returns its data.

### How much does it cost?

Each run costs 1 credit. 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; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check 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/workflows/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/workflows/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/workflows/national-archives.md): Search the public U.S. National Archives Catalog for historical records.
- [Oyez API](https://fous.com/workflows/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/workflows/federal-register.md): Search United States federal rules, proposed rules, notices, and presidential documents.
- [Companies House API](https://fous.com/workflows/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/workflows/find-a-tender.md): UK government public procurement notices and tenders.
- [EUR-Lex API](https://fous.com/workflows/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 workflows](https://fous.com/workflows/category/legal)
