Federal Register Documents Scraper (US Rules) avatar

Federal Register Documents Scraper (US Rules)

Pricing

$2.00 / 1,000 document returneds

Go to Apify Store
Federal Register Documents Scraper (US Rules)

Federal Register Documents Scraper (US Rules)

US Federal Register rules, proposed rules, notices and presidential documents from the official API: agency, docket, RIN, CFR part, comment deadline.

Pricing

$2.00 / 1,000 document returneds

Rating

0.0

(0)

Developer

Jason

Jason

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Pulls documents from the Federal Register, the daily journal of the United States government, through the official federalregister.gov API v1. No API key, no account, no HTML parsing. You get one flat JSON record per document with its title, type and action line, the abstract, every publishing agency, the publication and effective dates, the public comment deadline, the agency docket numbers, the RIN, the CFR parts the document touches, the 91 FR 57089 citation, the page count, the EO 12866 significance flag and links to the document page and its GPO PDF — filtered by document type, publication-date window, agency, keyword, docket and comment deadline. The API held 1,007,899 documents on 8 September 2026, back to 3 January 1994, and the Federal Register adds about 100 a business day.

The Actor's own contribution is completeness. The API refuses to page past its 10,000th hit and reports a count of exactly 10,000 for anything larger, so a scraper that simply pages stops at 10,000 records and still looks finished. This one measures each publication-date window first and halves it until every part is readable, then reads the parts newest-first: a full-year download of 2025 returned 23,690 documents in about a minute, matching the API's own month-by-month counts exactly, with windowExhausted: true in the run summary to say so.

What you get

Every record contains:

FieldDescription
idFederal Register document number, for example 2026-18279
sourcefederal-register, constant
urlThe public document page on federalregister.gov
pdfUrlThe GPO PDF of the document (govinfo.gov); falls back to the public-inspection PDF
titleDocument title, for example Safety Zone; Laguna Madre, South Padre Island, TX
typeRule, Proposed Rule, Notice or Presidential Document
subtypeOnly for presidential documents: Executive Order, Proclamation, Determination, Notice, Other (1.0% of documents)
actionThe document's own ACTION line, e.g. Temporary final rule., Notice of proposed rulemaking. (70.7%)
abstractThe agency's summary paragraph (74.0%)
agenciesEvery publishing agency, in the order the document lists them, e.g. ["Homeland Security Department", "Coast Guard"]
agencySlugsThe federalregister.gov slug for each agency the Office of the Federal Register could match — the values the agencies input filters on
publicationDateDate the document appeared in the Federal Register, YYYY-MM-DD
effectiveOnDate a rule takes effect, or null (14.8% carry one)
commentsCloseOnPublic comment deadline, or null (33.2% carry one)
docketIdsThe agency's own docket numbers, exactly as printed: ["EPA-HQ-OW-2026-6965", "FRL 13340-01-OW"] (73.5%)
rinsRegulation Identifier Numbers, e.g. ["1625-AA00"] (12.8%)
cfrReferencesThe CFR parts the document affects, as citation strings: ["33 CFR 165"], or ["17 CFR Chapter I", "17 CFR 279"] (19.9%)
citationFederal Register citation, e.g. 91 FR 57089
pageLengthPrinted pages the document occupies
significanttrue when deemed significant under Executive Order 12866, false when explicitly not, null when the Office of the Federal Register recorded no flag (91.6%)
fetchedAtISO timestamp of the run that produced the record

Coverage percentages were measured on all 2,562 documents published between 1 August and 8 September 2026. citation, pageLength, pdfUrl, url, title and publicationDate were present on every one of them.

The dataset ships three views: Overview (dates, type, agencies, action, citation, link), Rulemaking references (docket, RIN, CFR parts, significance) and Comment deadlines (deadline first, with the abstract and the PDF link).

Input

InputTypeDefaultDescription
documentTypesstring[]all fourAny of RULE (final rule), PRORULE (proposed rule), NOTICE, PRESDOCU (presidential document).
daysBackinteger7Look-back window in days on the publication date, ending today and inclusive at both ends, so 7 covers 8 calendar dates. Ignored when dateFrom/dateTo are set. Max 12,000, which reaches the start of the archive.
dateFromstringStart of the publication-date window, YYYY-MM-DD, inclusive. Anything earlier than 1994-01-03 is treated as 1994-01-03.
dateTostringtodayEnd of the publication-date window, YYYY-MM-DD, inclusive.
agenciesstring[]allA slug (environmental-protection-agency), a short name (EPA), or part of a name (housing). A parent department also returns its sub-agencies. An unmatched term stops the run instead of being ignored.
keywordsstring[]noneFull-text search, run once per term and merged, so terms are ORed. Words inside one term are ANDed by the API: "air quality" needs both words.
docketIdsstring[]allAgency docket numbers as the Federal Register prints them. One search per docket, merged.
significantOnlybooleanfalseKeep only documents flagged significant under EO 12866 (286 of the 17,833 documents published in 2026 to 8 September, 1.6%).
commentsOpenOnlybooleanfalseKeep only documents whose comment period is still open (commentsCloseOn on or after today, as a US Eastern calendar date — the calendar the Federal Register prints deadlines on). Documents with no comment period are dropped.
maxItemsinteger500Stop after this many documents. You are charged per document, so this is also the cost cap. Newest publication date first, so a value below the window's volume drops the oldest documents in it.

Example — every proposed rule from the EPA in the last 30 days that you can still comment on:

{
"documentTypes": ["PRORULE"],
"daysBack": 30,
"agencies": ["EPA"],
"commentsOpenOnly": true,
"maxItems": 200
}

Example — a daily watch on significant rulemaking across the whole government, run on a schedule:

{ "documentTypes": ["RULE", "PRORULE"], "daysBack": 2, "significantOnly": true, "maxItems": 100 }

Example — everything on two topics, whoever published it, for the last quarter:

{ "daysBack": 90, "keywords": ["per- and polyfluoroalkyl", "wetland"], "maxItems": 1000 }

Example — a complete year of the Federal Register, all four types (23,690 records for 2025):

{ "dateFrom": "2025-01-01", "dateTo": "2025-12-31", "maxItems": 100000 }

Bad input fails fast: an unknown document type, an agency term that matches no agency, or a malformed date stops the run with that message as its status, before any search request is made.

Output example

A real record from a live run on 8 September 2026 ({"daysBack": 3, "maxItems": 5}), unedited:

{
"id": "2026-18279",
"source": "federal-register",
"url": "https://www.federalregister.gov/documents/2026/09/08/2026-18279/safety-zone-laguna-madre-south-padre-island-tx",
"pdfUrl": "https://www.govinfo.gov/content/pkg/FR-2026-09-08/pdf/2026-18279.pdf",
"title": "Safety Zone; Laguna Madre, South Padre Island, TX",
"type": "Rule",
"subtype": null,
"action": "Temporary final rule.",
"abstract": "The Coast Guard is establishing a temporary safety zone for navigable waters on the Laguna Madre. The safety zone is needed to protect personnel, vessels, and the marine environment from potential hazards associated with an over water fireworks display. Entry of vessels or persons into this zone is prohibited unless specifically authorized by the Captain of the Port, Sector Corpus Christi, or their designated representative.",
"agencies": ["Homeland Security Department", "Coast Guard"],
"agencySlugs": ["homeland-security-department", "coast-guard"],
"publicationDate": "2026-09-08",
"effectiveOn": "2026-09-05",
"commentsCloseOn": null,
"docketIds": ["Docket Number USCG-2026-1094"],
"rins": ["1625-AA00"],
"cfrReferences": ["33 CFR 165"],
"citation": "91 FR 57089",
"pageLength": 2,
"significant": false,
"fetchedAt": "2026-09-08T05:23:23.808Z"
}

A proposed rule from the same run carries the fields a rule does not: "type": "Proposed Rule", "commentsCloseOn": "2026-12-07" and "action": "Proposed rule." — for example 2026-18282, "Unleashing Unlicensed Spectrum for Direct-to-Device", Federal Communications Commission, 47 CFR 2, 15 pages. A presidential document carries "type": "Presidential Document" with a subtype — all 25 of them in the August-September sample had one — "agencies": ["Executive Office of the President"], and neither a docket nor a RIN (none of those 25 carried either).

Every run also writes a SUMMARY record to the key-value store with the resolved window, the filters used, the number of requests and publication-date segments, how many documents each filter dropped, any GPO typesetting code left unresolved in the text (unresolvedMarkup), and the windowExhausted completeness flag (see Limits and freshness).

Pricing

Pay per result: US$0.002 per document delivered (US$2 per 1,000 documents). You are charged only for records pushed to the dataset; a run that returns nothing costs nothing. Runs on the Apify free plan are limited by the platform's free-tier usage allowance.

Data source and licence

  • Search: GET https://www.federalregister.gov/api/v1/documents.json. Agency list: GET https://www.federalregister.gov/api/v1/agencies.json. Both are public. The Office of the Federal Register's own API documentation states that "FederalRegister.gov APIs do not require API keys; all you need is an HTTP client or browser." Human-readable docs: https://www.federalregister.gov/developers/documentation/api/v1; the machine-readable OpenAPI description the page renders is at https://www.federalregister.gov/api/v1/documentation.json (both read 8 September 2026).
  • This Actor only calls the API. The site's HTML pages sit behind a bot check that sends automated requests to a CAPTCHA page; the api/v1 endpoints do not, which is the access route the publisher offers for programmatic use. Nothing here parses a web page or works around that check.
  • Licence. The Federal Register is published by the Office of the Federal Register, National Archives and Records Administration, and its contents are written by federal officers and employees as part of their official duties. That makes them US Government works: not subject to domestic copyright under 17 U.S.C. § 105, and free to reuse commercially. The online edition is the official legal edition under 44 U.S.C. 4101 and 1 CFR 5.10 (https://www.govinfo.gov/help/fr, read 8 September 2026).
  • The standard US Government Work terms at https://www.usa.gov/government-copyright (read 8 September 2026) add two restrictions that apply here: you "cannot use government materials in a way that implies endorsement by a government agency, official, or employee", and you "cannot use federal government trademarks or federal government agency logos without permission." Attribute as "Source: Federal Register" and link to the document page.
  • Personal data. The fields this Actor publishes are agency-authored bibliographic metadata, not contact records: no email address or telephone number appeared in the title or abstract of any of the 2,562 documents sampled for 1 August to 8 September 2026. A named individual does appear in a small minority of titles: 9 of those 2,562 titles (0.35%) matched a name-shaped pattern and 6 of the 9 really were a person, every one of them an enforcement or licensing action the agency is required to publish — DEA registration decisions ("Stephen Bossenberry, M.D.; Decision and Order") and FDA debarment orders. The Federal Register publishes those names lawfully as part of the official record; how you then use them is your responsibility under the applicable regime. Agency contact names, emails and phone numbers live in the documents' FOR FURTHER INFORMATION CONTACT sections, which are part of the full text and are not returned by this Actor.

Limits and freshness

  • Volumes, measured 8 September 2026 by counting through the API itself: 1,007,899 documents in total, from 3 January 1994 (the oldest publication date the API serves) to 8 September 2026. By year: 30,830 in 2024, 23,690 in 2025, 17,833 in 2026 to 8 September. Six 8-day windows sampled across June to September 2026 held 461 to 629 documents (about 100 per business day, and none at weekends or on federal holidays); 31-day windows held 1,985 to 2,290. Of the 2,562 documents published between 1 August and 8 September 2026, 80.0% were notices, 12.6% final rules, 6.4% proposed rules and 1.0% presidential documents, and 30.6% still had an open comment period on 8 September.

  • Size maxItems to the window, and check windowExhausted. maxItems counts records kept after filtering and the stream is newest-first, so a value below the window's volume drops the oldest documents in it — but never silently. The run stops the moment the cap is filled and warns maxItems (N) reached before the window was exhausted, and the SUMMARY record carries limitReached: true with windowExhausted: false. windowExhausted: true is the guarantee that you hold the complete window: it is set only when every publication-date segment was read to its end and every record kept was delivered. The default maxItems of 500 covers a quiet week (461 documents for 1–8 September 2026) but not a busy one (629 for 25 August–1 September); use 800 for a guaranteed complete week of all four types, or narrow documentTypes — a week of rules and proposed rules alone was 63 to 91 documents.

  • The API's 10,000-hit paging cap, and how this Actor gets past it. documents.json answers any page that would reach past the 10,000th hit with HTTP 400 Pagination limit exceeded. No more than 10000 items can be requested at a time, and it reports count: 10000 for every result set larger than that — so the cap is invisible from a single response. The Actor measures each publication-date window with a one-row request first and, whenever the count reaches 10,000, halves the window and measures both halves, repeating until every part is readable; the halves are then read newest-first, which keeps the output in strict publication-date order across the seams. Downloading all of 2025 this way took 4 segments, 32 requests and 57 to 77 seconds across three runs on different days (56.6 s, 64.6 s, 76.6 s - the spread is the network, not the Actor) and returned 23,690 records — the same total as the API's own twelve monthly counts added up, month for month, with no duplicate document number anywhere in the set. maxItems tops out at 100,000, so the full 1994-2026 archive is a run per year (23,000 to 35,000 documents each) rather than a single run, on the same machinery.

  • Speed, measured 8 September 2026 on this Actor: 461 documents (a 7-day window) in 3.6 s over 2 requests; 2,007 documents (30 days) in 6.3 s over 4 requests; 23,690 documents (a full year) in 56.6 to 76.6 s over 32 requests — roughly 300 to 420 records a second, network-bound. A run that only needs a handful asks for only a handful: {"daysBack": 3, "maxItems": 5} sizes its page to 5 rows and finishes in two requests.

  • Rate limits. The Federal Register documents none for these endpoints and sends no rate-limit headers. 20 consecutive requests with no pacing, and 20 more at five concurrent, all returned HTTP 200 (measured 8 September 2026). The Actor issues requests one at a time anyway and retries 429 and 5xx responses with exponential back-off, honouring Retry-After.

  • Freshness, and what is not here. The day's issue is in the API well before the working day starts: at 05:23 UTC on 8 September 2026 (01:23 US Eastern) documents.json already held 69 documents dated 2026-09-08, and nothing dated later. Publication runs on business days only — the 2,562 documents sampled fell on 26 publication dates between 1 August and 8 September 2026: every weekday in that span except Labor Day, and not one weekend date. Documents filed for a future issue are on the separate public-inspection desk — 6 of the 77 documents on it on 8 September 2026 were for the next day's issue — and this Actor does not read that endpoint, so a document reaches you on its publication date, not two days earlier. Run an overlapping window (daysBack: 2 daily) rather than one that exactly abuts the previous run. Dates are calendar dates as the Federal Register publishes them (US Eastern), with no time component.

  • Text arrives resolved — and what cannot be resolved stays visible. The Federal Register is typeset by the Government Publishing Office, and three of the GPO's typesetting conventions survive into the API's plain-text fields. Measured over 212,338 documents — every document of seven complete calendar years (1996, 2001, 2006, 2011, 2016, 2021, 2025):

    • Angle-bracket locator codes, in 1.13% of documents. The wrappers <INF>/<SUP> (sub- and superscript) and the font switches <RM>, <IT>, <CS> print nothing and are removed, keeping their text: SO<INF>2</INF>SO2, ACTION: <RM>Notice.ACTION: Notice.. The symbol codes become their character: <bullet>, <plus-minus>±, <Register>®, <Copyright>©, <gr-thn-eq>/<ls-thn-eq>/, <brit-pound>£, <difference>~, the whole <greek-…> family → its Greek letter (<greek-m>μ, <greek-a>α, <greek-oh>ω, <greek-D>Δ), and <greek-i>#, which is the one member of that family the Federal Register does not set as a letter.
    • Square-bracket entity names, in 0.35% of documents: A[ntilde]o NuevoAño Nuevo, 30[deg]03[min]38[sec]30°03′38″, Northeast Gateway[supreg]Northeast Gateway®, Vig[eacute]e Le BrunVigée Le Brun, T[uuml]rkiyeTürkiye. Only names in the table are touched, so bracketed prose — [CFR], [sic], a species name, an agency's own acronym — is published exactly as written.
    • The backslash superscript marker, in 0.42% of documents: 15 <greek-m>g/m\3\15 μg/m³, enriched \15\Nenriched ¹⁵N.

    The vocabulary is not closed, and this Actor does not pretend otherwise. Every entry in both tables was checked against the Federal Register's own typeset rendition of the same passage — the GPO XML behind full_text_xml_url, or the rendered body_html_url — and a code outside them is published exactly as the API sent it, never deleted, counted by name under unresolvedMarkup in the SUMMARY record, and warned about in the run log. That matters more than the table: an unknown code that is silently dropped turns 15 <greek-m>g/m\3\ into 15 g/m3 — wrong by a factor of a million, and indistinguishable from correct data downstream. Over those 212,338 documents, 11,054 locator-code occurrences resolved and 4 did not (<pound> and <script-l>, both inside the same five-document typesetting artefact), so they were left in the text and reported. A bare < in ordinary prose ("fewer than < 5 units") and an address in angle brackets (<Rules_Comments@ao.uscourts.gov>) are not markup and are left alone. No HTML character reference (&amp;, &ndash;) appeared anywhere in the sample, so there is nothing to decode.

  • Missing values are the agency's, not the Actor's. The percentages in What you get are how often each optional field is actually filled; the rest stay null or [] rather than being guessed. Two specific cases are worth knowing. significant is null for 91.6% of documents because the flag is recorded only where OIRA reviewed the rulemaking — null means "no flag recorded", not "not significant"; significantOnly: true selects only the documents flagged true. And an agency name the Office of the Federal Register could not match to its own agency list arrives with a raw name and nothing else (62 of the 4,104 agency entries in the August–September sample (1.5%), usually an agency's own typo — "Rual Housing Service"). Those names are published in agencies so the record stays faithful, but never invented into a slug, so agencySlugs can be shorter than agencies. A handful of archive documents carry no publisher at all and arrive with agencies: [] — 435 of the 212,338 documents in seven complete years (0.21%), of which 428 fall in 1996, 3 in 2001, 4 in 2006 and none at all from 2011 onwards.

  • What the API filters, and what this Actor filters. Document type, date window, agency, keyword, docket and the significance flag are all applied by the API. Two things are not. commentsOpenOnly has no server-side equivalent (conditions[comments_close_on] is rejected as "not a valid field"), so it is applied to each record after it arrives, against today's US Eastern date rather than the UTC one — a deadline of "today" in Washington is still open for the four or five hours each day when UTC has already rolled over. And several keywords cannot be ORed in one request: the API ANDs the words of a single conditions[term] and treats a bare OR as another word — on 8 September 2026 wetland OR pesticide returned 17 hits where wetland alone returned 166 and pesticide alone 221 — so the Actor runs one search per keyword (and per docket id) and merges the results newest-first, dropping duplicates. One more edge worth knowing about the agency filter: the server in front of the API rejects a request line over 8 KB (measured 8 September 2026 — a 7,839-character URL returned 200, an 8,485-character one HTTP 414), which caps the filter at roughly 110 agency slugs. A term broad enough to exceed that, such as a single letter, stops the run during validation with the slug count in the message instead of failing on the first request.

Use cases

  • Regulatory monitoring for a compliance or government-affairs team: a scheduled daily run over your agencies and CFR parts, so a new proposed rule reaches your tracker on its publication date with the docket, the RIN and the comment deadline already on the record.
  • Comment-deadline pipeline for law firms and lobbying shops: commentsOpenOnly with documentTypes: ["PRORULE"] gives you every rulemaking still open for comment, with the deadline as the first column in the dataset's Comment deadlines view and the docket number you need to file at regulations.gov.
  • Policy research and regulatory-burden datasets: download whole years — 23,690 records for 2025 in under a minute — or work back through the archive to 1994 a year at a time, and analyse volumes, page counts, significance and CFR coverage by agency — with windowExhausted: true as the evidence that the download is complete rather than truncated at the API's 10,000-record cap.

Support

Open an issue on the Actor's Issues tab on Apify Store. Replies within 14 days. Bug reports that name the run id and the input used are fixed fastest.