# 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.

- **HTML:** https://offendersearch.app/docs/learn/free-public-apis
- **Base URL (live):** https://api.offendersearch.app — live keys (`os_live_…`)
- **Base URL (sandbox):** https://sandbox.offendersearch.app — test keys (`os_test_…`), never billed
- **Authentication:** `X-API-Key` request header
- **OpenAPI:** https://offendersearch.app/openapi.json · https://offendersearch.app/openapi.yaml
- **Docs index for agents:** https://offendersearch.app/llms.txt

## 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 |

```bash
# 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](https://github.com/public-apis/public-apis) | 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](https://publicapis.io) | A searchable front end over a curated list, with the same auth flags. | Filtering by "no auth" |
| [publicapi.dev](https://publicapi.dev) | Per-API pages with a sample request and response. | Seeing a response before signing up |
| [free-for.dev](https://free-for.dev) | Free tiers of developer services, APIs included, with the limits spelled out. | Knowing the free tier's ceiling |
| [Postman API Network](https://www.postman.com/explore) | Public workspaces with runnable collections. | Trying an API without writing code; see [Postman API documentation](/docs/learn/postman-api-documentation) |
| [RapidAPI Hub](https://rapidapi.com/hub) | A marketplace: one key, many APIs, usage-based billing. | Comparing paid data APIs side by side |
| [APIs.guru](https://apis.guru) | A directory of OpenAPI definitions. | Generating a client from a schema; ours is at [/openapi.json](/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](https://www.courtlistener.com/help/api/rest/) | Federal and state case law, dockets (RECAP), judges, oral arguments | API token (free account) | Rate-limited per token; see its docs |
| [PACER](https://pacer.uscourts.gov/) | Federal court dockets and documents | Account; per-page fees with a quarterly waiver | Fee-based; see its docs |
| [FBI Crime Data API](https://api.usa.gov/crime/fbi/cde/) | 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](https://www.sec.gov/search-filings/edgar-application-programming-interfaces) | Company filings, facts and submissions as JSON | None; a descriptive `User-Agent` is required | 10 requests a second |
| [openFDA](https://open.fda.gov/apis/authentication/) | 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](https://www.census.gov/data/developers/guidance/api-user-guide.html) | Population, demographics, economic series | Optional key | 500 queries a day per IP without a key |
| [OpenFEC](https://api.open.fec.gov/developers/) | Campaign finance: candidates, committees, filings | api.data.gov key (free) | 1,000 requests an hour per key |
| [USAspending.gov API](https://api.usaspending.gov/) | Federal awards, contracts, grants | None | See its docs |
| [NPPES NPI Registry API](https://npiregistry.cms.hhs.gov/api-page) | Healthcare provider NPI records | None | See its docs |
| [SAM.gov Entity API](https://open.gsa.gov/api/entity-api/) | Federal contractor registrations and exclusions | api.data.gov key (free); roles for some data | See its docs |
| [NHTSA vPIC API](https://vpic.nhtsa.dot.gov/api/) | Vehicle identification: VIN decode, makes, models | None | See its docs |
| [Bureau of Labor Statistics API v2](https://www.bls.gov/developers/) | Employment, prices and wage series | Free key | 500 queries a day with a key; v1 without a key is 25 |
| [data.gov CKAN API](https://catalog.data.gov/api/3) | The catalogue of federal datasets (metadata, not the data itself) | None | See its docs |

> **None of these is a sex offender registry or criminal background API.** The federal government publishes a public search website for registries, not an API, and there is no federal API for state criminal records. The registry and criminal-record data a screening integration needs comes from the states and counties, which is the gap the [OffenderSearch API](/background-check-api) fills: one key, one request, 58 US registries or the criminal public-record sources, with a free sandbox. The [NSOPW API explainer](/nsopw-api) covers the question in full.

## 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](/sandbox) page lists every fixed test name and what each returns, and [sandbox and production](/docs/platform/environments) 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](/docs/reports) and evidence documents |

```python
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 verdict
```

The 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](/docs/matching) explains how this API scores, and the [criminal records API](/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](/docs/learn/api-token-example) shows how to create, scope and rotate one in a minute, and [API key vs OAuth](/docs/learn/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

1. **Is there a schema?** An [OpenAPI document](/openapi.json) means you can generate a client and the docs cannot lie about field names.
2. **Is there a sandbox or a free tier you can hit today?** A "contact sales" wall before the first call is a sign.
3. **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 `status` and `sourceStatus[]` here.
4. **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.
5. **Are errors structured?** A `detail.code` you can branch on, and `Retry-After` on a `429`.
6. **Is there a changelog and a versioned path?** `/v1` today means `/v2` cannot break you tomorrow. See [the changelog](/docs/changelog).
7. **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](/fcra).
8. **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](/background-check-api-pricing).
9. **Can an AI agent use it?** An [MCP server](/mcp-server) and an [llms.txt](/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-After` on `429`.
- **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](/docs/learn/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](/background-check-api), [sex offender API](/sex-offender-api), [criminal records API](/criminal-records-api); the [free background check API](/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](/blog/best-background-check-api) scores the options; the [criminal record API comparison](/blog/best-criminal-record-api) 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](#search-api-vs-data-api-vs-verification-api) 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](/sign-up), then Dashboard → API keys; a test key works on the sandbox at once. The [API token example](/docs/learn/api-token-example) walks through it.

## Related

- [Learn APIs by example (hub)](https://offendersearch.app/docs/learn)
- [Public API for testing (sandbox)](https://offendersearch.app/sandbox): every fixed test name and what it returns
- [Free background check API](https://offendersearch.app/free-background-check-api): 25 free calls, no card
- [RESTful API example](https://offendersearch.app/docs/learn/restful-api-example)
- [API token example](https://offendersearch.app/docs/learn/api-token-example): getting a free key
- [API key vs OAuth](https://offendersearch.app/docs/learn/api-key-vs-oauth)
- [What is an API? Glossary](https://offendersearch.app/docs/learn/what-is-an-api): public API, data API, search API defined
- [Background check API](https://offendersearch.app/background-check-api)
- [Sex offender API](https://offendersearch.app/sex-offender-api)
- [Criminal records API](https://offendersearch.app/criminal-records-api)
- [NSOPW API: is there one?](https://offendersearch.app/nsopw-api)
- [Top 5 background check APIs compared](https://offendersearch.app/blog/best-background-check-api)
