Regulations.gov Crawler - Rules, Dockets, Public Comments
Pricing
Pay per event
Regulations.gov Crawler - Rules, Dockets, Public Comments
Query the official regulations.gov v4 API for federal rules, proposed rules, notices, dockets, and public comments. Filter by agency, document type, docket, date range, and keywords. Requires a free API key.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Query the official regulations.gov v4 API for federal rulemaking. Returns rules, proposed rules, notices, dockets, and public comments — all three endpoints from one actor, covering 2M+ documents, 400K+ dockets, and 20M+ comments submitted to the federal government.
Regulations.gov Crawler Features
- Covers three endpoints from a single actor — documents, dockets, and public comments
- Filters by agency, document type, docket ID, date range, and full-text keyword
- Returns clean JSON with consistent field names across all three record types
- Pure JSON API — no browser, no proxies, no anti-bot theater
- Rate-limit aware — a 4-second courtesy delay keeps runs well under the api.data.gov quota
- Handles your own api.data.gov key if you have one, so you can crank through 1,000 requests per hour
Who Uses Regulations.gov Data?
- Compliance teams — Track new rules affecting their industry without paying SaaS rent to Bloomberg Government
- Law firms — Monitor rulemaking dockets in their practice areas and stay ahead of client questions
- Policy researchers — Analyze public comments on proposed rules to understand stakeholder positions
- Trade associations — Watch agency activity and flag anything that could rearrange their members' Monday
- Regulatory intelligence products — Feed structured federal rulemaking data into internal dashboards and client alerts
How Regulations.gov Crawler Works
- Pick a data type — documents, dockets, or comments.
- Narrow the query with optional filters: agency acronym, document type, docket ID, date range, search term.
- The actor hits the regulations.gov v4 API, paginates up to the API's 20-page hard cap (5,000 records per query), and writes each record to your dataset.
- Get a free api.data.gov key if you plan to run this more than a couple times an hour. It takes a minute and doubles your effective throughput.
Input
{"apiKey": "your-free-api-data-gov-key","dataType": "documents","searchTerm": "climate","agencyId": "EPA","documentType": "Rule","postedDateFrom": "2025-01-01","postedDateTo": "2026-04-01","sortBy": "-lastModifiedDate","maxItems": 500}
| Field | Type | Default | Description |
|---|---|---|---|
apiKey | string | (empty) | Your free api.data.gov key. Get one at open.gsa.gov/api/regulationsgov. Optional but strongly recommended — without it you share a global DEMO_KEY quota. |
dataType | string | documents | Which endpoint to hit: documents, dockets, or comments. |
searchTerm | string | (empty) | Full-text search across titles and abstracts. |
documentType | string | (empty) | Documents-only filter: Rule, Proposed Rule, Notice, Supporting & Related Material, Other. |
docketType | string | (empty) | Dockets-only filter: Rulemaking or Nonrulemaking. |
agencyId | string | (empty) | Agency acronym: EPA, FAA, SEC, DOT, FDA, FCC, NRC, etc. |
docketId | string | (empty) | Filter to a specific docket (e.g., EPA-HQ-OAR-2023-0234). Documents and comments only. |
postedDateFrom | string | (empty) | Return records posted on or after this date (YYYY-MM-DD). |
postedDateTo | string | (empty) | Return records posted on or before this date (YYYY-MM-DD). |
sortBy | string | -lastModifiedDate | Sort order: -lastModifiedDate, lastModifiedDate, -postedDate, postedDate, title. |
maxItems | integer | 100 | Max records to return. API hard cap is 5,000 per query — narrow filters for larger datasets. |
Example: All EPA Final Rules Posted in the Last Month
{"dataType": "documents","agencyId": "EPA","documentType": "Rule","postedDateFrom": "2026-03-19","maxItems": 500}
Example: Public Comments on a Specific Docket
{"dataType": "comments","docketId": "EPA-HQ-OAR-2023-0234","sortBy": "-postedDate","maxItems": 1000}
Example: Rulemaking Dockets From the FAA
{"dataType": "dockets","agencyId": "FAA","docketType": "Rulemaking","maxItems": 200}
Regulations.gov Crawler Output Fields
All three endpoints share a consistent schema. Fields that do not apply to a given record type are returned as empty strings.
Document Record
{"recordType": "document","id": "FAA-2026-3471-0001","objectId": "09000064b925548c","title": "Airworthiness Directives: The Boeing Company Airplanes","documentType": "Proposed Rule","subtype": "Request for Comment","agencyId": "FAA","docketId": "FAA-2026-3471","docketType": "","frDocNum": "2026-06691","commentStartDate": "2026-04-07T04:00:00Z","commentEndDate": "2026-05-23T03:59:59Z","postedDate": "2026-04-07T04:00:00Z","lastModifiedDate": "2026-04-19T09:00:22Z","withinCommentPeriod": true,"openForComment": true,"withdrawn": false,"allowLateComments": false,"commentOnId": "","commentOnDocumentId": "","url": "https://www.regulations.gov/document/FAA-2026-3471-0001","apiUrl": "https://api.regulations.gov/v4/documents/FAA-2026-3471-0001"}
Docket Record
{"recordType": "docket","id": "USCG-2019-0806","objectId": "0b00006483f8d57e","title": "Allegheny River mm 0-0.25, Pittsburgh, PA","documentType": "Rulemaking","agencyId": "USCG","docketType": "Rulemaking","lastModifiedDate": "2019-10-25T12:02:53Z","url": "https://www.regulations.gov/docket/USCG-2019-0806","apiUrl": "https://api.regulations.gov/v4/dockets/USCG-2019-0806"}
Comment Record
{"recordType": "comment","id": "EPA-R10-OW-2017-0369-1246","objectId": "0900006482ba59a6","title": "Comment submitted by J. Grimble","documentType": "Public Submission","agencyId": "EPA","docketId": "EPA-R10-OW-2017-0369","postedDate": "2017-10-11T04:00:00Z","lastModifiedDate": "2017-10-12T01:52:49Z","withdrawn": false,"url": "https://www.regulations.gov/comment/EPA-R10-OW-2017-0369-1246","apiUrl": "https://api.regulations.gov/v4/comments/EPA-R10-OW-2017-0369-1246"}
Field Reference
| Field | Type | Description |
|---|---|---|
recordType | string | Which endpoint produced the record: document, docket, or comment. |
id | string | Regulations.gov ID (e.g., EPA-HQ-OAR-2023-0234-0005). |
objectId | string | Internal regulations.gov object identifier — useful for cross-referencing and for filtering comments by parent document. |
title | string | Record title. |
documentType | string | Document type or (for dockets) the docket type. |
subtype | string | Document subtype (e.g., Final Rule, Interim Final Rule). |
agencyId | string | Agency acronym (e.g., EPA, FAA, SEC). |
docketId | string | Parent docket ID (documents and comments). |
docketType | string | Rulemaking or Nonrulemaking (dockets only). |
frDocNum | string | Federal Register document number (documents only). |
commentStartDate | string | Start of comment period (ISO 8601). |
commentEndDate | string | End of comment period (ISO 8601). |
postedDate | string | Date the record was posted. |
lastModifiedDate | string | Last modification timestamp. |
withinCommentPeriod | boolean | Whether the comment period is currently open. |
openForComment | boolean | Whether the record is currently accepting comments. |
withdrawn | boolean | Whether the record has been withdrawn. |
allowLateComments | boolean | Whether late comments are permitted. |
commentOnId | string | Object ID of the parent document (comments only). |
commentOnDocumentId | string | Document ID the comment is on (comments only). |
url | string | Public regulations.gov URL for the record. |
apiUrl | string | API URL for fetching the full detail record (including attachments, CFR parts, effective dates, topics, etc.). |
For document-level details like CFR part, effective date, topics, page count, and attached file URLs, call apiUrl directly with the same API key. The list endpoint used here returns the summary fields; the detail endpoint returns everything.
FAQ
How do I scrape regulations.gov?
Regulations.gov Crawler hits the official v4 REST API. Pick a dataType (documents, dockets, or comments), add filters, and run it. No browser, no HTML parsing, no proxy.
Do I need an API key?
Regulations.gov Crawler works without one, but not very well. The shared DEMO_KEY is rate-limited to 10 requests per hour across all users of the API. Get a free key at open.gsa.gov/api/regulationsgov — it takes about a minute and bumps your quota to 1,000 requests per hour.
How much data can I pull in one run?
Regulations.gov Crawler is capped at 5,000 records per query by the API itself (20 pages × 250 records). For larger datasets, narrow your filters — by agency, date range, or docket — and run the actor multiple times. The date range filters are especially useful for slicing large agencies into monthly windows.
Can I get the full text of public comments?
Regulations.gov Crawler returns comment metadata and titles in the list response. Full comment text lives on the per-comment detail endpoint, which is linked as apiUrl on each record. The list endpoint would otherwise slow to a crawl under the API's strict rate limits.
Does this actor need proxies?
Regulations.gov Crawler is a public U.S. government API with no anti-bot measures. No proxy needed. The only throttling is the api.data.gov hourly quota, which a real API key solves.
How much does it cost to run?
Regulations.gov Crawler uses the standard PPE pricing model: $0.10 per run start plus $0.001 per record. A 500-record pull costs about $0.60. A full 5,000-record run is $5.10.
Need More Features?
Need detail-level fields (CFR parts, effective dates, attachments), a different endpoint, or bulk comment-text extraction? File an issue or get in touch.
Why Use Regulations.gov Crawler?
- Covers all three endpoints — Documents, dockets, and comments in one actor. Other regulations.gov scrapers on the Apify store pick one and stop there.
- Uses the official API — Structured JSON, stable schemas, no HTML parsing brittleness, no surprise 500s from the rendered site.
- Bring your own key — The actor supports your own api.data.gov key so you can run it at full throughput without sharing a quota with strangers.