Keyword full-text search
ftsKeyword full-text search (BM25) over opinion body text in the local mirror. Keyword, not concept: matches the exact words given (case-insensitive) with no stemming ("petition" does not match "petitions"); all words must appear; "double quotes" mark an exact phrase. A case that states the concept in other words does not appear; semantic_search covers that gap. Coverage (exact scan 2026-07-18): the best extracted text per record is searched; 8,751,062 records carry 500+ characters, 1,993,069 carry 1-499, and 1,798 have no text and cannot match. Returns opinion_id, cluster_id, rank (BM25), case metadata and a matched-text snippet with [hl]...[/hl] around hits. Case law in this mirror ends 2026-09-30 (exact scan of all 10,174,547 case records): a thin or empty result for recent authority means the collection ends there, not that no such case exists. Responses carry body_as_of, body_pending (state, exact count, read_at) and body_note, which say when the stored opinion text is older than the case records while a refresh is written; a count that could not be read makes an empty result inconclusive. A cold index may answer 503 briefly; the server retries once. Every response carries a "note" stating that response’s source and coverage limits.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | keywords; all must appear, no stemming; "quotes" = exact phrase | |
| court | No | filter to CourtListener court ids (e.g. ["scotus","ca10"]); OR within the list | |
| limit | No | max results, 1-20 (default 20) | |
| date_filed_after | No | only cases filed on/after this date (YYYY-MM-DD) | |
| date_filed_before | No | only cases filed on/before this date (YYYY-MM-DD) | |
| min_citation_count | No | minimum citation_count | |
| precedential_status | No | filter by precedential status; OR within the list |