API  ยท  PUBLIC RECORDS โ† The Florida Institute

TheFlorida Institute

API

Query the filings directly

766,501 campaign-finance records from five Florida counties, 2014–2026, behind six endpoints and an MCP server. Free, no payment details, no approval queue. Give an email address and you get a key.

Get a key. One request, and the key is returned immediately.
curl -X POST https://florida.institute/api/v1/keys \
  -H 'content-type: application/json' \
  -d '{"email":"you@example.com","purpose":"what you are building"}'

The key is shown once and stored only as a hash, so it cannot be recovered — only revoked and reissued. Three active keys per address.

Endpoints

Six calls

Authenticate with Authorization: Bearer <key>. Every response carries a meta block with the rows read and your remaining quota.

EndpointDoesParameters
/api/v1/counties What is in the database—
/api/v1/names Find how a name is actually spelled in the filings q, kind, limit
/api/v1/donor Contributions and payments involving a person or firm name, county, limit
/api/v1/candidate Everything filed by one campaign name, county, kind, limit
/api/v1/top Largest contributions or payments in a county county, kind, limit
/api/v1/timeline Money by monthcounty
/api/v1/offices What each office raisedcounty, limit

Start with names

Filings record people surname-first, in spellings you cannot guess: the Miami-Dade mayor is filed as Cava, Daniella Levine, and one law firm appears as both SHUTTS & BOWEN LLP and Shutts and Bowen LLP. Searches match from the start of a name, so resolve the spelling first.

curl -H "Authorization: Bearer $KEY" \
  'https://florida.institute/api/v1/names?q=SHUTTS&limit=5'

curl -H "Authorization: Bearer $KEY" \
  'https://florida.institute/api/v1/donor?name=SHUTTS&county=Orange&limit=20'
Agents

MCP server

The same data is available to AI agents over the Model Context Protocol. The server runs locally and talks to this API, so an agent can ask questions in plain language and get records back.

{
  "mcpServers": {
    "florida-institute": {
      "command": "npx",
      "args": ["-y", "@florida-institute/mcp"],
      "env": { "FI_API_KEY": "fi_live_..." }
    }
  }
}

Until the package is published, clone the repo and point your client at mcp/remote-server.mjs with FI_API_KEY set. It has no dependencies.

Limits

What a key allows

300 calls and 200,000 rows an hour, resetting on the hour. That is far more than interactive use needs and enough for most research; it exists to stop a runaway loop, not to ration access. If you are doing something that needs more, say so at corrections@florida.institute and the key can be raised.

There is deliberately no free-text SQL endpoint. Every query above runs against an index with a hard row cap, which is what keeps the service free to offer. Bulk analysis is better served by the database itself: the full SQLite file is published at /data/research.db.gz and you can query it locally without a key or a limit.

Terms

Using the data

These are public records, republished. Use them for anything, including commercially. Attribution is requested but not required: The Florida Institute, florida.institute.

Two cautions carry over from the research notes. Contributor and payee names are recorded inconsistently, so a total for any single spelling is a floor and a count of distinct donors is a ceiling. And a record of money is not evidence of influence: everything here was lawfully given and voluntarily disclosed.

Found an error? corrections@florida.institute. We publish corrections in full.