eCFR Regulations Scraper — Codified Federal Rules avatar

eCFR Regulations Scraper — Codified Federal Rules

Pricing

Pay per event

Go to Apify Store
eCFR Regulations Scraper — Codified Federal Rules

eCFR Regulations Scraper — Codified Federal Rules

Extract currently-in-force US federal regulations from the Electronic Code of Federal Regulations (eCFR). Give it Title/Part pairs and get one row per section with citation, heading and full body text as clean JSON.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Categories

Share


🎯 What this scrapes

The eCFR (ecfr.gov, National Archives) is the codified, currently-in-force text of US federal regulations — Title > Chapter > Part > Subpart > Section. Give this Actor a bounded list of {title, part} pairs and it fetches each part's official XML, walks every section, and returns one clean row per section: a well-formed citation like "29 CFR 570.1", its heading, and the full verbatim body text. This is not a change feed — for "what changed today" in the Federal Register's daily journal of rulemaking, see our Federal Register Scraper. This Actor answers a different question: "what is the rule right now, verbatim."

🔥 What we handle for you

  • 📄 Section-level parsing — the GPO XML nests sections inside subject groups and part wrappers; we walk every SECTION node regardless of nesting and give you one flat row per provision.
  • 📅 Date resolution — omit a date and we look up the latest in-force date for that title automatically, instead of you guessing a valid one.
  • 🔁 We retry with exponential backoff on 408 / 429 / 503 and honour Retry-After. Up to 5 attempts per request.
  • 🧊 We keep the dataset clean — Pydantic-validated rows, a regex-checked citation on every section, ISO-8601 timestamps.
  • 💰 You pay only for results that land. No data → no charge (only the small actor-start warm-up fee).

💡 Use cases

  • Pull the verbatim text of a regulation for a compliance checklist or GRC platform.
  • Feed a legal-ops search index with clean, citation-tagged section text.
  • Snapshot a Part's in-force text on a given date for an audit trail.
  • Monitor a handful of Parts your industry cares about without downloading an entire Title.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. List the {title, part} pairs you need under Title/Part targets — up to 20 per run.
  3. Optionally set As-of date; leave it empty to use the latest in-force date automatically.
  4. Click Start. Output streams into the run's dataset, one row per section.
  5. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
targetsarrayyes[{"title": 1, "part": "1"}]{title, part} pairs to fetch. 1-20 pairs per run — whole-title fetches are not supported.
asOfDatestringnonullFetch date as YYYY-MM-DD. Leave empty to resolve the latest in-force date automatically per title.
proxyConfigurationobjectno{"useApifyProxy": true}eCFR is a public, keyless government API and does not fingerprint clients; proxy is wired per org standard.

Example input

{
"targets": [
{ "title": 1, "part": "1" }
],
"asOfDate": null
}

📤 Output

Every row is one codified CFR section.

FieldTypeNotes
citationstringe.g. "1 CFR 1.1".
title_numberintegerCFR title number.
title_namestringTitle name, e.g. "General Provisions".
partstringCFR part identifier.
section_identifierstringSection number, e.g. "1.1".
headingstringSection heading text, whitespace-collapsed.
body_textstringFull paragraph text, joined with blank lines.
as_of_datestringResolved fetch date (YYYY-MM-DD).
scraped_atstringISO-8601 UTC fetch timestamp.

Example output

{
"citation": "1 CFR 1.1",
"title_number": 1,
"title_name": "General Provisions",
"part": "1",
"section_identifier": "1.1",
"heading": "§ 1.1 Definitions.",
"body_text": "As used in this chapter, unless the context requires otherwise—\n\nAdministrative Committee means...",
"as_of_date": "2026-08-28",
"scraped_at": "2026-09-01T00:00:00Z"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.20One-off warm-up charge per run
result$0.002Per codified section emitted

Example: 1 000 sections at the rates above ≈ $2.20 ($0.20 start + $2.00 for 1 000 sections at $0.002 each). No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • Whole-title fetches are not supported by design — a single Part can already be tens of megabytes (Title 40 Part 60 alone is over 14 MB / 1,830 sections), so the Actor bounds every run to the Parts you name.
  • One asOfDate per run — point-in-time diffing across two dates isn't a supported mode.
  • Amendment/version history and agency metadata aren't included — this Actor returns the in-force text as it stands on the resolved date, not a change history.

❓ FAQ

Do I need an API key?

No. The eCFR versioner API is public and keyless, so a run needs no credentials from you.

How is this different from your Federal Register Actor?

Federal Register is the daily journal of rulemaking activity — "what changed." This Actor returns the eCFR's codified, currently-in-force text — "what the rule says right now." Different site, different API, different corpus.

Why can't I just fetch a whole Title?

Some Titles run to tens of megabytes for a single Part. Naming exact {title, part} pairs keeps every run's cost and runtime predictable — list the Parts you actually need.

What happens if a Part has no in-force text?

The run finishes successfully with zero rows for that Part and a status message explaining why — an empty result is not a failure.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.