> ## Documentation Index
> Fetch the complete documentation index at: https://docs.courtrules.app/llms.txt
> Use this file to discover all available pages before exploring further.

# List rulebooks

> Lists the official rulebooks you can read, such as the California Rules of Court

Returns the official rulebooks you can read. A rulebook is an official set of numbered rules published as one book, such as the California Rules of Court; see [Rulebooks](/concepts/rulebooks.md) for how rulebooks, rules and requirements fit together. The full list comes back in one response.

Use a rulebook's `id` to read the rulebook with [`/rulebooks/{rulebook_id}`](/api-reference/get-rulebook), list its rules with [`/rulebooks/{rulebook_id}/rules`](/api-reference/rulebook-rules), or read the requirements of its rules with [`/extracted-rules`](/api-reference/extracted-rules).

**jurisdiction** `string`

Only rulebooks that apply in this jurisdiction: a two-letter state code in capitals such as `CA`,
`DC` for the District of Columbia, or `US` for national federal rules.

**scope** `string`

Only rulebooks of this scope: `national`, `statewide` or `court`. A statewide rulebook applies
across one state. A court rulebook applies in the courts it names in `governed_court_ids`.

**district\_id** `string`

Court identifier, such as `il-cook-circuit`. Returns the rulebooks that name this court in
`governed_court_ids`. Statewide and national rulebooks name no courts, so find them with
`jurisdiction` and `scope`. A court we do not map returns `404`.

**q** `string`

Words to find in a rulebook's name, abbreviations, identifier or issuer. Every word must appear.
Not case-sensitive. Example: `CRC`.

```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.courtrules.app/api/v1/rulebooks?jurisdiction=CA&scope=statewide' \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
import requests

resp = requests.get(
    "https://api.courtrules.app/api/v1/rulebooks",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    params={"jurisdiction": "CA", "scope": "statewide"},
)
rulebooks = resp.json()["rulebooks"]
```

```typescript Node.js theme={"theme":{"light":"github-light","dark":"github-dark"}}
const resp = await fetch(
  "https://api.courtrules.app/api/v1/rulebooks?jurisdiction=CA&scope=statewide",
  { headers: { Authorization: "Bearer YOUR_API_KEY" } },
);
const { rulebooks } = await resp.json();
```

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "rulebooks": [
    {
      "id": "california-rules-of-court",
      "name": "California Rules of Court",
      "aliases": ["CRC", "Cal. Rules of Court", "Cal. Rules Ct."],
      "jurisdiction": "CA",
      "scope": "statewide",
      "kind": "court_rules",
      "governed_court_ids": [],
      "issuer": "Judicial Council of California",
      "official_url": "https://courts.ca.gov/forms-rules/rules-court",
      "rule_count": 1488,
      "last_checked_at": "2026-10-19T08:20:21.677476+00:00",
      "site_url": "https://www.courtrules.app/rules/california-rules-of-court"
    }
  ],
  "meta": { "total": 1, "jurisdiction": "CA", "scope": "statewide" }
}
```

## Response fields

**rulebooks** `array`

The rulebooks that match, ordered by name. Empty when none match.

**Rulebook**

**id** `string`

Rulebook identifier. It does not change: if the official name changes, the name changes and
the id stays.

**name** `string`

Official name.

**aliases** `string[]`

Other names and abbreviations readers use, such as `CRC`.

**jurisdiction** `string`

Where the rulebook applies: a state code, `DC`, or `US`.

**scope** `string`

`national`, `statewide` or `court`.

**kind** `string`

`court_rules`, `statute` or `administrative_code`.

**governed\_court\_ids** `string[]`

Court identifiers of the courts a court rulebook names, as listed by
[`/courts`](/api-reference/courts). Empty for statewide and national rulebooks.

**issuer** `string`

The body that adopts and publishes the rules.

**official\_url** `string`

The issuer's official page for the rulebook.

**rule\_count** `integer`

Rules in force that the official source still lists. Repealed, reserved and removed rules are
not counted.

**last\_checked\_at** `string | null`

When we last read the official source. `null` before the first read.

**site\_url** `string`

The rulebook's page on courtrules.app.

**meta** `object`

**Meta**

**total** `integer`

Number of rulebooks returned

**jurisdiction** `string`

The `jurisdiction` filter you sent, when present

**scope** `string`

The `scope` filter you sent, when present

**district\_id** `string`

The `district_id` filter you sent, when present

**q** `string`

The search you sent, when present

## Finding the rulebook you need

* **A state's rules of court:** `jurisdiction=CA&scope=statewide`.
* **A court's local rules:** `district_id=<court id>`. Only rulebooks that name the court match.
* **A rulebook you know by its short name:** `q=CRC`.

Combine filters to narrow the list. A request with no match returns `200` with an empty `rulebooks` array. A rulebook that is not in the list reads as not found everywhere else in the API.

## Errors

### 400: Invalid parameters

Returned for a value the endpoint cannot use, such as `jurisdiction=California` or `scope=local`. Each failing parameter is named.

```json 400 theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "error": "Invalid request",
  "details": [
    {
      "path": "scope",
      "message": "Invalid enum value. Expected 'national' | 'statewide' | 'court', received 'local'"
    }
  ],
  "docs_url": "https://docs.courtrules.app/api-reference/rulebooks"
}
```

### 404: Court not found

Returned when `district_id` is not a court we map.

```json 404 theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "error": "District 'nowhere-court' not found.",
  "suggestion": "Use GET /api/v1/courts to list all valid district identifiers.",
  "docs_url": "https://docs.courtrules.app/api-reference/courts/list-courts"
}
```

Each rulebook in the answer counts as one row against your [daily row limit](/api-reference/rate-limits.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.