No API key is required; retrieve the full structure of a title: GET https://www.ecfr.gov/api/versioner/v1/structure/{date}/title-{n}.json where date is YYYY-MM-DD and n is the CFR title number
Fetch the XML content of a specific section as of a date: GET https://www.ecfr.gov/api/versioner/v1/full/{date}/title-{n}.xml?section={part}.{section} — returns the full XML text of the section as it existed on that date
Fetch the same section for a second date and diff the two XML strings (stripping XML tags) to identify changed regulatory language
Use the ancestry endpoint for efficient navigation: GET https://www.ecfr.gov/api/versioner/v1/ancestry/{date}/title-{n}.json?part={part}§ion={part}.{section} to confirm the section existed on both dates
To enumerate all dates on which a section changed, call GET https://www.ecfr.gov/api/versioner/v1/versions/title-{n}.json and filter by part to find all amendment dates
Retrieve the associated Federal Register document for each amendment date from the FR doc link embedded in the version metadata to get the preamble explanation of the change
Known gotchas
The eCFR versioner API only provides historical text back to January 2017; for changes before that date you must use the Code of Federal Regulations Annual Edition XML files from GovInfo.gov
Sections that were renumbered or redesignated will not be found at the old section number on dates after the redesignation — check the versions list for the part to detect such structural changes before comparing text
eCFR XML includes editorial notes, cross-reference tags, and amendment note elements that do not appear in the rendered HTML; strip these consistently in both versions before diffing to avoid false positives
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp