data·vault_
← Catalog

Open data API: free endpoints plus an MCP query layer

Published 2026-09-10. Every endpoint below returned HTTP 200 when tested with curl in September 2026.

Free open data endpoints, no key required

An open data API has to clear two checks before anything else: you can call it without registering, and it returns machine-readable rows. The endpoints on this site pass both. They are plain HTTPS GET requests against static files on GitHub Pages, so there is no key, no token, no rate-limit signup, and no client library to install. Point curl, fetch, or a browser at a URL and the data comes back.

EndpointReturnsSize
/catalog.jsonJSON catalog: slugs, niches, row counts, sample and download URLs for every dataset6 entries
/data/hud-fmr-2026/sample.jsonZIP-level fair market rents, 10 columns from zip to fmr_4br22 records
/data/nfl-games/sample.csvgame-level NFL results with scores and betting lines, 46 columns22 rows
/data/airbnb-six-cities/sample.csvlisting rows with price, room type, coordinates, 12 columns20 rows
/data/earn-bounties/sample.jsonSuperteam Earn bounty cards with reward and deadline fields, 15 columns10 records
/data/scraper-pack/sample.jsonscraping script manifest rows, 2 columns10 records

Each sample file is a slice of a dataset we maintain and license. The catalog.json response tells you what exists and links everything else, so one request is enough to write an integration against the whole site.

Call one with curl

List every dataset slug in the catalog:

curl -s https://jayjex.github.io/data-vault/catalog.json | jq -r '.datasets[].slug'

That prints nfl-games, hud-fmr-2026, airbnb-six-cities, earn-bounties, scraper-pack, and printable-engineering-bundle. A sample request looks like this:

curl -s https://jayjex.github.io/data-vault/data/hud-fmr-2026/sample.json

The response is one JSON object with slug, name, columns, row_count, and records, so the shape stays predictable across packs. CSV responses open straight in pandas, Sheets, or a database loader. Nothing in the response needs auth handling or a retry wrapper.

What static endpoints cannot do

A static file answers one request the same way every time. There is no server-side filter, no pagination, and no aggregate endpoint. The samples are also small on purpose: about 22 rows per pack, cut from full files that hold 51,895 HUD rent rows, 7,548 NFL games, and 90,169 Airbnb listings. That size is right for schema checks, test fixtures, and demos, and too small for analysis.

When a project outgrows the samples, the full files ship as CSV zips in the dataset packs, and the same data answers filtered queries through the MCP server below.

MCP as the API layer

For agents, the query side runs through dataset-mcp, an MIT-licensed server that runs locally over stdio and needs no key. It exposes five tools: list_datasets, get_dataset_info, get_sample, query_dataset, and get_stats. The query_dataset tool takes where clauses with =, contains, gt, and lt, picks columns, and pages 100 rows per call through next_offset.

# one-time sanity check (npm 12+ needs the allow-git flag, npm 10/11 run the plain form)
npx --allow-git=all -y github:jayjex/dataset-mcp

A real call against the HUD pack, filtering Texas two-bedroom rents:

query_dataset("hud-fmr-2026", {
  "where": [{ "column": "state", "op": "=", "value": "TX" }],
  "columns": ["zip", "area_name", "fmr_2br"],
  "limit": 5
})

That filter matched 3,247 of 51,895 rows and returned the first 5 in 367ms on a cold call, 265ms from cache after. The install line, client configs, and more captured sessions are in the MCP dataset server docs, and the CSV vs API decision guide covers when a full download beats queries.

Compared with a hosted REST API, MCP moves discovery into the protocol: the client asks the server for tool schemas at startup, so an agent can assemble calls on its own. Humans doing one-off lookups can stay with curl and the endpoints above.

Get the full pack

The free endpoints cover previews, and the MCP query layer covers filtering. Full packs ship as CSV zips with data dictionaries, source checksums, and per-dataset licenses, built for offline analysis and commercial work.

Checkout and download run through Getly. Sources: US Department of Housing and Urban Development (huduser.gov), nflverse, Inside Airbnb, superteam.fun. License terms attach per dataset and ship with every pack.

FAQ

Is there a free open data API that needs no key?

Yes. The sample endpoints on this page are plain GET requests against static files on GitHub Pages, so there is no account, token, or key to manage. The dataset-mcp server adds filtered queries and also needs no key, because it runs on your own machine.

Can an AI agent call these open data endpoints?

Two ways. Raw HTTP: fetch the sample URLs or catalog.json with any HTTP client and parse the JSON or CSV. Native: wire dataset-mcp into Claude Desktop, pi, or another MCP client, and the agent sees list_datasets, get_sample, query_dataset, and get_stats as callable tools with published input schemas.

How is this different from a hosted open data API?

A hosted API runs on someone else's server, with rate limits, tokens, and uptime you do not control. Here the files are static on GitHub Pages and the query layer runs locally, so nothing needs a signup and no quota applies. The trade is scope: static endpoints return whole sample files, and filtering happens through MCP or in your own code.