FEC Campaign Finance Contributions Scraper
parseforge/fec-campaign-finance-contributions-scraper
Developer toolsAutomationOther
Scrapes FEC campaign finance contributions by contributor, committee, location, employer, occupation, date, or amount. Returns each contribution as a flat row with donor, committee, amount, and date fields.
- Total users
- 8
- Monthly active
- 0
- Total runs
- 255
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
FEC Campaign Finance Contributions Scraper
Scrape FEC campaign finance contributions by contributor, committee, location, employer, or date, up to a million per run. Every contribution comes with its amount, date, donor details, and committee ID. No login or API key required beyond a free FEC key. Export to CSV, JSON, Excel, or XML.
The FEC's official API needs a key, pagination handling, and rate-limit management. This reads the public contribution records directly, filtered by contributor name, committee, location, employer, occupation, date, or amount, and returns each match in one fixed schema.
| Who uses it | What they scrape FEC for |
|---|---|
| Journalists | Investigating who funds a particular candidate or committee |
| Political researchers | Mapping donor networks across states and industries |
| Nonprofits and watchdogs | Tracking contributions that exceed legal limits or come from prohibited sources |
| Campaign strategists | Analyzing opponent donor bases to find persuasion targets |
| Academic researchers | Building datasets for studies on money in politics |
What it does
This Actor collects FEC campaign finance contributions by contributor, committee, location, employment, date, or amount, and returns each one as a flat row.
- π Contributor search: filter by name, city, state, ZIP, employer, or occupation, with partial matches supported.
- ποΈ Committee search: pull all contributions to a specific FEC committee ID.
- π Date and amount filters: narrow by receipt date range, minimum or maximum contribution amount, or two-year election cycle.
- π Flat output: every contribution is one row with donor, committee, amount, and date fields, ready for analysis.
- π Free API key: use the demo key for testing or get your own free key from FEC for higher limits.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with FEC data
π° Investigate a candidate's donors.
A journalist enters a committee ID and a date range to get every contribution over $200, then cross-references employer names to find industry patterns.
πΊοΈ Map donor geography.
A political researcher filters by state and ZIP code to see which neighborhoods give the most to a particular campaign.
π’ Track corporate influence.
A watchdog group searches by employer name to identify all contributions from employees of a specific company.
π Build an academic dataset.
A graduate student pulls all contributions for a two-year election cycle and exports to CSV for regression analysis.
π― Find persuasion targets.
A campaign strategist scrapes donors to an opponent's committee and filters by amount to identify high-value potential supporters.
Why choose this scraper
| What you get | |
|---|---|
| No FEC API coding | The Actor handles pagination, rate limits, and retries for you |
| One flat schema | Every contribution is a single row with consistent fields, no nested JSON |
| Up to a million rows | Paid users can scrape up to 1,000,000 contributions per run |
| Export anywhere | CSV, JSON, Excel, or XML, ready for spreadsheets, databases, or BI tools |
How it compares
No other Store actor targets FEC the same way, so the honest comparison is with the alternatives teams actually weigh.
| FEC Campaign Finance Contributions Scraper | Build it in-house | By hand | |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When FEC changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |
Configure the run
Drive the Actor from contributor name, committee ID, location, employer, occupation, date range, amount range, or election cycle, alone or together, and filters run as each contribution is read so only matches reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"apiKey": "DEMO_KEY",
"maxItems": 10,
"contributorName": "Smith"
}
A larger pull:
{
"apiKey": "DEMO_KEY",
"maxItems": 200,
"contributorName": "Smith"
}
Pricing
Pay-per-result: $0.0075 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $0.75 |
| 1,000 results | $7.50 |
| 10,000 results | $75.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the FEC Campaign Finance Contributions Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to FEC through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/fec-campaign-finance-contributions-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that you have entered at least one search parameter, such as contributor name or committee ID. Also verify that your filters are not too restrictive. Try removing some filters or broadening your search terms.
Why am I getting an authentication error?
Make sure your API key is correct. If you are using DEMO_KEY, note that it has limited functionality and may be rate-limited. Get a free key from https://api.open.fec.gov/developers/ for better performance.
Why is my run limited to 100 items?
Free users are limited to 100 contributions per run. To scrape more, upgrade to a paid plan and set maxItems to a higher value or leave it empty for unlimited.
Why are some contributions missing?
The FEC API may not return all contributions if they are very recent or if the data has not been fully processed. Try adjusting your date range or waiting a few days and running again.
How do I export to Excel?
When you run the Actor, select 'Excel' as the output format. The Actor will generate an .xlsx file that you can download from the run's output tab.
FAQ
| Question | Answer |
|---|---|
| Do I need an FEC API key? | Yes, the Actor requires an FEC OpenFEC API key. You can use the demo key DEMO_KEY for limited testing, but for production use you should get a free key from https://api.open.fec.gov/developers/. |
| What is the maximum number of contributions I can scrape? | Free users are limited to 100 contributions per run. Paid users can scrape up to 1,000,000 contributions per run, or leave the max items field empty for unlimited scraping. |
| Can I search by contributor name? | Yes, the contributorName field supports partial matches. For example, entering 'Smith' will return all contributors whose name contains 'Smith'. |
| How do I find a committee ID? | You can browse committees at https://www.fec.gov/data/browse-data/?tab=committees. The committee ID is a code like C00034157. |
| Can I filter by date? | Yes, use minDate and maxDate in YYYY-MM-DD format to filter by receipt date range. You can also filter by two-year transaction period, such as 2024 for the 2023-2024 cycle. |
| Can I filter by contribution amount? | Yes, use minAmount and maxAmount to filter by contribution amount in USD. Both are optional and can be used together. |
| What output formats are supported? | The Actor can export data to CSV, JSON, Excel, or XML. You choose the format when you run the Actor. |
| Does the Actor handle pagination automatically? | Yes, the Actor automatically handles pagination and rate limits, so you don't need to write any code. |
| Can I search by employer or occupation? | Yes, the contributorEmployer and contributorOccupation fields support partial matches. For example, entering 'Google' will return all contributions from Google employees. |
| Is there a limit on how many filters I can combine? | No, you can combine any number of filters. The Actor will apply all of them to narrow down the results. |
Related actors
Browse the full ParseForge collection for more scrapers.
π Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
β οΈ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Federal Election Commission. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| apiKey | string | FEC OpenFEC API key. Get a free API key from https://api.open.fec.gov/developers/. Demo key: DEMO_KEY (limited functionality). | DEMO_KEY |
| maxItems | integer | Maximum number of contributions to scrape. Free users: Required, maximum 100 (auto-limited). Paid users: Optional, maximum 1,000,000. Leave empty for unlimited (paid users only). | 10 |
| contributorName | string | Filter contributions by contributor name (partial match supported). | Smith |
| committeeId | string | FEC committee ID (e.g., C00034157). Find committee IDs at https://www.fec.gov/data/browse-data/?tab=committees. | not set |
| contributorCity | string | Filter contributions by contributor city. | not set |
| contributorState | string | Filter contributions by contributor state (2-letter state code, e.g., CA, NY). | not set |
| contributorZip | string | Filter contributions by contributor ZIP code. | not set |
| contributorEmployer | string | Filter contributions by contributor employer (partial match supported). | not set |
| contributorOccupation | string | Filter contributions by contributor occupation (partial match supported). | not set |
| minDate | string | Filter contributions by minimum receipt date (YYYY-MM-DD format). | not set |
| maxDate | string | Filter contributions by maximum receipt date (YYYY-MM-DD format). | not set |
| minAmount | number | Filter contributions by minimum amount in USD. | not set |
| maxAmount | number | Filter contributions by maximum amount in USD. | not set |
| twoYearTransactionPeriod | integer | Filter contributions by two-year transaction period (e.g., 2024 for 2023-2024 cycle). | not set |
Pricing
from $1.80 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). | $0.005 to $0.0075 |
| result | Single result in the default dataset. | $0.0018 to $0.0027 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~fec-campaign-finance-contributions-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
Related scrapers
Run FEC Campaign Finance Contributions Scraper on Apify All scrapers
