BetaThis website is in beta and open to the public. For the most accurate data, please refer to SeeTheMoney.arizona.vote.

NOTICE: This is a beta product and there may be visual or data defects, if you find one, please report it by clicking the "Give Us Feedback" link below.

Public API

See The Money publishes Arizona campaign finance data through a free, read-only API. Every endpoint is a plain HTTP GET that returns JSON — no key, token, or registration is required, and cross-origin requests are allowed, so you can call it from scripts, spreadsheets, notebooks, or your own website.

For AI tools and agents

The API is designed to be easy for AI assistants to use. Request http://spotlightv2.arizona.vote/api to receive a machine-readable directory of every endpoint, its parameters, and the conventions below. A typical flow: look up an entity id with /api/entities/search, then pull its details, transactions, and filed reports with the committee endpoints.

Conventions

ConventionDetail
Paging Paged endpoints accept page (1-based, default 1) and pageSize (default 100, maximum 500) and respond with { page, pageSize, totalCount, data }.
Election cycles cycleId is the system id from /api/cycles. Omit it to search every cycle on record.
Entity groups entityGroupNumber values: 1 Candidate, 2 PAC, 3 Party, 4 Organization, 5 Independent Expenditure, 6 Proposition, 7 Individual, 8 Business.
Dates and amounts Dates use YYYY-MM-DD. Amounts are decimal dollars; expenses are reported as positive amounts with their transaction type.

Lookup endpoints

GET /api/cycles

Election cycles with their system ids, names, and date ranges. Use the cycleId values with every other endpoint.

curl "http://spotlightv2.arizona.vote/api/cycles"
GET /api/offices

Offices sought by candidates, each with its office type. Use officeID and officeTypeID with /api/transactions/search.

curl "http://spotlightv2.arizona.vote/api/offices"
GET /api/parties

Political parties. Use partyID with /api/transactions/search.

curl "http://spotlightv2.arizona.vote/api/parties"

Finding entities

GET /api/entities/search?name={text}

Searches candidates, committees, individuals, and businesses by name. If the text starts with digits it matches filer ids instead. The returned entityId is the id the committee endpoints take.

curl "http://spotlightv2.arizona.vote/api/entities/search?name=smith"
[
  { "entityId": 12345, "entityGroupNumber": 1, "entityGroupType": "Candidate", "name": "John Smith" },
  { "entityId": 67890, "entityGroupNumber": 7, "entityGroupType": "Individual", "name": "Jane Smith" }
]

Committees

GET /api/committees/{id}

A committee's registration details — name, filer type, office sought, party, chairman, treasurer, and addresses — plus its lifetime cash on hand (income less expenses across every filing).

curl "http://spotlightv2.arizona.vote/api/committees/12345"
GET /api/committees/{id}/transactions?cycleId={cycleId}&page={page}&pageSize={pageSize}

The committee's transactions, newest first: contributions received, expenses paid, and independent expenditures made by or about the committee. All parameters are optional.

curl "http://spotlightv2.arizona.vote/api/committees/12345/transactions?cycleId=44&page=1&pageSize=100"
GET /api/committees/{id}/reports

The committee's publicly filed reports, including links to the filed documents.

curl "http://spotlightv2.arizona.vote/api/committees/12345/reports"

Searching transactions

GET /api/transactions/search

Searches every public transaction. All parameters are optional and combine with each other; supply as many or as few as you need.

ParameterMeaning
filerIdExact filer id (from /api/entities/search).
filerNameFiler name text match; ignored when filerId is supplied.
filerTypeId1 Candidate, 2 PAC, 3 Party.
officeTypeId / officeIdOffice sought (from /api/offices).
partyIdParty (from /api/parties).
cycleIdElection cycle (from /api/cycles).
startDate / endDateTransaction date range (both required together; ignored when cycleId is set).
contributorNameContributor name text match.
state / city / employer / occupationContributor attributes; state is the two-letter code.
minAmount / maxAmountAmount range in dollars.
includeIncomeInclude contributions (default true).
includeExpenseInclude expenses (default false).
includeIndependentExpendituresInclude independent expenditures (default false). When set, filer, office, and party selections also match the committee the expenditure was about.
page / pageSizePaging; see conventions.

Contributions to a specific committee during the 2026 cycle:

curl "http://spotlightv2.arizona.vote/api/transactions/search?filerId=12345&cycleId=44"

Everything a contributor gave across all cycles:

curl "http://spotlightv2.arizona.vote/api/transactions/search?contributorName=Jane%20Smith"

Independent expenditures about gubernatorial candidates in the 2026 cycle:

curl "http://spotlightv2.arizona.vote/api/transactions/search?includeIndependentExpenditures=true&includeIncome=false&officeId=1&cycleId=44"

Fair use

The data comes from campaign finance filings with the Arizona Secretary of State and refreshes nightly. Please cache what you fetch, keep request rates reasonable, and use paging rather than requesting very large result sets repeatedly. The API is provided as-is for transparency and research.