Government — entry 030 of 90
Federal Register
The Federal Register API gives programmatic access to the daily journal of the US government — final and proposed rules, presidential documents, and public notices published since 1994 — along with full-text search across the archive. It's fully keyless, returns JSON by default, and offers a CSV export for search results via a `format` parameter. The same API backs the search on federalregister.gov itself.
The Federal Register API exposes the daily journal of the US government — rules, proposed rules, presidential documents, and notices published since 1994 — as keyless JSON or CSV over a RESTful, HATEOAS-linked set of endpoints. It's the same data and search logic that powers federalregister.gov itself, including full-text search and per-request field selection.
GreatAPIs Score
Auth quickstart
- No API key required — requests are public and keyless. The docs state plainly that no keys are needed, only an HTTP client or browser; no fixed requests-per-second ceiling is published anywhere in the developer documentation.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Fetch a single document with a sparse fieldset
GEThttps://www.federalregister.gov/api/v1/documents/2026-15151.json?fields[]=title&fields[]=publication_date&fields[]=document_number&fields[]=html_url
{"title":"Sunshine Act Meetings","publication_date":"2026-07-27","document_number":"2026-15151","html_url":"https://www.federalregister.gov/documents/2026/07/27/2026-15151/sunshine-act-meetings"}Developer reference
https://www.federalregister.gov/api/v1Gotchas & limits
- `per_page=1` is silently ignored — confirmed live on 2026-07-26: it returns the 20-result default instead of one record, exactly as if the parameter were absent (`per_page=0` behaves the same way). Every value from 2 upward is honored exactly, so this is a one-value quirk, not a floor. There's no error or warning; use `per_page=2` and take the first element if you really only want one.
- You can only paginate through the first 2000 results of any query — the docs state this explicitly. To reach further back, narrow with the date-range filters (`conditions[publication_date][gte]`/`[lte]`) rather than incrementing `page` past that ceiling.
- Repeat `fields[]=` once per field to shrink the payload — omit it and a single search result already carries dozens of extra keys (agencies, excerpts, PDF/HTML URLs, etc.) that most integrations don't need.
- Full CORS support (`access-control-allow-origin: *`, reconfirmed live) plus a JSONP fallback: append `callback=foo` to any URL and the JSON body comes back wrapped as `foo({...})` for old-style cross-domain `<script>` consumption.
- `.json` and `.csv` are just different URL suffixes on the same endpoint and filters — swapping `documents.json` for `documents.csv` returns the identical result set as CSV rows instead of a JSON envelope.