FEC Campaign Finance Scraper
Pricing
Pay per event
FEC Campaign Finance Scraper
Download official FEC campaign-finance bulk data for candidates, committees, contributions, and disbursements. Filter by cycle, IDs, state, and party.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Download searchable Federal Election Commission campaign-finance rows from public bulk data files.
The actor streams official FEC ZIP files, filters rows locally, and returns normalized JSON for candidates, committees, contributions, and disbursements. It does not require an OpenFEC API key.
What does FEC Campaign Finance Scraper do?
FEC Campaign Finance Scraper helps you collect campaign-finance data from official Federal Election Commission bulk downloads.
It can extract:
- ๐งโ๐ผ Candidate master records
- ๐๏ธ Committee master records
- ๐ต Individual contribution records
- ๐ Committee-to-candidate contribution records
- ๐งพ Operating disbursement records
Each output row includes normalized IDs, names, dates, amounts, source URL, row number, raw FEC fields, and scrapedAt.
Who is it for?
This scraper is useful for:
- ๐ณ๏ธ Political compliance teams monitoring committees and candidate filings
- ๐ฐ Journalists investigating federal campaign money flows
- ๐ Donor researchers looking for contribution patterns
- ๐ Campaign-intelligence vendors building recurring data pipelines
- ๐งช Civic data analysts who need reproducible FEC extracts
- ๐งพ Legal and audit teams checking finance records by cycle
Why use this actor?
The FEC provides excellent public bulk data, but it is packaged as large pipe-delimited ZIP files. This actor makes those files easier to use in automation:
- No browser automation
- No login
- No OpenFEC API key
- Bounded
maxItemsfor cost control - Filters for candidate IDs, committee IDs, states, and parties
- Normalized JSON output ready for export
Data sources
The actor downloads files from official FEC bulk-download URLs such as:
https://www.fec.gov/files/bulk-downloads/2024/cn24.ziphttps://www.fec.gov/files/bulk-downloads/2024/cm24.ziphttps://www.fec.gov/files/bulk-downloads/2024/indiv24.ziphttps://www.fec.gov/files/bulk-downloads/2024/pas224.ziphttps://www.fec.gov/files/bulk-downloads/2024/oppexp24.zip
Supported datasets
Input dataType | FEC file family | Typical use |
|---|---|---|
candidates | Candidate master | Candidate IDs, names, party, office, state |
committees | Committee master | Committee IDs, names, treasurer, connected org |
individual_contributions | Individual contributions | Donor names, employers, dates, amounts |
committee_contributions | Committee contributions | PAC/committee support to candidates |
disbursements | Operating expenditures | Payees, purposes, dates, amounts |
How much does it cost to extract FEC campaign finance data?
This actor uses pay-per-event pricing: a small start fee plus a per-row charge for each saved dataset item.
Use a small maxItems value for tests. Increase maxItems for production exports after confirming your filters.
Input options
| Field | Type | Description |
|---|---|---|
dataType | string | FEC dataset to download and parse |
cycle | integer | Even-numbered election cycle, for example 2024 |
maxItems | integer | Maximum matching rows to save |
candidateIds | string[] | Optional FEC candidate ID filters |
committeeIds | string[] | Optional FEC committee ID filters |
states | string[] | Optional two-letter state filters |
parties | string[] | Optional party filters such as DEM or REP |
Example input
{"dataType": "committees","cycle": 2024,"states": ["NY"],"maxItems": 100}
Output data
Each item can include the following fields:
| Field | Description |
|---|---|
dataType | Dataset selected in the input |
cycle | FEC election cycle year |
candidateId | FEC candidate ID when available |
candidateName | Candidate or recipient name when available |
committeeId | FEC committee ID when available |
committeeName | Committee name when available |
contributorName | Individual or entity contributor name |
recipientName | Recipient candidate name |
payeeName | Disbursement payee name |
transactionDate | Normalized transaction date |
amount | Contribution or disbursement amount |
state | State from the FEC row |
party | Party from master records |
office | Candidate office when available |
rowNumber | Row number in the bulk file |
sourceUrl | Official FEC ZIP URL |
scrapedAt | ISO timestamp for collection |
raw | Original parsed FEC columns |
Output example
{"dataType": "committees","cycle": 2024,"committeeId": "C00001743","committeeName": "LOCAL 1814 ILA POLITICAL ACTION AND EDUCATION FUND","state": "NY","sourceUrl": "https://www.fec.gov/files/bulk-downloads/2024/cm24.zip","scrapedAt": "2026-07-04T03:00:15.705Z","raw": { "committeeId": "C00001743" }}
How to run
- Choose a
dataType. - Choose an even-numbered
cycle. - Add filters if you know candidate IDs, committee IDs, states, or parties.
- Set
maxItems. - Run the actor and export the dataset as JSON, CSV, Excel, or via API.
Tips for better results
- Start with
committeesorcandidatesto find IDs. - Use
candidateIdsorcommitteeIdsbefore running large transaction exports. - Use
statesto reduce broad candidate, committee, and transaction pulls. - Keep
maxItemslow for exploratory work. - For historical analysis, run one cycle at a time.
Integrations
You can connect the scraper to:
- Google Sheets or Airtable for campaign monitoring dashboards
- BI tools for political spending analysis
- Databases for recurring compliance archives
- Alerting workflows that watch for new donor or committee patterns
- LLM research agents that summarize campaign-finance activity
API usage: Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/fec-campaign-finance-scraper').call({dataType: 'committees',cycle: 2024,states: ['NY'],maxItems: 100,});console.log(run.defaultDatasetId);
API usage: Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/fec-campaign-finance-scraper').call(run_input={'dataType': 'candidates','cycle': 2024,'states': ['CA'],'parties': ['DEM'],'maxItems': 100,})print(run['defaultDatasetId'])
API usage: cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~fec-campaign-finance-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"dataType":"committees","cycle":2024,"states":["NY"],"maxItems":100}'
MCP usage
Use this actor from Claude Desktop or Claude Code through Apify MCP:
https://mcp.apify.com/?tools=automation-lab/fec-campaign-finance-scraper
Add the MCP server in Claude Code:
$claude mcp add apify-fec-campaign-finance "https://mcp.apify.com/?tools=automation-lab/fec-campaign-finance-scraper"
Claude Desktop JSON configuration:
{"mcpServers": {"apify-fec-campaign-finance": {"url": "https://mcp.apify.com/?tools=automation-lab/fec-campaign-finance-scraper"}}}
Example prompts:
- "Run the FEC campaign finance scraper for 2024 NY committees and summarize labor PACs."
- "Extract 2024 candidate master rows for California Democrats."
- "Pull committee contribution rows for a candidate ID and prepare a CSV."
Legality
This actor collects public government data published by the Federal Election Commission. Users are responsible for complying with Apify terms, FEC data-use expectations, and any rules that apply to their analysis, publication, or compliance workflow.
FAQ
Do I need an OpenFEC API key?
No. The actor uses public FEC bulk downloads, not authenticated OpenFEC API endpoints.
Troubleshooting
Why did I get fewer rows than maxItems?
Your filters may be narrow for that cycle and dataset. Remove filters or try a different data type.
Why are some fields empty?
FEC bulk files have different columns per dataset. The actor keeps unavailable fields empty and preserves parsed original values in raw.
Related scrapers
Explore other automation-lab actors for government, compliance, and public-data workflows:
- https://apify.com/automation-lab/fec-electronic-filing-parser
- https://apify.com/automation-lab/website-contact-finder
- https://apify.com/automation-lab/company-email-finder
Changelog
- Initial version: HTTP-only FEC bulk-data streamer with filters and normalized output.
Notes
For very broad transaction pulls, FEC files can be large. The actor streams ZIP contents and stops at maxItems, but targeted filters are still recommended for faster runs.