FEC Campaign Finance Search avatar

FEC Campaign Finance Search

Pricing

from $2.00 / 1,000 record fetcheds

Go to Apify Store
FEC Campaign Finance Search

FEC Campaign Finance Search

Search US federal campaign finance data. Find political donations by donor name, candidate, committee, employer, and state. Returns amounts, dates, PDF filing links. Free FEC API, no key required.

Pricing

from $2.00 / 1,000 record fetcheds

Rating

0.0

(0)

Developer

ryan clinton

ryan clinton

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

4 hours ago

Last modified

Share

What does FEC Campaign Finance Search do?

FEC Campaign Finance Search is an Apify actor that lets you search and extract US federal campaign finance data directly from the Federal Election Commission (FEC) public API. It returns structured data on individual political contributions and candidate filings, covering every federal election cycle from presidential races down to House and Senate campaigns.

Whether you are a journalist investigating donor networks, a researcher studying political spending patterns, or a compliance professional tracking contributions, this actor gives you programmatic access to the same FEC data that powers opensecrets.org and other campaign finance databases -- without writing a single line of code.

Why use FEC Campaign Finance Search on Apify?

  • Two search modes in one actor -- Search individual contributions (Schedule A filings) or look up candidate information. Switch between modes with a single input toggle.
  • No API syntax required -- The FEC API requires constructing URL parameters, handling cursor-based pagination, and decoding office/challenge codes. This actor handles all of that.
  • Sorted by amount -- Contributions are returned sorted by amount (largest first), so you immediately see the biggest donors and donations.
  • Full donor details -- Each contribution includes the donor's name, employer, occupation, city, state, ZIP, plus the receiving committee, candidate linkage, and PDF filing links.
  • Automatic pagination -- Fetches up to 10,000 results across multiple API pages with built-in 500 ms rate limiting.
  • Schedule for monitoring -- Run weekly to track new contributions to specific committees or from specific donors across election cycles.
  • Free to use -- Works with the FEC's free DEMO_KEY (1,000 requests/hour) or your own free API key for higher limits.

Key features

  • Flexible filtering -- Filter contributions by donor name, committee/PAC name, employer, state, and minimum dollar amount. Filter candidates by name, state, and election year.
  • Committee and candidate linkage -- Every contribution is linked to its receiving committee and, where available, the associated candidate, office, and party.
  • PDF filing links -- Direct links to the original PDF filings on the FEC website for source verification.
  • Aggregate year-to-date totals -- See how much each donor has given in total during the current reporting period.
  • Office and status decoding -- Office codes (H/S/P) and incumbent/challenger status are decoded to human-readable labels.
  1. Navigate to the FEC Campaign Finance Search actor on the Apify Store.
  2. Click Try for free to open the actor in Apify Console.
  3. Select your Search Mode: "Individual Contributions" to find donations, or "Candidates" to look up candidate filings.
  4. Fill in your search filters. For contributions mode, enter a donor name (e.g., "Elon Musk"), committee name, employer, state, or minimum amount. For candidates mode, enter a candidate name (e.g., "Trump") and optionally a state.
  5. Set the Election Year (defaults to 2024) and Max Results (defaults to 100, max 10,000).
  6. Optionally enter your free FEC API key from api.open.fec.gov for higher rate limits.
  7. Click Start and wait for the run to complete.
  8. Download results as JSON, CSV, or Excel from the Dataset tab, or connect via API.

Input parameters

ParameterTypeRequiredDefaultDescription
searchModeselectNocontributionsChoose between "Individual Contributions" or "Candidates" search
contributorNamestringNo--Donor name to search for (e.g., "Elon Musk", "Warren Buffett"). Used in contributions mode.
candidateNamestringNo--Candidate name to search for (e.g., "Trump", "Biden"). Used in candidates mode.
committeeNamestringNo--Committee or PAC name to filter by (e.g., "America PAC"). Contributions mode only.
contributorEmployerstringNo--Filter by donor's employer (e.g., "Google", "Goldman Sachs"). Contributions mode only.
contributorStatestringNo--Two-letter state code (e.g., "CA", "TX", "NY"). Works in both modes.
minAmountintegerNo--Minimum contribution amount in US dollars. Contributions mode only.
electionYearintegerNo2024Federal election cycle year (even years: 2020, 2022, 2024, 2026)
maxResultsintegerNo100Maximum number of results to return (1 to 10,000)
apiKeystringNoDEMO_KEYFree FEC API key from api.open.fec.gov for higher rate limits. Secret field.

Input examples

Find large donors to a specific PAC:

{
"searchMode": "contributions",
"committeeName": "America PAC",
"minAmount": 100000,
"electionYear": 2024,
"maxResults": 500
}

Search contributions by employer:

{
"searchMode": "contributions",
"contributorEmployer": "Goldman Sachs",
"contributorState": "NY",
"electionYear": 2024,
"maxResults": 1000
}

Look up presidential candidates:

{
"searchMode": "candidates",
"candidateName": "Trump",
"electionYear": 2024,
"maxResults": 50
}

All candidates in a state:

{
"searchMode": "candidates",
"contributorState": "CA",
"electionYear": 2024,
"maxResults": 500
}

Input tips

  • Use specific donor names for best results. The FEC API matches partial names, so "MUSK" will return all donors with that surname. Use "MUSK, ELON" for more precise results.
  • FEC names are uppercase. The FEC stores names in uppercase format (e.g., "BUFFETT, WARREN"). Your search is case-insensitive, but output will be uppercase.
  • Filter by employer to find corporate donor patterns. Search "GOOGLE" or "META" to see all contributions from employees of those companies.
  • Use minAmount to find large donors. Setting it to 10000 filters out small contributions and focuses on major donors.
  • Election years are always even numbers. Federal elections occur every 2 years. Use 2024 for the most recent presidential cycle, 2022 for midterms.
  • Get a free API key for production use. The DEMO_KEY works fine for testing but is rate-limited. Register at api.open.fec.gov for a free key with higher quotas.

Output examples

Contribution record (contributions mode)

{
"contributorName": "MUSK, ELON",
"contributorFirstName": "ELON",
"contributorLastName": "MUSK",
"amount": 50000000,
"aggregateYtd": 50000000,
"date": "2024-07-15",
"committeeName": "AMERICA PAC",
"committeeId": "C00873893",
"candidateName": null,
"candidateId": null,
"candidateOffice": null,
"candidateParty": null,
"contributorEmployer": "SPACEX",
"contributorOccupation": "CEO",
"contributorCity": "AUSTIN",
"contributorState": "TX",
"contributorZip": "78701",
"isIndividual": true,
"electionType": "GENERAL",
"reportYear": 2024,
"pdfUrl": "https://docquery.fec.gov/pdf/...",
"extractedAt": "2025-01-15T12:00:00.000Z"
}

Candidate record (candidates mode)

{
"candidateId": "P80001571",
"name": "TRUMP, DONALD J.",
"party": "REPUBLICAN PARTY",
"office": "President",
"state": "FL",
"district": "",
"incumbentChallenge": "Incumbent",
"isActive": true,
"electionYears": [2016, 2020, 2024],
"firstFileDate": "2015-06-16",
"hasRaisedFunds": true,
"federalFunds": false,
"extractedAt": "2025-01-15T12:00:00.000Z"
}

Contribution output fields

FieldTypeDescription
contributorNamestringFull donor name as filed (e.g., "MUSK, ELON")
contributorFirstNamestringDonor's first name
contributorLastNamestringDonor's last name
amountnumberContribution amount in US dollars
aggregateYtdnumberTotal amount the donor has given year-to-date to this committee
datestringDate of the contribution (YYYY-MM-DD)
committeeNamestringName of the receiving committee or PAC
committeeIdstringFEC committee ID (e.g., "C00873893")
candidateNamestring|nullAssociated candidate name, if linked (null for PAC/party donations)
candidateIdstring|nullFEC candidate ID, if linked
candidateOfficestring|nullOffice sought by the candidate (House, Senate, President)
candidatePartystring|nullCandidate's party affiliation
contributorEmployerstring|nullDonor's employer as reported
contributorOccupationstring|nullDonor's occupation as reported
contributorCitystring|nullDonor's city
contributorStatestring|nullDonor's state (2-letter code)
contributorZipstring|nullDonor's ZIP code
isIndividualbooleanWhether this is an individual (vs. organization) contribution
electionTypestring|nullElection type: GENERAL, PRIMARY, etc.
reportYearnumber|nullYear of the filing report
pdfUrlstring|nullDirect URL to the original PDF filing on FEC website
extractedAtstringISO 8601 timestamp of extraction

Candidate output fields

FieldTypeDescription
candidateIdstringFEC candidate ID (e.g., "P80001571")
namestringCandidate name as filed
partystringParty affiliation (e.g., "REPUBLICAN PARTY")
officestringOffice sought: House, Senate, or President (decoded from H/S/P codes)
statestringCandidate's state (2-letter code)
districtstringCongressional district (empty for Senate/President)
incumbentChallengestringIncumbent, Challenger, or Open seat (decoded from I/C/O codes)
isActivebooleanWhether the candidate is currently active
electionYearsnumber[]Array of election years the candidate has filed for
firstFileDatestring|nullDate of the candidate's first filing with FEC
hasRaisedFundsbooleanWhether the candidate has raised any funds
federalFundsbooleanWhether the candidate has received federal matching funds
extractedAtstringISO 8601 timestamp of extraction

Use cases

  • Journalism and investigative reporting -- Track which individuals and corporations are funding specific candidates, PACs, or super PACs. Follow the money trail across election cycles.
  • Political research and academia -- Build datasets of political contributions for analysis of donor demographics, giving patterns, geographic distribution, and partisan trends.
  • Compliance and due diligence -- Verify whether individuals or companies have made political contributions as part of KYC, anti-corruption, or lobbying disclosure requirements.
  • Nonprofit and advocacy -- Monitor campaign finance activity around specific issues, candidates, or legislative districts.
  • Competitive intelligence -- Understand which politicians and committees are receiving funding from companies in your industry.
  • Civic engagement tools -- Power apps and dashboards that help voters understand who funds their elected officials.

Programmatic access (API)

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/fec-campaign-finance").call(run_input={
"searchMode": "contributions",
"contributorEmployer": "Google",
"electionYear": 2024,
"minAmount": 5000,
"maxResults": 500,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"${item['amount']:,.0f} from {item['contributorName']} "
f"({item['contributorOccupation']}) -> {item['committeeName']}")

JavaScript:

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/fec-campaign-finance").call({
searchMode: "contributions",
contributorEmployer: "Google",
electionYear: 2024,
minAmount: 5000,
maxResults: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(`$${item.amount.toLocaleString()} from ${item.contributorName} -> ${item.committeeName}`);
}

cURL:

# Start a run
curl "https://api.apify.com/v2/acts/ryanclinton~fec-campaign-finance/runs" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"searchMode": "contributions",
"contributorEmployer": "Google",
"electionYear": 2024,
"minAmount": 5000,
"maxResults": 500
}'
# Fetch results (after run completes)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json" \
-H "Authorization: Bearer YOUR_API_TOKEN"

How it works -- technical details

Input (searchMode, filters, electionYear)
├── mode = "contributions" ├── mode = "candidates"
│ │
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ Schedule A Endpoint │ │ Candidates Endpoint │
│ /schedules/schedule_a/ │ │ /candidates/search/ │
│ │ │ │
│ Filters: │ │ Filters: │
│ • contributor_name │ │ • name │
│ • committee_name │ │ • state │
│ • contributor_employer │ │ • election_year │
│ • contributor_state │ │ │
│ • min_amount │ │ Sort: -receipts
│ • two_year_txn_period │ │ Pagination: page-based │
│ │ │ (page=1, page=2, ...)
│ Sort: -contribution_amt │ │ │
│ Pagination: cursor-based │ │ 100 per page, 500ms delay│
(last_index + last_amt) │ └─────────┬────────────────┘
│ │ │
100 per page, 500ms delay│ │
└─────────┬────────────────┘ │
│ │
▼ ▼
┌─────────────────────────────────────────────┐
│ Code Decoder │
│ • Office: H→House, S→Senate, P→President │
│ • Challenge: I→Incumbent, C→Challenger, │
│ O→Open seat │
│ • is_individual: boolean → isIndividual │
│ • candidate_inactive: false → isActive: true│
└──────────────────┬──────────────────────────┘
┌─────────────────────────────────────────────┐
│ Output & Summary │
│ • Each record → Apify dataset │
│ Contributions: │
│ • Total $ amount across all results │
│ • Count of unique committees │
│ Candidates: │
│ • Parties represented │
└─────────────────────────────────────────────┘

API endpoints

ModeFEC EndpointSortPagination
Contributions/v1/schedules/schedule_a/-contribution_receipt_amount (largest first)Cursor-based: last_index + last_contribution_receipt_amount
Candidates/v1/candidates/search/-receipts (most funded first)Page-based: page=1, page=2, etc.

Both endpoints use per_page=100 (API maximum) and a 500 ms delay between page requests to respect rate limits.

Cursor vs. page pagination

The FEC API uses cursor-based pagination for Schedule A contributions because this endpoint can return millions of records. Each response includes pagination.last_indexes with cursor values for the next page. The actor passes these as last_index and last_contribution_receipt_amount parameters on subsequent requests.

For candidates, the API uses standard page-based pagination with a page parameter and pagination.pages indicating total pages available.

Code maps

Raw codeDecoded valueField
HHouseoffice
SSenateoffice
PPresidentoffice
IIncumbentincumbentChallenge
CChallengerincumbentChallenge
OOpen seatincumbentChallenge

How much does it cost to use?

ScenarioResultsPagesTimeEst. cost
Quick search1001~10 sec~$0.005
Medium search5005~30 sec~$0.01
Large dataset5,00050~2 min~$0.02
Maximum extraction10,000100~3 min~$0.03

The FEC API is completely free. The actor runs on 256 MB of memory. Apify's free tier includes $5 of monthly platform usage.

Limitations

  1. 10,000 result maximum -- The actor caps at 10,000 results per run. For larger datasets, use date ranges or state filters to split across multiple runs.
  2. DEMO_KEY rate limit -- The default DEMO_KEY allows 1,000 API requests per hour. For high-volume use, register for a free FEC API key at api.open.fec.gov.
  3. Single-mode per run -- Each run operates in either contributions or candidates mode. To search both, run the actor twice with different modes.
  4. Filing lag -- FEC data depends on when campaigns file their reports. Quarterly and monthly filing deadlines produce data within days, but there can be gaps between filings.
  5. Uppercase names -- The FEC stores all names in uppercase. Output will always be uppercase (e.g., "MUSK, ELON" not "Musk, Elon").
  6. PAC contributions may lack candidate linkage -- Donations to PACs, party committees, and other organizations may not have an associated candidate. The candidateName and candidateId fields will be null.
  7. No aggregate analytics -- The actor returns individual records, not aggregated summaries. Use the output in spreadsheets or BI tools for summary analysis.
  8. Contributions only include Schedule A -- Only individual contributions (Schedule A) are searched. Other filing types (disbursements, independent expenditures, etc.) are not included.

Responsible use

  • Campaign finance data is public record under federal law. However, use this data responsibly and avoid harassment or intimidation of donors.
  • Follow the FEC API Terms of Service when using the data.
  • Do not use the DEMO_KEY for production workloads. Register for a free API key to avoid impacting other users.
  • When publishing donor data, provide appropriate context. Individual contributions do not necessarily reflect organizational positions.
  • Be aware that contribution data does not prove quid pro quo relationships between donors and candidates.

FAQ

Do I need an API key? No. The actor works out of the box using the FEC's free DEMO_KEY, which allows 1,000 API requests per hour. For heavier usage, register for a free key at api.open.fec.gov.

What election years are available? The FEC API has data going back to the 1980s. You can search any even-numbered year (e.g., 2020, 2022, 2024). The most comprehensive data is for recent cycles.

Can I search for PAC and super PAC contributions? Yes. Use the committee name filter to search for specific PACs, super PACs, or other political committees. Contributions to these entities are filed as Schedule A receipts.

Why are some candidate fields null in contribution records? Not all contributions are linked directly to a candidate. Donations to PACs, party committees, and other organizations may not have an associated candidate. The committee information is always present.

How fresh is the data? The FEC updates its data regularly as campaigns file their reports. Quarterly and monthly filing deadlines typically produce data within days. The actor always queries live FEC data.

What is the difference between this and the FEC website? This actor provides the same data as fec.gov but in a structured, machine-readable format. You can automate searches, export to CSV/Excel, integrate with other tools via API, and process results programmatically.

The output dataset can be exported in JSON, CSV, or Excel format, or accessed programmatically via the Apify API. Use webhooks to trigger automated workflows when a run completes.

Related ActorDescriptionUse with
Congress Bill SearchSearch US congressional legislationCross-reference donors with legislative activity
Congressional Stock Trade TrackerTrack stock trades by members of CongressAnalyze financial activity alongside campaign funding
SEC EDGAR Filing AnalyzerSearch SEC financial filingsLink corporate donors to public company filings
Federal Register SearchSearch federal rules and regulationsTrack regulatory activity alongside campaign funding
OFAC Sanctions SearchSearch US Treasury sanctions listCompliance screening of donors
SAM.gov Contract MonitorSearch federal contractsConnect campaign donors to government contracts

Connect with any Apify integration including Google Sheets, Zapier, Make (Integromat), Amazon S3, and custom API endpoints to build automated campaign finance monitoring workflows.