Skip to main content
What this gets you: a table of contents for any code or title. You can render a browsable tree of a law in your product, the way a person would flip through it, instead of surfacing only single sections from search. Search finds the section that answers a question, but it cannot enumerate a code. When you need the structure (titles, then chapters, then sections, in the order a human reads them), use GET /us/statutes/divisions. Each call returns the immediate children of wherever you are, so you can render a tree, build a table of contents, or walk a whole title without paging through search. Endpoint used: GET /us/statutes/divisions.
Browse supports USC, CFR, STATE, REGULATION, STATE_RULES, CONSTITUTION, STATE_CONSTITUTION and FEDERAL_RULES. Every legend entry on GET /us/statutes/coverage carries a browsable flag that says which, so read it instead of probing. Executive actions, the Federal Register and agency guidance are dated series or share no common tree; reach those with POST /us/statutes/search (see the Quickstart). A request whose filters do not fit the corpus is rejected with 422 before anything is charged.

How drilling works

Pass the deepest level you already know, and the response returns the level directly below it. Which level that is depends on the code, because each section’s own place in its publisher’s hierarchy decides it. A code does not have a fixed number of levels, so read level and each node’s kind on every response instead of assuming a depth, and keep drilling until isLeaf is true. The levels in this table are what the corpus recorded on the day it was written. A listing can also mix kinds: a state code lists its chapters followed by loose sections, and a U.S. Code chapter lists any section outside a subchapter beside its subchapters. kind on each node says what it is. Beyond titleNumber, chapter, part, code and article, the listing takes one filter per level a code or rule set can have. Each is passed back the way the listing returned it, with the identifier of a node whose kind names that level, and each is case-insensitive where it is text. excludeRepealed and actStatus narrow any listing by section status, the way they do on search. The number of levels between a code and its sections is not fixed: a code lists whatever its own structure has (titles, then chapters, then subchapters, or only articles), and level says what a listing holds. Follow every node you are given, by the filter its kind names, until level is sections; never hard-code the depth. Interior nodes carry a sectionCount and isLeaf: false; drill into one by passing its identifier back, verbatim, as the filter its kind names (title as titleNumber on the U.S. Code and CFR and as title inside a state code, and likewise subtitle, division, chapter, subchapter, part, subpart, subjectGroup, article, act or code, and on state regulations umbrella, agency or program). Leaf nodes are sections with isLeaf: true and an actId you pass straight to /us/statutes/section/{actId}. Every list comes back in statutory (natural) order: 9 before 10, 240.9 before 240.10.
Federal rules are published twice, by the Judicial Conference at uscourts.gov (frcp, fre, …) and as an appendix to the U.S. Code (uscapp_t28a_fre, …). Each is its own rule set in the listing, so no rule appears twice under one heading.
On CFR you can pass the chapter from a citation such as “17 CFR Chapter II, Part 240”: with a part, chapter is accepted and ignored, because part numbers are unique within a title.

One level

A trimmed response (captured 2026-10-26, two of the chapters shown; names are printed the way the publisher prints them, here in capitals):
name is null when the publisher prints no heading for that container. See Container names for what each level is called and which jurisdictions name which levels.

State regulations: umbrella, agency and program

Some state regulation codes print the issuing body above their chapters, and a chapter number repeats under different bodies. Naming the body opens the right chapter, so these codes no longer answer a repeated chapter number as one pooled list with a note.
  • Maine groups agencies under a department umbrella, then lists the agency’s chapters.
  • Virginia lists agencies, inside a title.
  • Wyoming lists agencies, then a program between the agency and its chapters. Chapter 1 repeats under every program, so pass the program too.
  • Louisiana and Mississippi list subpart nodes inside a part. Pass the part and the subpart with code.
Walk Maine one level at a time, passing each identifier back as the filter its kind names. Take code from the codes listing of corpusType=REGULATION&state=me.
Each call costs 1 credit, and a level that turns out to be empty costs nothing. Keep the filters you already passed at every step. The walk helper below needs no change for these codes, because its FILTER map already carries umbrella, agency and program.

Walk a whole title

Drill from a title down until a node is a leaf. A leaf carries the actId you use to fetch metadata or full text. Because a chapter may list subchapters, parts or subparts before it lists sections, the walk is recursive: each node is passed back as the filter its kind names.
Python
A leaf listing is bounded to keep one call fast, so a large container comes back in more than one page. Check truncated on every section listing. When it is true, the response also carries nextCursor: pass it back as cursor and keep going until it is null.
Do not reach for POST /us/statutes/search to finish an enumeration. Ranked search caps at 120 results per query, so it cannot complete a container that browse could not. matchType: "boolean" pages to the end of the matches (up to 10,000), but browse is still the way to enumerate a container.
Rows are sorted into statutory order within each response, and pages are walked in storage order, so concatenating pages does not give you one globally sorted list. The union of every page is the complete container. Sort it yourself once you hold it all.

Export a container with its text

Enumeration gives you identifiers. To turn a chapter into text, batch those actId values through POST /us/statutes/sections with includeBody, 50 at a time.
Two calls per 50 sections, and no per-section round trip. includeBody bills the ordinary body price for each row that returns text; rows whose text cannot be resolved come back with body: null and are not charged for it, so read creditsConsumed on each response instead of computing it. Text is the expensive half of any export. If you are filtering, run the filter on metadata first (omit includeBody) and fetch bodies only for what survives.
Size the container before you walk it. POST /us/statutes/count takes the same scoping filters, runs no ranking, and returns an exact section count for one credit, which tells you what an export will cost before you start it.

Search within a container

Browse and search meet at the parent object. A search result from any browsable corpus carries a parent: the ready-made query that lists its siblings. Every key it carries (titleNumber, chapter, part, code, article) is also a POST /us/statutes/search filter, so you can take any hit and run a search confined to its chapter, part, article or rule set, without building the scope yourself. The same object replays against GET /us/statutes/divisions unchanged, so one hit gives you both the listing of its container and a search within it.
Python
chapter and part accept a single value or a list, and must be paired with titleNumber (USC/CFR) or code (state), which parent always includes. A chapter number alone repeats across every title, so an unpaired chapter/part is rejected with 422. article follows the same logic, because article labels repeat too:
  • It needs a corpusType from one family: CONSTITUTION / STATE_CONSTITUTION, where it is the article label browse lists (Amendment XIV), or STATE / REGULATION, where it is the article of a code divided by article instead of chapter (New York’s 2-A).
  • STATE_CONSTITUTION also needs state, since most state constitutions have an Article IV.
  • On STATE / REGULATION it needs the code it belongs to, and it cannot be combined with chapter.
Pass the identifier exactly as the listing returned it; a case slip such as amendment xiv also matches. A federal rule set is a code under corpusType=FEDERAL_RULES: frcp, fre, frcpsuppadm, or an appendix copy such as uscapp_t28a_fre. Without that corpusType, frcp cannot be told apart from a state code missing its state, so it is refused. code=frcp is the Federal Rules of Civil Procedure alone; source=frcp also covers the FRCP supplemental rules. Each of these shape errors is a 422 decided before anything is charged.

Section Identifiers

The actId you get from a leaf node, and how to fetch its metadata and text.

Corpus Types

The corpora you can browse and how to scope with corpusType and state.

Jurisdictions & State Codes

Which jurisdictions exist, and what the two-letter state codes mean.

Resolve a citation

Go straight to a section from a Bluebook citation instead of walking to it.
Last modified on November 2, 2026