Search US statutes, constitutions, court rules, and executive actions
Search across federal and state law and get back the most relevant sections with citations and links to official source documents.
Corpora (corpusType):
USC: United States Code (54,855 sections)CFR: Code of Federal Regulations (219,403 sections)STATE: State statutory codes, 49 states plus DC and Puerto Rico. Call/statutes/coveragefor live coverage and/statutes/divisions(corpusType=STATE&state=XX) for a state’s codes; see the Coverage page for the full breakdown.CONSTITUTION: U.S. Constitution (Articles I-VII + 27 Amendments)FEDERAL_RULES: FRCP, FRCrP, FRE, FRAP, FRBP (297 sections)STATE_CONSTITUTION: state constitutions (41 jurisdictions)STATE_RULES: state court rules (AZ, CA, IL, MD, MN, NV, PA)EXECUTIVE_ACTION: Federal Register Presidential Documents (Executive Orders, Proclamations, Memos; 2015 to today, refreshed daily)REGULATION: state administrative regulations (pair withstate; call/statutes/coveragefor coverage)FEDERAL_REGISTER: Federal Register agency rules, final and proposedAGENCY_GUIDANCE: agency guidance (SSA rulings, IRS notices, revenue rulings and procedures)
Authentication: API key via Authorization: Bearer vq_key_...
Cost: 4 credits per call (see /api-credits/pricing). Failed calls are not charged.
Pagination: use limit (page size, max 50) with offset (max 40); check
hasMore in the response to page forward. count is the size of the CURRENT
page, not a corpus-wide match total — ranking runs over a bounded window, so no
such total exists. (total is a deprecated alias for count.) Every page of a
given query slices one ranking, so results never repeat or go missing across
pages.
Returns relevant sections with full metadata: citation, title hierarchy, and direct links to official source documents where available.
Matching (matchType): search is hybrid semantic + keyword by default
(any), which suits natural-language questions. For strict keyword or
exact-phrase lookups, use matchType: "all" or "phrase" — there is no
separate keyword-only mode to reach for. To jump straight to one section, pass
its citation as the query (e.g. 42 U.S.C. § 1983) and it resolves to rank 1.
Examples
# Search SEC regulations
requests.post(url, headers=h, json={
"query": "insider trading material nonpublic information",
"corpusType": "CFR",
"titleNumber": 17,
"limit": 5,
})
# Search California state statutes
requests.post(url, headers=h, json={
"query": "shareholder derivative action standing",
"corpusType": "STATE",
"state": "ca",
})
# Search Executive Orders on a topic
requests.post(url, headers=h, json={
"query": "AI safety federal agency adoption",
"corpusType": "EXECUTIVE_ACTION",
})
# Search Federal Rules of Civil Procedure
requests.post(url, headers=h, json={
"query": "personal jurisdiction long-arm statute",
"corpusType": "FEDERAL_RULES",
})
# Cross-corpus search (no corpusType filter)
requests.post(url, headers=h, json={
"query": "due process equal protection fourteenth amendment",
})
Parameters
Every filter below accepts a single value OR a list, so one call can span several jurisdictions or corpora.
query(required): natural-language or keyword query, 2 to 500 characters.corpusType(optional, string or list): one of the corpus tokens above, e.g."CFR"or["USC", "CFR"]. Case-insensitive. Omit to search every corpus.state(optional, string or list): a 2-letter jurisdiction code (50 states + DC + PR), orfederalto scope to USC / CFR / Constitution / federal rules in one call.["ca", "ny", "tx"]searches three at once. Case-insensitive. An unrecognized value is rejected with 422 rather than silently matching nothing.code(optional, string or list): restrict to specific state statutory codes, e.g."tx_pe"for the Texas Penal Code. Values are thecodefield returned byGET /statutes/divisions?corpusType=STATE&state=XX. This is the only way to scope BELOW a jurisdiction:state=txalone searches all ~15 Texas codes.titleNumber(optional, integer): restrict to a USC/CFR title (e.g. 17 for SEC, 42 for civil rights). Applies only toUSC/CFR; state titles are alphabetic or collide across states, so usecodefor those.chapter/part(optional, string or list): scope BELOW a title/code to a chapter (USC/state) or part (CFR), e.g.chapter="21"orpart="240". This is the search-side of theparentobject on each result: feed a hit’sparentback to search its neighbors. Must be paired withtitleNumberorcode, whichparentalways carries; an unpaired chapter/part is rejected with 422.matchType(optional):any(default) intent-ranked hybrid,allrequires every term,phraserequires the exact phrase.yearFrom/yearTo(optional, integer): bound results by version year. Sections with no year are excluded once either bound is set.limit(optional, default 10, max 50): page size.offset(optional, default 0, max 70): results to skip. See Pagination below.
Tips
- Provide
corpusTypewhenever you know it. Unscoped queries can surface keyword matches from unrelated corpora; a corpus filter sharply improves precision. - Take a returned
actIdand call/statutes/section/{actId}for metadata or/statutes/section/{actId}/bodyfor the full text. To enrich a whole page at once, POST up to 50 ids to/statutes/sectionsinstead of looping. relevanceScoreranks results within one response; do not compare it across different queries. A recognized citation (e.g."Cal. CIV § 1952","42 USC 1983") always resolves its exact section to the top result atrelevanceScore: 1.0; if you already know the citation,GET /statutes/resolveis a cheaper way to get the same section without paying for a search.
Authorizations
API key issued from the Vaquill developer dashboard. Pass as Authorization: Bearer vq_key_...
Body
Search query in natural language.
2 - 500"insider trading penalties"
Restrict to one corpus, or to several by passing a list ("corpusType": ["USC", "CFR"]). One of: USC (United States Code), CFR (Code of Federal Regulations), STATE (state statutory codes; call /statutes/coverage for the list of ingested jurisdictions), CONSTITUTION (U.S. Constitution), FEDERAL_RULES (FRCP / FRCrP / FRE / FRAP / FRBP), STATE_CONSTITUTION (state constitutions; call /statutes/coverage for the current jurisdiction list), STATE_RULES (state court rules; see /statutes/coverage), EXECUTIVE_ACTION (Federal Register Presidential Documents), REGULATION (state administrative regulations; pair with state), FEDERAL_REGISTER (Federal Register agency rules, final and proposed), AGENCY_GUIDANCE (agency guidance: SSA rulings, IRS notices, revenue rulings and procedures). Omit to search across all corpora.
USC, CFR, STATE, CONSTITUTION, FEDERAL_RULES, STATE_CONSTITUTION, STATE_RULES, EXECUTIVE_ACTION, REGULATION, FEDERAL_REGISTER, AGENCY_GUIDANCE, SENTENCING_GUIDELINES, US_TAX_TREATY, STATE_AGENCY_GUIDANCE "CFR"
Jurisdiction filter. A 2-letter code for one of the 52 supported US jurisdictions (50 states + DC + PR), or federal to scope to USC / CFR / Constitution / federal rules. Pass a LIST to search several at once ("state": ["ca", "ny", "tx"]), which is one call instead of one per jurisdiction. Case-insensitive: ca and CA both work. An unrecognized value is rejected with 422 rather than silently matching nothing. Omit to search every jurisdiction.
federal, al, ak, az, ar, ca, co, ct, de, dc, fl, ga, hi, id, il, in, ia, ks, ky, la, me, md, ma, mi, mn, ms, mo, mt, ne, nv, nh, nj, nm, ny, nc, nd, oh, ok, or, pa, pr, ri, sc, sd, tn, tx, ut, vt, va, wa, wv, wi, wy "ca"
Restrict to specific state statutory codes, e.g. tx_pe for the Texas Penal Code. Values are the actIds returned by GET /statutes/divisions?corpusType=STATE&state=XX, so the browse output can be fed straight back in. Pass a list to search several codes, across states if you like (["tx_pe", "ca_pen"]). This is the only way to scope below a whole jurisdiction: state=tx alone searches all ~15 Texas codes at once.
"tx_pe"
Only return sections whose version year is >= this. Combine with yearTo for a window. Sections with no year are excluded once either bound is set.
1700 <= x <= 21002020
Only return sections whose version year is <= this.
1700 <= x <= 21002026
Filter by USC/CFR title number (e.g., 17 for SEC, 42 for civil rights). Only meaningful for USC/CFR; ignored for state corpora whose titles are alphabetic (e.g. Texas pe = Penal Code).
17
Scope a search to one or more chapters within a title or code, e.g. 21 for USC Title 42 Chapter 21. This is the search-side of the parent object on each result: pass a hit's parent.chapter straight back to search that hit's neighbors. Chapter numbers repeat across titles, so pair it with titleNumber (USC) or code (state); an unpaired chapter is rejected. String or list.
"21"
Scope a search to one or more parts within a title, e.g. 240 for 17 C.F.R. Part 240. The CFR counterpart to chapter: pass a hit's parent.part straight back to search within that part. Pair it with titleNumber; an unpaired part is rejected. String or list.
"240"
Scope to one or more of the following. The named source within corpusType, for corpora that fold several independently filterable bodies of law into one token.
FEDERAL_RULES sources: frcp (Federal Rules of Civil Procedure), frcrp (Federal Rules of Criminal Procedure), fre (Federal Rules of Evidence), frap (Federal Rules of Appellate Procedure), frbp (Federal Rules of Bankruptcy Procedure), sct (Rules of the Supreme Court of the United States).
CFR sources: far (Federal Acquisition Regulation (48 C.F.R. ch. 1)), dfars (Defense Federal Acquisition Regulation Supplement (48 C.F.R. ch. 2)) (both are already part of CFR; this only splits the existing Title 48 data by chapter, it does not add new sections).
AGENCY_GUIDANCE sources: agency_guidance (General agency guidance), administrative_guidance (Synthesized administrative guidance (e.g. SALT cap, CTC, 401(k) limits)), ssa_ruling (Social Security Administration Rulings), irs_rev_proc (IRS Revenue Procedures), irs_notice (IRS Notices), irs_rev_rul (IRS Revenue Rulings), irs_announcement (IRS Announcements), merger_guidelines (DOJ & FTC Merger Guidelines (2023)), doj_leniency (DOJ Antitrust Division Leniency Policy), copyright_circular (US Copyright Office Circulars), doj_justice_manual (DOJ Justice Manual), uscis_policy_manual (USCIS Policy Manual), mpep (USPTO Manual of Patent Examining Procedure (MPEP)), tmep (USPTO Trademark Manual of Examining Procedure (TMEP)), cftc_staff_letter (CFTC Staff Letters (no-action, exemptive, interpretative; 2008-present)), fincen_ruling (FinCEN Administrative Rulings), fincen_guidance (FinCEN Guidance (alerts, advisories, notices, bulletins, fact sheets)), frb_sr_letter (Federal Reserve Supervision and Regulation (SR) / Consumer Affairs (CA) Letters), occ_bulletin (OCC Bulletins), occ_interpretive_letter (OCC Interpretive Letters), fdic_fil (FDIC Financial Institution Letters (FILs)), dfars_pgi (DFARS PGI (Procedures, Guidance, and Information)), nlrb_gc_memo (NLRB General Counsel Memoranda), nlrb_advice_memo (NLRB Division of Advice Memoranda (rolling 10-year window, not the full archive)), cpsc_advisory_opinion (CPSC Office of General Counsel Advisory Opinions (historical, 1970s-2012)), cpsc_secg (CPSC Small Entity Compliance Guides), bis_advisory_opinion (BIS (Bureau of Industry and Security) Advisory Opinions), ddtc_commodity_jurisdiction (DDTC (Directorate of Defense Trade Controls) Commodity Jurisdiction Determinations), ddtc_guidance (DDTC (Directorate of Defense Trade Controls) Policy Guidance Documents), hhs_ocr_hipaa_faq (HHS Office for Civil Rights HIPAA FAQs), hhs_ocr_hipaa_guidance (HHS Office for Civil Rights HIPAA Guidance Materials), hhs_ocr_resolution_agreement (HHS Office for Civil Rights HIPAA Resolution Agreements and Civil Money Penalties), fcc_declaratory_ruling (FCC (Federal Communications Commission) Declaratory Rulings), ferc_policy_statement (FERC (Federal Energy Regulatory Commission) Policy Statements), doe_appliance_guidance (DOE Appliance Standards Guidance and FAQs). Every result carries its own source, so you can pass a hit's value straight back. An unrecognized value is rejected with 422.
"sct"
Return only these result fields, e.g. ["title", "excerpt"]. A result carries 40+ fields and most are null on any given row, so a full page of 50 ships a lot of nulls. actId and citation are always included, because a row without them cannot be used or attributed. Unknown names are rejected with 422 so a typo does not silently drop a field you needed. Omit for the full object.
Number of results to return per page.
1 <= x <= 50How many results to skip, for paging. Every page of a given query is cut from one ranking, so results never repeat or go missing between pages, and a later page costs no more than the first. The deepest reachable result is offset + limit; check hasMore to know when there is nothing further.
0 <= x <= 70Characters of matching text to include in each result's excerpt. The excerpt is a ranking preview; use /statutes/section/{actId}/body for the full text. Default 500.
100 <= x <= 4000Controls exact vs. semantic matching, so there is no need for a separate keyword-only search mode. any (default) is hybrid semantic + keyword ranking and suits natural-language questions. Use all for strict keyword matching (every query term must appear in the text) or phrase for an exact-phrase match, e.g. a defined term or a statutory phrase, when you want lexical precision. To pull up one specific section, pass its citation as the query (e.g. 42 U.S.C. § 1983, Cal. Civ. Code § 1950.5) and it resolves to that section at rank 1.
any, all, phrase Response
Ranked sections for the query.
Matching sections, most relevant first. Ordering is by relevance, not statutory order; use /statutes/section/{actId}/related for what sits either side of a section in its code.
How many results came back in THIS response, i.e. the length of results. It is not a total match count: the API ranks a bounded set of candidates rather than scoring the whole corpus, so no such total exists. Use hasMore to decide whether to ask for another page.
DEPRECATED alias for count, kept for backward compatibility. The name reads as a corpus-wide match total, which it never was. Use count instead.
The offset applied to this page.
Whether more results exist beyond this page.
The search query used.
Server-side time for this request in milliseconds, excluding network transit. Useful for spotting a slow query; not billed on.
240.5
Credits actually charged for this call. Read it rather than assuming the list price: failed and refunded work bills 0, and batch endpoints charge per item returned, so a partial result costs less than a full one.
4

