eCFR scraper - search federal regulations, get section text avatar

eCFR scraper - search federal regulations, get section text

Pricing

from $5.00 / 1,000 records

Go to Apify Store
eCFR scraper - search federal regulations, get section text

eCFR scraper - search federal regulations, get section text

eCFR scraper on the official API: search the Electronic Code of Federal Regulations by keyword, CFR title, part or section; one row per hit - hierarchy, heading, citation, version dates, score, snippet, link - optionally the section's full text as plain text. Public domain. $5 per 1,000 rows.

Pricing

from $5.00 / 1,000 records

Rating

0.0

(0)

Developer

RetrainMap Team

RetrainMap Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

Returns: one row per eCFR search hit: hierarchy (title, chapter, part, subpart, section), heading, citation, version dates, relevance score, snippet and ecfr.gov link — optionally the section's full text as plain text. Input: { "query": "training providers", "title": 20, "part": "680", "fetch_full_text": false, "max_records": 100 } — a query or a title is required; the rest optional. Price: $5.00 per 1,000 rows ($0.005 per hit row) plus $0.10 per run. Pay per event; no subscription.

One row per hit from the Electronic Code of Federal Regulations' public search API, optionally with the section's current full text. Search by keyword, CFR title, part or section; get the hierarchy (title, chapter, subchapter, part, subpart, section), heading, citation, the date the current version took effect, relevance score, snippet and the ecfr.gov link — normalised, one flat row per hit. With fetch_full_text on, each section's text is fetched from the versioner API and written as plain text (trimmed to 20,000 characters).

The default input (query "training providers", title 20, 50 rows, no full text) succeeds within 5 minutes and returns rows — Apify auto-tests it daily.

Data source and status

PublisherOffice of the Federal Register (National Archives) and the U.S. Government Publishing Office — https://www.ecfr.gov/
APIhttps://www.ecfr.gov/developers/documentation/api/v1 — public, no key. Search: /api/search/v1/results; title dates: /api/versioner/v1/titles.json; section text: /api/versioner/v1/full/{date}/title-{N}.xml?part=&section=
What this Actor readsOne titles request, then search pages of 100 (query, hierarchy[title], hierarchy[part], hierarchy[section], and by default date = the title's up_to_date_as_of, so only regulations in force are returned), then — only when fetch_full_text is on — one XML request per section, dated the same way; at most one request per second
Refresh cadenceThe eCFR is updated daily (each title's up_to_date_as_of and latest_amended_on are written to every row and to the run summary); it is an editorial compilation, not the official legal edition (the annual CFR and the Federal Register are). The Actor reads live on every run; fetched_at is the fetch time
CopyrightWorks of the United States Government are not subject to copyright in the U.S. (17 U.S.C. §105). The data are public; please cite the eCFR as the source
Known caveatsThe search API refuses to page past 10,000 results (narrow the query); score and snippet are search-relevance artefacts and are null for hierarchy-only searches without a query; without current_only the index also returns superseded and removed section versions (ends_on set, current false — 21 of the 50 default hits on 2026-09-04) which have no current full text; a cross-title search is dated the oldest up_to_date_as_of among titles (usually yesterday); full text is fetched for hits of type Section only (appendices and parts get full_text_note); subchapter, subject_group and appendix are empty wherever the CFR has none

Honesty note: the rows are the API's own fields with the search markup stripped and the XML reduced to plain text — nothing is inferred, summarised or classified by this Actor, and a run stops with an error rather than guess when the API's shape changes.

Identification: the requests carry a product-token User-Agent and the operator's contact address in the standard From: header (RFC 9110 §10.1.2).

Input

FieldTypeMeaning
querystringOptional full-text query (phrases in double quotes). Empty = every section of the given title/part in CFR order
titleinteger 1–50Optional CFR title (20 = Employees' Benefits, 29 = Labor, 34 = Education). Required with part/section
partstringOptional part, e.g. 680
sectionstringOptional section, e.g. 680.410 (its part is used when part is empty)
current_onlybooleanDefault true: only regulations in force (the search is dated the title's up_to_date_as_of). False = the whole index including superseded versions
fetch_full_textbooleanDefault false. One extra request per section hit
max_recordsintegerDefault 100, at most 10,000
request_interval_msintegerDefault 1000 (floor 250)
contact_emailstringSent in the From: header

At least a query or a title is required.

Example — the full text of every section of 20 CFR part 680 subpart D (eligible training providers):

{ "title": 20, "part": "680", "query": "eligible training provider", "fetch_full_text": true, "max_records": 40 }

Output (dataset row)

citation (e.g. 20 CFR 680.410), title, title_name, chapter, subchapter, part, subpart, subject_group, section, appendix, type (Section / Appendix …), heading, hierarchy (identifiers), headings (names), starts_on (current version effective date), ends_on, current, change_types, removed, reserved, title_latest_amended_on, title_up_to_date_as_of, score, snippet, section_url, full_text, full_text_chars (untrimmed length), full_text_truncated, full_text_as_of, full_text_note, fetched_at, source.

A run summary (filters, the date the search was run as of, the search's own hit count, pages, requests, per-title dates, whether the paging cap or the pay-per-event budget stopped the run) is stored as RUN_SUMMARY in the run's key-value store.

Pricing (pay per event)

EventPrice
run-start — once per run$0.10
record — per row written (with or without full text)$0.005

The default 50-row search costs $0.35; 1,000 hits cost $5.10. Rows stop when your run's maximum charge is reached; the run summary says so.

Operator

Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. Not affiliated with the Office of the Federal Register or GPO. The Actor writes only to its own dataset and key-value store; it stores no credentials and sends nothing else.