---
title: "Full-text, citation and presidential-number search over the US law corpus"
method: GET
path: "/us-law/search"
---

# Full-text, citation and presidential-number search over the US law corpus

`GET /us-law/search`

## Request

- Base URL: `https://ai-law-tracker.com/api/v1`
- URL: `https://ai-law-tracker.com/api/v1/us-law/search`
- Auth: one of:
  - none
  - API key in header `X-API-Key`
  - HTTP bearer

Websearch-syntax full text ("quoted phrases", -exclusion) with a citation-substring fallback; the strategy that answered is reported in `meta.strategy`. A query that is a presidential document number ("EO 14110", "Proclamation 10925") is resolved against the INDEXED number column only — a miss returns nothing with an explanatory `meta.notice`, never a guessed match, because misidentifying a presidential document is worse than returning nothing.

METERED ON RECORDS SERVED, not just on requests. A request cap stops a fast client; a record cap stops a patient one, and only the second is priced against the size of the corpus. Every response carries `meta.record_budget` with what is left in the day and 30-day windows; exhausting it returns 429 `record_budget_exceeded` (distinct from 429 `rate_limited`).

PRODUCT SCOPE: this endpoint belongs to the US Law Platform. A key licensed only for AI Law Tracker (`product: ai_law`) is NOT refused here — it is served at the PUBLIC (keyless) capability level, the same few records any anonymous caller gets. The response headers say so explicitly: `X-ALT-Product` (what your key holds), `X-ALT-Product-Surface` (`us_law`) and `X-ALT-Product-Scope` (`in_product` | `out_of_product`). Your request rate and daily/monthly quota are NEVER degraded — those are metered per key wherever you call. What degrades is capability: page size, pagination depth, field envelope and the record budget.

## Query parameters

- `q` string, required
- `branch` string
- `branch_any` string
- `domain` string
- `domain_primary` string
- `jurisdiction` string
- `jurisdiction_level` string
- `instrument_type` string
- `status` string
- `in_force` boolean
- `is_binding` boolean
- `effective_from` string, date
- `effective_to` string, date
- `enacted_from` string, date
- `enacted_to` string, date
- `repealed_from` string, date
- `repealed_to` string, date
- `retrieved_since` string, date-time
- `verified_since` string, date-time
- `citation` string
- `citation_prefix` string
- `identifier` string
- `record_uid` string
- `sort` 'relevance' | 'effective_date' | 'enacted_date' | 'title'
- `order` 'asc' | 'desc'
- `limit` integer
- `offset` integer

## Response `200`

Search results.

- object
  - `api_version` string
  - `data` UsLawRecord[]
    - `record_uid` string
    - `jurisdiction_level` 'federal' | 'state'
    - `jurisdiction_slug` string
    - `jurisdiction_name` string
    - `instrument_type` string
    - `instrument_label` string
    - `is_binding` boolean
    - `citation` string: Never withheld at any tier.
    - `identifier` string, nullable
    - `title` string
    - `short_title` string, nullable
    - `summary` string, nullable: Withheld in the trimmed (basic) envelope.
    - `status` string
    - `is_in_force` boolean
    - `enacted_date` string, date, nullable
    - `effective_date` string, date, nullable
    - `repealed_date` string, date, nullable
    - `official_url` string: The official government source. Never withheld at any tier.
    - `full_text_url` string, nullable: Where the text lives. We link it; we do not reproduce it.
    - `source_authority` string, nullable
    - `retrieved_at` string, date-time, nullable
    - `last_verified_at` string, date-time, nullable
    - `primary_branch_id` string, nullable
    - `primary_branch_label` string, nullable
    - `primary_domain_id` string, nullable: `other_unclassified` when not yet substantively classified.
    - `primary_domain_label` string, nullable
    - `domains` object[]: ALL assigned domains, primary and secondary — the many-to-many classification.
    - `edition_year` integer, nullable
    - `edition_label` string, nullable
    - `executive_order_number` integer, nullable
    - `proclamation_number` integer, nullable
    - `presidential_document_number` string, nullable
  - `meta` object
  - `attribution` string

## Other responses

- `400`: Missing or invalid q.
- `429`: Rate limited, or `record_budget_exceeded`.

---

[API](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api.md) · [All operations](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ai-law-tracker/apis/ai-law-tracker-public-laws-api/revisions/25403268a853?raw)
