POPVOX DATA · PUBLIC READ-ONLY API Beta

Appropriations API and downloads

Public records of congressional requests to fund specific community projects.

No account or API key required. JSON responses and complete CSV/JSON downloads. The API and downloads are being tested.

Record stages. A request, an inclusion in a House bill table, an enacted appropriation, and an award are different facts. These collections cover the first two.
13,380Senate requests · FY2027
2,514House requests collected · FY2027
6,427House bill-table records · FY2027
213Funding guidance entries · FY2026–27

How community project funding works

Congressionally Directed Spending (CDS) is the Senate’s term; Community Project Funding (CPF) is the House’s term. Both let Members of Congress request federal funding for specific projects in their communities, often called earmarks. They are part of the annual appropriations process, in which Congress decides how to fund the federal government. Federal agency overview.

  1. Organizations apply to a Member’s office. State, local and tribal governments, and eligible nonprofit organizations, propose projects to a Representative or Senator. Eligible recipients and activities depend on the funding account and that year’s rules. Offices set their own application procedures and deadlines. See examples of House office intake and Senate office intake.
  2. The Member’s office reviews the applications. Offices consider funding requirements, community needs and support, and their own priorities before deciding which projects to recommend. Applying does not guarantee the Member will select a project. Example of an office’s review criteria.
  3. The Member submits selected requests to appropriations subcommittees. These panels handle different parts of the federal budget, such as transportation or agriculture. For FY2027, each House Member may submit up to 20 projects across all subcommittees. The Senate sets limits for particular subcommittees or accounts. Members must publicly disclose their requests and certify that they have no prohibited financial interest. See the House’s FY2027 guidance and Senate requirements, including Senate submission limits.
  4. Subcommittees choose projects for their bills. They review Member requests and recommend projects and funding amounts within the bill’s budget and requirements. The appropriations committee considers the bill and publishes project tables. A request can be left out or included at a different amount. The House publishes separate lists of requested projects and projects included in its bills; Senate guidance explains the committee’s funding discretion.
  5. Funding still requires enactment and agency administration. Inclusion in a committee bill is an intermediate step. Funding must survive the legislative process and become law. The responsible federal agency then administers the project funding under the applicable requirements. See the Federal Transit Administration’s explanation.

What the records on this page represent

The project records cover FY2027. Both chambers consider projects for their bills. This collection includes Senate Member requests, but does not yet include Senate bill-inclusion tables. House request collection is incomplete. The two stages are separate observations, and their dollar amounts should not be added together. These datasets do not track enacted funding, agency awards, or payments.

Funding accounts and program guidance

This reference list identifies agencies, funding accounts, and programs described in House and Senate guidance for community project requests in FY2026 and FY2027. Each entry links to its source guidance. An account is a budget category within an agency. The list does not establish that a particular project is eligible or funded.

EXAMPLE QUERY

Search records

Search is a literal substring across names, purpose, place and reported account. “Water” is an example keyword, not a complete issue classification. House state may refer to the recipient’s address; inspect each record’s location_basis.

curl 'https://popvox.com/api/explorer/appropriations/v1/records?chamber=senate&state=MD&q=water&limit=5'

THE API

API endpoints

POPVOX API guide · All datasets

Dataset metadata · JSON · API specification · OpenAPI 3.1 JSON ↓

Base URL: https://popvox.com/api/explorer/appropriations/v1

EndpointUse it for
/datasetsCoverage, source dates, release IDs, SHA-256 checksums and download links.
/recordsFilter by chamber, year, stage, state, Bioguide Member ID, subcommittee, account, amount, or text.
/recordFollow a record ID to original fields, source evidence, Member references and candidate connections.
/aggregatesExact gross amounts by state, Member, subcommittee or account. House queries require one stage.
/funding-linesAgency, account and program references from House and Senate guidance, organized by chamber, fiscal year and request type.
/openapi.jsonA machine-readable contract for your application or coding assistant.

Use chamber=house or chamber=senate. For a House aggregate, also specify stage=requested or stage=included_in_house_bill. Funding-line lookups require fiscal_year and request_type=cpf (House) or cds (Senate).

Up to 200 records per page; 120 requests per minute per client IP. GET, HEAD and OPTIONS are supported, with public CORS and ETag caching. Honor Retry-After on HTTP 429. For bulk work, use the complete downloads.

Pagination and snapshot IDs

Amounts in meta.totals_by_stage cover every matching record, including those beyond the current page. Carry meta.snapshot and meta.next_offset on subsequent calls. HTTP 409 means restart against the new snapshot.

const base = 'https://popvox.com/api/explorer/appropriations/v1/records';
const params = new URLSearchParams({chamber: 'senate', state: 'MD', limit: '200'});
const records = [];
for (;;) {
  const response = await fetch(`${base}?${params}`);
  if (!response.ok) throw new Error(`HTTP ${response.status}: retry or restart as documented`);
  const {data, meta} = await response.json();
  records.push(...data);
  if (meta.next_offset === null) break;
  params.set('snapshot', meta.snapshot);
  params.set('offset', meta.next_offset);
}

DATASETS & DOWNLOADS

Available datasets

Download one ZIP with all three source-linked JSON datasets, flat CSVs, source-check results, API field definitions and a checksum manifest. No account, API calls, or pagination required.

Senate community project requests

FY2027 · 13,380 Member requests for Congressionally Directed Spending. Bill inclusions are not collected here.

House community project records

FY2027 · 2,514 collected Member requests for Community Project Funding and 6,427 bill-table records. Request collection is incomplete; stages remain separate.

Funding accounts and program guidance

FY2026–2027 · 213 reference entries from House and Senate guidance, with agency, account and program references and source links.

CSV files use UTF-8 and preserve a separate stage column. Lists of Member IDs use semicolons. Text that could be read as a spreadsheet formula receives a leading apostrophe; the JSON files preserve the original text.

Unresolved House account matches · JSON ↓

Browse Senate requests · Browse House funding records · Request other legislative-data APIs

Checked October 2, 2026: all 13,380 consolidated Senate rows match the collected source, and all 26 checked committee tables and guidance PDFs are unchanged. This check does not cover every Member disclosure or certification. The Senate table’s stated update remains June 1, 2026; its original collection was September 7. Read the scope and hashes.

The House snapshot includes a documented extraction correction: one recovered University of Guam request for $2.35 million, plus corrected account boundaries. The 6,427 House bill-table rows are unchanged. Historical record aliases preserve old links; the download retains the correction history.

Coverage and limitations

Credit POPVOX and the underlying publisher, retain source links and dates, and distinguish source records from your conclusions. Sources and methods.