eCFR Regulations Scraper — Codified Federal Rules avatar

eCFR Regulations Scraper — Codified Federal Rules

Pricing

from $2.00 / 1,000 result emitteds

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

from $2.00 / 1,000 result emitteds

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 days 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.