Free public APIs for developers: lists, data APIs and ours
Every "free APIs" list repeats the same weather and cat-fact endpoints. This one is about public records and government data: what is actually free, what each one needs, and what to build with it.
What counts as a free public API
A public API is one anyone can call: documented, reachable on the internet, open to sign-up. A free API is one with a tier that costs nothing — which, read carefully, means one of three different things. Knowing which one you are looking at saves an afternoon.
| Kind | What "free" means | Example |
|---|---|---|
| No key at all | Send the request; there is no account. Usually rate-limited by IP and with no support. | NHTSA vehicle API, SEC EDGAR, USAspending |
| Free key | Register, get a key, call within a daily or hourly quota. The common shape for government data. | api.data.gov keys (FEC, GovInfo, FBI crime data), Census, openFDA |
| Free tier of a paid API | A sandbox, a trial allowance, or a monthly quota; production use is metered after that. | OffenderSearch: a free sandbox plus 25 free live calls, then $0.15 a call |
# A public API with no key at all: NHTSA's vehicle API decodes a VIN
curl "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVin/1HGCM82633A004352?format=json"
# A public API with a free key: our sandbox (os_test_… key, nothing billed)
curl -X POST https://sandbox.offendersearch.app/v1/search \
-H "X-API-Key: $OFFENDERSEARCH_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"query": {"firstName": "Exact", "lastName": "Match", "dob": "1980-01-01"}}'Where to find public APIs: the directories that matter
There are a handful of directories worth bookmarking; the rest copy them. Each lists auth requirements and HTTPS/CORS support per API, which is the information you actually need before trying one.
| Directory | What it is | Good for |
|---|---|---|
| public-apis on GitHub | The community list, thousands of entries by category, each with Auth / HTTPS / CORS columns. Pull-request curated. | Breadth; the "Government" and "Open Data" sections |
| publicapis.io | A searchable front end over a curated list, with the same auth flags. | Filtering by "no auth" |
| publicapi.dev | Per-API pages with a sample request and response. | Seeing a response before signing up |
| free-for.dev | Free tiers of developer services, APIs included, with the limits spelled out. | Knowing the free tier's ceiling |
| Postman API Network | Public workspaces with runnable collections. | Trying an API without writing code; see Postman API documentation |
| RapidAPI Hub | A marketplace: one key, many APIs, usage-based billing. | Comparing paid data APIs side by side |
| APIs.guru | A directory of OpenAPI definitions. | Generating a client from a schema; ours is at /openapi.json |
Free public-records and government data APIs (US)
These are the ones a developer building anything to do with people, companies, courts or compliance should know. Auth and limits are as each provider's own documentation states them on the revised date of this page; follow the link for the current terms, and read each API's permitted-use rules before shipping.
| API | What it returns | Auth | Published limit |
|---|---|---|---|
| CourtListener REST API | Federal and state case law, dockets (RECAP), judges, oral arguments | API token (free account) | Rate-limited per token; see its docs |
| PACER | Federal court dockets and documents | Account; per-page fees with a quarterly waiver | Fee-based; see its docs |
| FBI Crime Data API | UCR / NIBRS crime statistics by agency, state and offense | api.data.gov key (free) | api.data.gov default: 1,000 requests an hour per key |
| SEC EDGAR | Company filings, facts and submissions as JSON | None; a descriptive User-Agent is required | 10 requests a second |
| openFDA | Drug, device, food and recall data | Optional key | 1,000 a day without a key; 120,000 a day with one |
| US Census Bureau API | Population, demographics, economic series | Optional key | 500 queries a day per IP without a key |
| OpenFEC | Campaign finance: candidates, committees, filings | api.data.gov key (free) | 1,000 requests an hour per key |
| USAspending.gov API | Federal awards, contracts, grants | None | See its docs |
| NPPES NPI Registry API | Healthcare provider NPI records | None | See its docs |
| SAM.gov Entity API | Federal contractor registrations and exclusions | api.data.gov key (free); roles for some data | See its docs |
| NHTSA vPIC API | Vehicle identification: VIN decode, makes, models | None | See its docs |
| Bureau of Labor Statistics API v2 | Employment, prices and wage series | Free key | 500 queries a day with a key; v1 without a key is 25 |
| data.gov CKAN API | The catalogue of federal datasets (metadata, not the data itself) | None | See its docs |
Public API for testing: "dummy" APIs versus a real sandbox
Half the searches for "public api" are developers who need something to call while they build. Two different things answer that need:
| Dummy / mock API | Sandbox of a real API | |
|---|---|---|
| Examples | JSONPlaceholder, DummyJSON, a local JSON Server | sandbox.offendersearch.app with an os_test_ key |
| Data | Toy: todos, posts, products | Fixed test people with real field shapes: Exact Match (one verified record), Name Only (three possible matches), Clear Visitor (none) |
| Shapes | Made up by the mock | The production serialisers; "sandbox": true is the only difference |
| Errors | Usually none | Real validation: a 422 names the bad field; a 429 carries Retry-After |
| Cost | Free | Free; 60 requests a minute and 2,000 a day per test key |
| What you learn | How to make an HTTP call | How the integration you will ship behaves |
Use a dummy API to learn HTTP. Use a sandbox to build the thing. The public API for testing page lists every fixed test name and what each returns, and sandbox and production explains the two hosts.
Search API vs data API vs verification API
Three terms that get used for the same endpoint and mean three different contracts:
| Term | Contract | Here |
|---|---|---|
| Data API | Give me the record(s) for X. The answer is rows. | A registry record with addresses, offenses, photo, sources |
| Search API | Here is a query; give me ranked candidates with a confidence. The answer is a list, best first, plus how sure you are. | POST /v1/search → records[] ordered by matchConfidence |
| Verification API | Is this claim true? The answer is a verdict with evidence. | matchState: "dob_match" on a record; the verification report and evidence documents |
import os, requests
# A search API: a query in, ranked matches out (here: 58 US sex offender registries)
r = requests.post(
"https://sandbox.offendersearch.app/v1/search",
headers={"X-API-Key": os.environ["OFFENDERSEARCH_TEST_KEY"]},
json={"query": {"firstName": "Name", "lastName": "Only"}}, # a fixed test name: 3 possible matches
timeout=60,
)
data = r.json()
for rec in data["records"]: # best match first
print(rec["matchConfidence"], rec["registrationState"], rec["name"]["full"])
# 0.75 AZ … / 0.75 GA … / 0.75 MI … — name-only matches, so medium confidence, no dob verdictThe distinction matters when you pick an API: a data API with no confidence score makes you decide whether a row is your person; a search API tells you; a verification API hands you something you can show an auditor. The matching guide explains how this API scores, and the criminal records API applies the same idea to court and jail records.
Public APIs without a key, and why most data APIs need one
Keyless APIs exist where the data is harmless and the operator can afford anonymous traffic: vehicle decoding, company filings, dataset catalogues. A key appears the moment any of three things is true: the data is about people, the operator meters usage, or the operator needs to be able to shut off one abusive caller without shutting off everyone. Public-records APIs trip all three, which is why every serious one requires at least a free key.
A key is not friction for its own sake. It is what makes a free tier possible: 25 free calls can be given to each account only if accounts exist. The API token example shows how to create, scope and rotate one in a minute, and API key vs OAuth explains when a key is the right credential and when it is not.
How to choose a public API: a nine-point check
- Is there a schema? An OpenAPI document means you can generate a client and the docs cannot lie about field names.
- Is there a sandbox or a free tier you can hit today? A "contact sales" wall before the first call is a sign.
- Does the response say how complete it is? A data API that cannot say "this source did not answer" will hand you a false negative one day. Look for a status and per-source detail, like
statusandsourceStatus[]here. - Does it score matches? For anything about people, a confidence and a date-of-birth verdict are the difference between a lead and a decision.
- Are errors structured? A
detail.codeyou can branch on, andRetry-Afteron a429. - Is there a changelog and a versioned path?
/v1today means/v2cannot break you tomorrow. See the changelog. - Are the permitted uses written down? Public-records data has legal limits on use (employment and housing decisions are regulated). An API that explains them is one that has thought about them; see FCRA.
- What does it cost at your volume? Pay-per-call ($0.15 here) suits bursty and low-volume use; seat pricing suits steady high volume. See API pricing.
- Can an AI agent use it? An MCP server and an llms.txt mean the API works inside Claude or Cursor without glue code.
Best practices when you depend on a public API
- Keep keys server-side and in environment variables; rotate on a schedule.
- Set a timeout on every call and honour
Retry-Afteron429. - Persist ids (
searchId,monitorId) before acting on results, so a retry can recover rather than resubmit. - Cache what is cacheable (reference data, your own completed searches) and never cache what is not (a screening answer about a person is point-in-time).
- Read the completeness fields before treating "no results" as "nothing found".
- Build against the sandbox, deploy against production with the host and key as the only difference — the RESTful API example is written that way.
- Subscribe to the changelog and pin the version prefix.
Our public API: what is free, what is not
| Free | Paid | |
|---|---|---|
| Sandbox | Unlimited test keys within 60 a minute / 2,000 a day each; the production response shape; never billed | — |
| Live sex offender search | 25 calls on sign-up, no card | $0.15 a call |
| Live criminal records search | Included in the 25 | $0.15 a call |
| Live re-check of a named source | — | $0.02 per completed source |
| Monitoring, evidence documents, FCRA orders | Sandbox versions of each | Priced on their own pages |
The free side is enough to build and demo a complete integration. The product pages describe each API: background check API, sex offender API, criminal records API; the free background check API page is the short version of this table.
What this page does not cover
- Weather, finance, social and entertainment APIs. The directories above have hundreds; this page stays on public records and government data.
- International public records. The APIs listed are United States sources, and ours is US-only.
- Identity verification, credit, driving records. Different regulated categories with their own providers; none of the free APIs above does them and neither does this one.
- Anything that requires a Social Security number. No API on this page asks for one.
FAQ: free and public API questions, answered
Are there free APIs for public records?
Yes for federal data (SEC, FEC, USAspending, court opinions via CourtListener) with free keys or none. For sex offender registries and state criminal records there is no free government API; a commercial API with a free sandbox and a free call allowance is the practical route.
What is a public API without a key?
One you can call with no account: NHTSA vPIC, SEC EDGAR, USAspending, the NPI registry. They are rate-limited by IP and offer no support or SLA.
What is the best API for background checks?
It depends on whether you need a regulated consumer report or a public-records lookup, and on volume. The comparison of background check APIs scores the options; the criminal record API comparison covers court and jail data.
What is a data API?
An API whose job is to return records about things rather than to perform actions in another application. The search vs data vs verification section explains the three flavours.
How do I get a public API key for free?
Register with the provider and create a key in its dashboard. Here: /sign-up, then Dashboard → API keys; a test key works on the sandbox at once. The API token example walks through it.