BYTETOOLS

eCFR API

Free eCFR API with no key: the entire US Code of Federal Regulations as structured data, with per-title amendment dates and full version history. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the eCFR API?

The Electronic Code of Federal Regulations API publishes the full text and structure of all fifty CFR titles as machine-readable data, free and without a key. The versioner endpoint lists every title with the date it was last amended and how current the published text is.

The eCFR is the continuously updated consolidation of US federal regulations, and this API is the official machine-readable route into it. The `/versioner/v1/titles.json` call is the natural entry point: fifty rows, each giving a title number, its name, `latest_amended_on`, `latest_issue_date` and `up_to_date_as_of`. Those three dates answer different questions and are routinely confused — when the rules last changed, when the text was last issued, and how fresh this particular publication is.

Beyond the versioner there is a full API family: `/search/v1/` for full-text search across all titles, `/structure/` for the hierarchy of parts and sections within a title, and endpoints that return the XML of a specific section as it stood on a given date. That last capability is what makes the service genuinely valuable — you can retrieve regulatory text as it existed on a historical date and prove what a rule said at the time, which matters for compliance and litigation work. A companion `/admin/v1/agencies.json` maps agencies to the CFR titles and chapters they own.

Quick facts

Base URL
https://www.ecfr.gov/api
Authentication
No API key or registration. The eCFR is published by the Office of the Federal Register and the Government Publishing Office.
Rate limit
No published limit. Full-title XML documents are very large, so request sections rather than whole titles.
Pricing
Free. US federal regulations are in the public domain.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the eCFR API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. List all fifty CFR titles with their amendment dates

GET https://www.ecfr.gov/api/versioner/v1/titles.json

curl
curl 'https://www.ecfr.gov/api/versioner/v1/titles.json'
JavaScript (fetch)
const res = await fetch("https://www.ecfr.gov/api/versioner/v1/titles.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.ecfr.gov/api/versioner/v1/titles.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "titles": [
    {
      "number": 1,
      "name": "General Provisions",
      "latest_amended_on": "2022-12-29",
      "latest_issue_date": "2026-08-10",
      "up_to_date_as_of": "2026-08-19",
      "reserved": false
    },
    {
      "number": 2,
      "name": "Federal Financial Assistance",
      "latest_amended_on": "2026-08-17",
      "latest_issue_date": "2026-08-18",
      "up_to_date_as_of": "2026-08-19",
      "reserved": false
    },
    {
      "number": 3,
      "name": "The President",
      "latest_amended_on": "2015-03-17",
      "latest_issue_date": "2024-05-17",
      "up_to_date_as_of": "2026-08-19",
      "reserved": false
    },
    {
      "number": 4,
      "name": "Accounts",
      "latest_amended_on": "2024-07-18",
      "latest_issue_date": "2024-07-18",
      "up_to_date_as_of": "2026-08-19",
      "reserved": false
    },
    {
      "number": 5,
      "name": "Administrative Personnel",
      "latest_amended_on": "2026-08-14",
      "latest_issue_date": "2026-08-14",
      "up_to_date_as_of": "2026-08-19",
      "reserved": false
    },
    {
      "number": 6,
      "name": "Domestic Security",
      "latest_amended_on": "2026-07-06",
      "latest_issue_date": "2026-08-12",
      "up_to_date_as_of": "2026-08-19",
      "reserved": false
    },
    {
      "number": 7,
      "name": "Agriculture",
      "latest_amended_on": "2026-08-17",
      "latest_issue_date": "2026-08-19",
      "up_to_date_as_of": "2026-08-19",
      "reserved": false
    },
    {
      "number": 8,
      "name": "Aliens and Nationality",
      "latest_amended_on": "

Parameters

ParameterTypeRequiredDescription
/versioner/v1/titles.jsonpathOptionalLists all titles with currency dates. Takes no parameters.
/versioner/v1/full/{date}/title-{n}.xmlpathOptionalFull XML of a title as it stood on a date. /versioner/v1/full/2026-01-01/title-40.xml
/search/v1/resultspathOptionalFull-text search across the CFR. ?query=emissions
/structure/v1/{date}/title-{n}.jsonpathOptionalHierarchy of parts, subparts and sections for a title. /structure/v1/2026-01-01/title-40.json
/admin/v1/agencies.jsonpathOptionalAgencies mapped to the titles and chapters they administer.

Response fields

titlesarray
All fifty CFR titles.
titles[].numberinteger
Title number, 1 to 50.
titles[].namestring
Title name, for example `Protection of Environment` for title 40.
titles[].latest_amended_onstring
When the regulations in the title were last amended. Some titles have not changed in years.
titles[].latest_issue_datestring
When the text was last issued, distinct from when it was amended.
titles[].up_to_date_as_ofstring
How current this publication is — the freshness guarantee.
titles[].reservedboolean
True for title numbers held in reserve with no current content.

What you can build with the eCFR API

  • Monitor a CFR title for regulatory amendments
  • Retrieve the exact text of a regulation as it stood on a past date
  • Search federal regulations full-text without scraping
  • Map an agency to the titles and chapters it administers
  • Build a compliance tool that cites current regulatory language

Common errors and how to fix them

Timeout on a full-title XML request

Some titles run to hundreds of megabytes.

Fix: Use the structure endpoint to find the part or section you need, then request only that.

404 for a historical date

No published version exists for that exact date.

Fix: Use a date on or after the title's `latest_issue_date`, or step back to the nearest issue date.

Confusing dates

Three date fields mean three different things.

Fix: `latest_amended_on` is when rules changed, `latest_issue_date` when text was published, `up_to_date_as_of` how fresh this copy is.

Empty title

The title number is reserved.

Fix: Check the `reserved` flag before requesting content.

eCFR API — frequently asked questions

Is the eCFR API free?

Yes, completely — no key and no registration. It is published by the Office of the Federal Register and the Government Publishing Office, and federal regulations are public domain.

Can I get a regulation as it read on a past date?

Yes. The versioner endpoints accept a date and return the title's XML as it stood then, which is the feature that makes this API valuable for compliance and litigation rather than just browsing.

How is the eCFR different from the Federal Register?

The Federal Register publishes daily notices and proposed and final rules as they happen; the eCFR is the consolidated, currently-in-force text those rules amend. You watch the Register for change and read the eCFR for what the law says now.

Why do the three date fields disagree?

They measure different things: when the rules were last amended, when the text was last issued, and how up to date this particular publication is. A title can be years past its last amendment while still being published as current.

Tools that pair with this API

eCFR is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.