Bosco Labs

Tools › Compliance & law

US Federal Rules API: CFR text as of a date + Federal Register

Coming soon to the Store

One call answers "what does 21 CFR 101.9 say today, when did it last change, and which Federal Register rule changed it?": the section as plain text from the eCFR (as in force today or on any date since 2017), its amendment history, and the final rules behind each change. It also lists what changed in a CFR part since a date ("15 CFR 744 this week") and returns Federal Register documents by number or search. Built for AI agents doing regulatory, compliance and export-control work, and for people who want a sourced answer without learning two APIs.

Price$0.005 per section, $0.002 per document
DomainCompliance & law
Call itApify API, MCP or HTTP API

Pricing (pay per event): $0.005 per CFR section returned (section), $0.002 per Federal Register document returned (document). A citation that can't be read, a section that doesn't exist or an empty result fails or ends in seconds and costs nothing.

Coming soon to the Apify StoreAsk for early access

Questions agents ask

  • “What changed in the Export Administration Regulations part 744 since August, and which Federal Register notices did it? Link the sources.”

Example

Input

{ "citation": "21 CFR 101.9", "asOf": "2024-01-01" }

Output

{
  "schema_version": "1",
  "record_type": "cfr_section",
  "query": "21 CFR 101.9",
  "citation": "21 CFR 101.9",
  "cfr_title": 21,
  "cfr_title_name": "Food and Drugs",
  "part": "101",
  "subpart": "A",
  "section": "101.9",
  "unit_type": "section",
  "heading": "§ 101.9 Nutrition labeling of food.",
  "as_of": "2026-11-04",
  "text": "(a) Nutrition information relating to food shall be provided for all products intended for human consumption and offered for sale unless an exemption is provided for the product in paragraph (j) of this section.\n(1) When food is in package form, the required nutrition labeling information shall appear on the label in the format specified in this section.\n(2) When food is not in package form, the required nutrition la ...",
  "text_chars": 19521,
  "text_truncated": true,
  "source_note": "[58 FR 2175, Jan. 6, 1993]",
  "removed": false,
  "latest_change_date": "2023-05-24",
  "changed_since": null,
  "amendments": [
    {
      "date": "2023-05-24",
      "substantive": true,
      "removed": false,
      "fr_documents": [
        {
          "document_number": "2023-10602",
          "citation": "88 FR 33550",
          "title": "Food Labeling, Infant Formula Requirements, Food Additives and Generally Recognized as Safe Substances, New Dietary Ingredient Notification; Technical Amendments; Correction",
          "type": "Rule",
          "publication_date": "2023-05-24",
          "effective_on": "2023-05-24",
          "url": "https://www.federalregister.gov/documents/2023/05/24/2023-10602/food-labeling-infant-formula-requirements-food-additives-and-generally-recognized-as-safe-substances"
        }
      ]
    },
    {
      "date": "2023-03-24",
      "substantive": true,
      "removed": false,
      "fr_documents": [
        {
          "document_number": "2023-05418",
          "citation": "88 FR 17710",
          "title": "Food Labeling, Infant Formula Requirements, Food Additives and Generally Recognized as Safe Substances, New Dietary Ingredient Notification; Technical Amendments",
          "type": "Rule",
          "publication_date": "2023-03-24",
          "effective_on": "2023-03-24",
          "url": "https://www.federalregister.gov/documents/2023/03/24/2023-05418/food-labeling-infant-formula-requirements-food-additives-and-generally-recognized-as-safe-substances"
        }
      ]
    },
    { "date": "2016-12-19", "substantive": true, "removed": false, "fr_documents": null }
  ],
  "ecfr_up_to_date_as_of": "2026-11-04",
  "source_url": "https://www.ecfr.gov/on/2026-11-04/title-21/section-101.9",
  "provided_by": "Bosco Labs (boscolabs.dev)",
  "api_url": "https://www.ecfr.gov/api/versioner/v1/full/2026-11-04/title-21.xml?section=101.9",
  "warnings": ["text cut at 20000 characters (of 121140); raise maxTextChars or read source_url."],
  "retrieved_at": "2026-11-06T08:37:27+00:00",
  "duration_seconds": 1.62
}

What you get

FieldTypeMeaning
schema_versionstringOutput schema version.
record_typestring"cfr_section" (a CFR section or appendix as of a date) or "fr_document" (a Federal Register document).
querystring | nullThe citation, document number or search as understood, e.g. "21 CFR 101.9".
citationstring | nullcfr_section: the unit's CFR citation, e.g. "21 CFR 101.9". fr_document: the Federal Register citation (volume FR page), e.g. "91 FR 54658".
cfr_titleintegercfr_section: CFR title number (1-50), e.g. 21.
cfr_title_namestring | nullcfr_section: name of the CFR title, e.g. "Food and Drugs".
partstring | nullcfr_section: CFR part, e.g. "101".
subpartstring | nullcfr_section: subpart letter, e.g. "A"; null when the part has none or for appendices.
sectionstring | nullcfr_section: section number ("101.9") or appendix name ("Supplement No. 4 to Part 744").
unit_typestring | nullcfr_section: "section" or "appendix".
headingstring | nullcfr_section: the heading as printed, e.g. "§ 101.9 Nutrition labeling of food.".
as_ofstring | nullcfr_section: the date (YYYY-MM-DD) the text is in force for: asOf, capped at the eCFR's latest data.
textstring | nullcfr_section: plain text as in force on as_of, one line per paragraph ("(a) ...", "(1) ..."), tables as "cell | cell" rows; cut at maxTextChars. Null when the unit was removed.
text_charsinteger | nullcfr_section: length of text in characters (after any cut).
text_truncatedboolean | nullcfr_section: true when text was cut at maxTextChars.
source_notestring | nullcfr_section: the CFR source note with the Federal Register citation(s) that created the unit, e.g. "[58 FR 2175, Jan. 6, 1993]".
removedboolean | nullcfr_section: true when the unit was removed from the CFR on or before as_of.
latest_change_datestring | nullcfr_section: date of the newest amendment on or before as_of (YYYY-MM-DD).
changed_sincestring | nullcfr_section from a part citation: the since date of the change window; null for a single-section lookup.
amendmentsarraycfr_section: amendment history from the eCFR versioner, newest first (max 50): {date, substantive, removed, fr_documents}. fr_documents lists final rules affecting this CFR part that took effect (or, failing that, were published) on that date: {document_number, citation, title, type, publication_date, effective_on, url}. They are the likely source of the change, matched by part and date (the Federal Register does not index by section). [] = looked up, none found; null = not looked up (only the 5 newest dates, or the dates inside the since window, are).
ecfr_up_to_date_as_ofstring | nullcfr_section: the date through which the eCFR title is current (YYYY-MM-DD).
source_urlstring | nulleCFR page of the unit as of as_of (cfr_section), or FederalRegister.gov page of the document (fr_document).
provided_bystringWho compiled this row; cite together with source_url.
api_urlstring | nullcfr_section: the eCFR versioner API call the text was read from.
document_numberstring | nullfr_document: Federal Register document number, e.g. "2026-17231".
titlestring | nullfr_document: document title.
typestring | nullfr_document: "Rule", "Proposed Rule", "Notice" or "Presidential Document".
actionstring | nullfr_document: action line, e.g. "Final rule.".
abstractstring | nullfr_document: the summary published with the document.
datesstring | nullfr_document: the DATES paragraph as published, e.g. "This rule is effective August 21, 2026.".
agenciesarrayfr_document: issuing agencies as FederalRegister.gov names them, e.g. ["Commerce Department", "Industry and Security Bureau"].
publication_datestring | nullfr_document: date published in the Federal Register (YYYY-MM-DD).
effective_onstring | nullfr_document: effective date (YYYY-MM-DD); null when none is given (proposed rules, most notices).
comments_close_onstring | nullfr_document: comment deadline (YYYY-MM-DD); null when not open for comment.
cfr_referencesarrayfr_document: CFR parts the document affects, e.g. ["15 CFR 744"].
docket_idsarrayfr_document: agency docket numbers.
regulation_id_numbersarrayfr_document: Regulation Identifier Numbers (RIN), e.g. ["0694-AK49"].
start_pageinteger | nullfr_document: first Federal Register page.
end_pageinteger | nullfr_document: last Federal Register page.
significantboolean | nullfr_document: whether the rule is marked significant under EO 12866; null when not stated.
pdf_urlstring | nullfr_document: the official PDF on govinfo.gov (the legally authentic edition).
raw_text_urlstring | nullfr_document: full text as plain text on FederalRegister.gov.
warningsarrayCaveats in plain words: text cut, date capped, more results than returned, part-level matching.
retrieved_atstringWhen the row was made (ISO 8601, UTC).
duration_secondsnumberHow long the lookup took.

Use with AI agents (MCP)

Add this URL to your MCP client (Claude, Cursor, VS Code, ...) to load the Actor as a tool through the Apify hosted MCP server. It signs you in with OAuth or accepts Authorization: Bearer <APIFY_TOKEN>. It works once the Actor is live on the Apify Store.

https://mcp.apify.com?tools=bosco_labs/us-federal-rules

For “What changed in the Export Administration Regulations part 744 since August, and which Federal Register notices did it? Link the sources.” the agent passes:

{ "citation": "15 CFR 744", "since": "2026-08-01" }

small JSON rows (a section is typically 5-25 KB with the default text cap), stable snake_case fields, ISO dates, null for unknown, a source link per row and per linked rule. A unit whose text eCFR fails to send in a part listing comes back with text: null, a warning and no charge. warnings says in plain words when text was cut, a date was capped at the eCFR's latest data, or more results matched than were returned. A section lookup takes 1-2 seconds after start-up (measured 1.6 s for 21 CFR 101.9); a part with changes 2-7 seconds for a few units (the Entity List alone is 1.4 million characters of XML), up to about a minute for 25 units, which are downloaded two at a time to stay within eCFR's limits.

Or call the Apify API: POST https://api.apify.com/v2/acts/bosco_labs~us-federal-rules/run-sync-get-dataset-items with the input as JSON body. Cost: $0.005 per section, $0.002 per document.

HTTP API

Also on the Bosco Labs HTTP API (beta, test mode): same input and same rows as the Actor, $0.001 per unit: a CFR section with text = 5 units ($0.005), a Federal Register document = 2 ($0.002); rows without text are free from prepaid credits (max 10 CFR units or 50 documents per call). Get a key with a $0.50 free trial; see prices and limits.

curl https://api.boscolabs.dev/v1/us-federal-rules \
  -H "Authorization: Bearer $BOSCO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"citation": "15 CFR 744", "since": "2026-08-01"}'

Input fields

FieldTypeMeaning
citationstringA CFR section, part or appendix: "21 CFR 101.9", "17 CFR 240.10b-5", "48 CFR 52.212-4", "15 CFR 744 Supplement No. 4", or an eCFR link ("https://www.ecfr.gov/current/title-21/section-101.9"). A section or appendix returns one row: its text as in force on asOf, its amendment history and the Federal Register rules behind each change. A part ("15 CFR 744") returns its sections and appendices changed since the since date. Together with search, agency or documentType it instead limits Federal Register documents to that CFR part. Empty = no CFR lookup. An unreadable citation fails in seconds with examples, at no charge.
asOfstringYYYY-MM-DD, e.g. "2024-01-01": the CFR text in force on that date (eCFR history begins around January 2017). Empty = today (the eCFR's latest data, usually 1-2 days old).
sincestringYYYY-MM-DD, e.g. "2026-11-01". With a part citation: list sections changed on or after this date (empty = the last 30 days). With a search: only documents published on or after this date (empty = any date). Ignored for a single section or a document number.
documentNumberstringOne Federal Register document by its number, e.g. "2026-17231" (corrections look like "C1-2026-16628"). Returns its citation, type, agencies, dates, the CFR parts it affects and links. Empty = no document lookup. Takes precedence over every other field.
searchstringFull-text search of Federal Register documents since 1994, newest first, e.g. "entity list". Combine with agency, documentType, since and citation. Empty = no word filter (agency or documentType alone also search).
agencystringFederal Register search by issuing agency: an acronym ("BIS", "FDA", "EPA", "SEC", "OFAC"), a name ("Bureau of Industry and Security") or a FederalRegister.gov slug ("industry-and-security-bureau"). Empty = all agencies. An unknown name fails with suggestions, at no charge.
documentTypestringFederal Register search by type: RULE (final rules), PRORULE (proposed rules), NOTICE or PRESDOCU (presidential documents). Empty = all types.
maxResultsintegerMost rows to return: for a part citation the most recently changed units (max 25 per run, each with its text), for a search the newest documents (max 100). Default 20. One charge per row returned with an answer.
maxTextCharsintegerCap on each section's text in characters, e.g. 20000 (default). Longer text is cut at a line end and flagged with text_truncated and a warning; source_url has the whole text.

Sources, licence and limits

Where does the data come from? Only from the two official APIs of the Office of the Federal Register (National Archives) and the Government Publishing Office: the eCFR versioner API (point-in-time CFR text and version history) and the FederalRegister.gov API (documents since 1994). Both are keyless. The text is converted from XML to plain text and nothing else is changed.

May you resell this? Yes. FederalRegister.gov and eCFR.gov state: "Any person may reproduce or republish any material appearing in any regular or special edition of the Federal Register (1 CFR 2.6). There are no restrictions regarding what is reproduced, who can reproduce it, or where it can be reproduced." Works of the US Government have no copyright (17 U.S.C. 105), and GPO's e-CFR guide says "there are no restrictions on re-use of information in the e-CFR documents". We don't use NARA or OFR seals or CFR logos and don't claim to be an official edition. Sources: About this site, govinfo policies, e-CFR XML guide.

Is the eCFR text the law? It is, in the OFR's words, "authoritative but unofficial". The official CFR is the annual print edition on govinfo.gov, kept current by the daily Federal Register. For legal research, verify against the official editions; each document row links the official govinfo PDF (pdf_url). This is not legal advice.

How exact is the link between a change and a Federal Register rule? The Federal Register indexes documents by CFR part, not section. For each amendment date we list the final rules that affect the same part and took effect (or were published) that day: in practice that is the rule that made the change, but on a busy day it can include a rule that changed a neighbouring section. Each comes with its title and link so an agent can check. Only the 5 newest amendment dates per run are looked up (older ones show fr_documents: null); in a part listing that is each unit's newest change, for the 5 most recent dates. If the Federal Register lookup fails, the row is kept with fr_documents: null and a warning.

How current is it? Live. The eCFR is updated daily and is usually 1-2 days behind the Federal Register (ecfr_up_to_date_as_of); an asOf later than that returns the latest text with a warning. The point-in-time history starts around January 2017; earlier dates fail with the first available date.

Can it diff two versions or return one paragraph? Not yet. A section is returned whole (a citation like 21 CFR 101.9(c)(8) returns all of 101.9 with a warning), and "what changed" is answered by dates and the rules that made the change, not a text diff. Huge appendices such as the Entity List are cut at maxTextChars (raise it up to 500,000).

Which CFR units work? All 50 titles: sections, and appendices or supplements (15 CFR 744 Supplement No. 4, 40 CFR part 60 appendix A-1). Reserved titles fail with a clear message.

Personal data? None is requested. Federal Register documents and CFR appendices can name people or companies (e.g. the Entity List); they are returned only as published.

Content: Office of the Federal Register (National Archives) and US Government Publishing Office, via ecfr.gov and federalregister.gov. Not an official legal edition.

Coming soon to the Apify StoreAsk for early access