The National Archives API: Search judgments
Searches UK court judgments and tribunal decisions on Find Case Law by keywords or party names. Results can be filtered by court and by judgment date.
Unofficial. Not affiliated with or endorsed by The National Archives.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Page optional
page Page of results, for example 2. Defaults to 1.
1 (default)
Whole number 1 or more.
- Sort optional
sort Result order, for example newest. Defaults to relevance.
relevance (default)
One of
relevance,newest,oldest.- Court optional
court Court or tribunal name, for example Supreme Court, Court of Appeal or Employment Appeal Tribunal. Defaults to all.
all (default)
- Query, required
query Keywords or party names to search, for example Uber v Aslam.
Uber v Aslam
- Max Results optional
max_results Maximum judgments to return (up to 50).
20 (default)
Whole number from 1 to 50.
- Decided After optional
decided_after Include judgments on or after this date, YYYY-MM-DD.
Not set
- Decided Before optional
decided_before Include judgments on or before this date, YYYY-MM-DD.
Not set
Input as JSON
{ "query": "Uber v Aslam"}Output
{ "judgments": [ { "court": "Court of Appeal (Civil Division)", "snippet": "UBER B.V. (“UBV”...", "pdf_link": "https://caselaw.nationalarchives.gov.uk/ewca/civ/2018/2748/data.pdf" , "case_name": "Uber B.V. (\"UBV\") & Ors v Aslam & Ors", "judgment_date": "2018-12-19", "judgment_link": "https://caselaw.nationalarchives.gov.uk/ewca/civ/2018/2748" , "neutral_citation": "[2018] EWCA Civ 2748" }, { "court": "United Kingdom Supreme Court", "snippet": "Uber BV and others", "pdf_link": "https://caselaw.nationalarchives.gov.uk/uksc/2021/5/data.pdf" , "case_name": "Uber BV and others v Aslam and others", "judgment_date": "2021-02-19", "judgment_link": "https://caselaw.nationalarchives.gov.uk/uksc/2021/5" , "neutral_citation": "[2021] UKSC 5" }, { "court": "United Kingdom Supreme Court", "snippet": "Uber Britannia Limited", "pdf_link": "https://caselaw.nationalarchives.gov.uk/uksc/2025/31/data.pdf" , "case_name": "D.E.L.T.A. Merseyside Limited and another v Uber Britannia Limited", "judgment_date": "2025-07-29", "judgment_link": "https://caselaw.nationalarchives.gov.uk/uksc/2025/31" , "neutral_citation": "[2025] UKSC 31" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"caselaw.nationalarchives.gov.uk/search_judgments","input":{"query":"Uber v Aslam"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "caselaw.nationalarchives.gov.uk/search_judgments" , "input": { "query": "Uber v Aslam" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "caselaw.nationalarchives.gov.uk/search_judgments" , "input": { "query": "Uber v Aslam" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run caselaw.nationalarchives.gov.uk/search_judgments# with {"query":"Uber v Aslam"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "query" ], "properties": { "page": { "type": "integer", "default": 1, "minimum": 1, "description": "Page of results, for example 2. Defaults to 1." }, "sort": { "enum": [ "relevance", "newest", "oldest" ], "type": "string", "default": "relevance", "description": "Result order, for example newest. Defaults to relevance." }, "court": { "type": "string", "default": "all", "description": "Court or tribunal name, for example Supreme Court, Court of Appeal or Employment Appeal Tribunal. Defaults to all." }, "query": { "type": "string", "minLength": 1, "description": "Keywords or party names to search, for example Uber v Aslam." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum judgments to return (up to 50)." }, "decided_after": { "type": "string", "description": "Include judgments on or after this date, YYYY-MM-DD." }, "decided_before": { "type": "string", "description": "Include judgments on or before this date, YYYY-MM-DD." } }}Output schema
{ "type": "object", "required": [ "judgments" ], "properties": { "judgments": { "type": "array", "items": { "type": "object", "properties": { "court": { "type": [ "string", "null" ] }, "snippet": { "type": [ "string", "null" ] }, "pdf_link": { "type": [ "string", "null" ] }, "case_name": { "type": "string" }, "judgment_date": { "type": [ "string", "null" ] }, "judgment_link": { "type": "string" }, "neutral_citation": { "type": [ "string", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
caselaw.nationalarchives.gov.uk/search_judgments- Returns
- case name, court, date, neutral citation, snippet, judgment link, PDF link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method caselaw.nationalarchives.gov.uk/search_judgments with the inputs above.
Ask your agent
- Find recent Supreme Court judgments mentioning unfair dismissal, newest first, max 10 results
- Look up Uber v Aslam decision and its neutral citation
- Search Court of Appeal rulings on tenant deposit disputes decided between 2021-01-01 and 2022-06-30
- Show me Employment Appeal Tribunal decisions about holiday pay on page 2 of results
- Find judgments involving the party name Smith v Jones Ltd, oldest first, up to 25 results on nationalarchives.gov.uk
See more
Searches CourtListener US court opinions by keywords or case name, with optional court, decision dates and sorting.
courtlistener.com/search_case_lawSearches public National Archives Catalog records by keywords, year range, material type and online availability, in catalog relevance order.
catalog.archives.gov/search_recordsSearch UK legislation by topic or title, with optional type and year filters. Closest title matches appear first; broader text matches fill remaining places.
legislation.gov.uk/search_legislationFinds federal RECAP dockets involving a named person or company, newest filed first. Only dockets in the RECAP Archive appear.
courtlistener.com/search_federal_docketsLists a UK company's Companies House filings, newest first, with date, form code, type, description, page count and PDF link. Finds the company by name, company number or Companies House link; a category picks accounts, confirmation statements, officers, address, capital, charges or incorporation filings.
find-and-update.company-information.service.gov.uk/list_filing_historyFinds a US court opinion on CourtListener by case name, citation, or opinion link, and returns its metadata, opinions, judges, citing-case count and the lead opinion's full text from its PDF.
courtlistener.com/get_court_opinionFinds an Oyez Supreme Court case by name or case link and returns its summary, decision, justice votes and argument audio links.
oyez.org/get_supreme_court_caseSearches Guardian articles by keyword through the public Google News feed for theguardian.com, optionally within publication dates, ordered newest first or by relevance, and returns each article's headline, summary, authors, section and publication time from its Guardian page.
theguardian.com/search_news