FEC Electronic Filing Parser
Pricing
Pay per event
FEC Electronic Filing Parser
Parse public FEC electronic filing CSVs into filing summaries and schedule-level JSON rows for campaign-finance research.
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
Turn public FEC electronic filing CSVs into clean JSON rows for campaign-finance research, compliance monitoring, journalism, and political-data pipelines.
The actor uses the official OpenFEC filings API to find filing metadata, downloads each filing's public csv_url, parses the raw electronic filing rows, and emits filing summaries plus schedule-level records in an Apify dataset.
What does FEC Electronic Filing Parser do?
FEC Electronic Filing Parser converts Federal Election Commission electronic filing assets into structured dataset items.
It can:
- 🔎 Find filings from OpenFEC by committee, form type, report year, and receipt-date range.
- 🎯 Parse exact filings when you already know the FEC filing ID.
- 📄 Download the official FEC CSV filing asset linked by OpenFEC.
- 🧾 Emit one filing summary item per filing.
- 📊 Emit one parsed schedule-row item per raw CSV row.
- 🧱 Preserve every raw column as stable
col001,col002, and so on. - 🏷️ Add friendly labels for common row types such as
HDR,F3,F3X,F24,SA11AI, andSB17.
Who is it for?
This actor is useful for teams that repeatedly inspect campaign-finance filing data.
- 📰 Investigative journalists tracking new committee filings.
- 🗳️ Political data teams building campaign-finance databases.
- ⚖️ Compliance analysts checking committee reports.
- 🧑💻 Civic-tech developers who need FEC CSV rows as API-ready JSON.
- 📈 Researchers comparing filings over time.
- 🏛️ Public-affairs teams monitoring PAC and campaign activity.
Why use this actor?
FEC filing pages are not always convenient for automation. Some document-rendering HTML pages may block automated requests, but OpenFEC metadata and CSV filing assets are public and machine-readable.
This actor focuses on the reliable path:
- OpenFEC API for search and metadata.
- FEC CSV assets for source rows.
- Apify datasets for export, scheduling, integrations, and API access.
Data source
The actor uses public Federal Election Commission data.
Primary source:
- OpenFEC filings API:
https://api.open.fec.gov/v1/filings/ - CSV filing assets exposed in each filing's
csv_url
The actor does not require a browser, cookies, login, or private credentials.
What data can you extract?
Each output item includes filing context such as:
| Field | Description |
|---|---|
itemType | filing_summary or schedule_row |
fecFileId | OpenFEC file id such as FEC-870444 |
numericFilingId | Numeric filing id such as 870444 |
committeeId | FEC committee id |
committeeName | Committee name from OpenFEC |
formType | Form type such as F3 or F3X |
reportYear | Filing report year |
documentDescription | OpenFEC filing description |
rowType | CSV row type such as SA11AI or SB17 |
columns | Flattened object containing all parsed row columns |
normalized | Selected friendly fields when row labels are known |
csvUrl | Official FEC CSV file URL |
pdfUrl | Official PDF URL when OpenFEC provides one |
How much does it cost to parse FEC filings?
This actor uses pay-per-event pricing.
- A small start event is charged once per run.
- Each filing summary or parsed schedule row is charged as one item.
The first-run defaults are intentionally small: one known filing, up to three filings, and up to 100 dataset items. Increase maxItems and provide your own OpenFEC API key for production workloads.
Input options
Filing IDs
Use filingIds when you already know exact filing identifiers.
Example:
{"filingIds": ["870444"],"maxItems": 100}
Committee search
Use committeeIds, formTypes, and reportYear to discover filings from OpenFEC.
{"committeeIds": ["C00465880"],"formTypes": ["F3"],"reportYear": 2013,"maxFilings": 3,"maxItems": 100}
Date filters
Use minDate and maxDate with YYYY-MM-DD values when you only want filings from a specific receipt-date window.
Output format
The actor writes all results to the default Apify dataset.
Two item types are emitted:
filing_summary— one metadata record per filing.schedule_row— one parsed row from the filing CSV.
This lets you export a single CSV or JSON dataset while still filtering by itemType downstream.
Example output
{"itemType": "schedule_row","fecFileId": "FEC-870444","committeeId": "C00465880","committeeName": "FRIENDS OF SCOTT ROBINSON","formType": "F3","reportYear": 2013,"rowType": "SB17","rowNumber": 4,"rowColumnCount": 25,"columns": {"row_type": "SB17","committee_id": "C00465880","payee_name": "NGP SOFTWARE"},"source": "fec-csv"}
How to parse one FEC filing
- Open the actor on Apify.
- Paste one or more FEC filing IDs into
filingIds. - Keep
maxItemslow for the first run. - Start the actor.
- Export the dataset as JSON, CSV, Excel, or via API.
How to monitor a committee
- Add one or more committee IDs.
- Add the form types you care about, for example
F3,F3X, orF24. - Set a report year or date range.
- Schedule the actor daily, weekly, or monthly.
- Send new dataset rows to your warehouse, spreadsheet, or alerting tool.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/fec-electronic-filing-parser').call({filingIds: ['870444'],maxItems: 100,});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('MY_APIFY_TOKEN')run = client.actor('automation-lab/fec-electronic-filing-parser').call(run_input={'filingIds': ['870444'],'maxItems': 100,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~fec-electronic-filing-parser/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"filingIds":["870444"],"maxItems":100}'
MCP integration
Use the Apify MCP server to call this actor from Claude Desktop, Claude Code, or other MCP-compatible tools.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/fec-electronic-filing-parser
Claude Code setup:
$claude mcp add apify-fec-parser --transport http https://mcp.apify.com/?tools=automation-lab/fec-electronic-filing-parser
Claude Desktop setup: open Settings → Developer → Edit Config, add the JSON below, save it, and restart Claude Desktop so the Apify MCP server is available.
Cursor setup: open Settings → MCP → Add new global MCP server, use transport HTTP, and paste the MCP URL above.
VS Code setup: install an MCP-compatible extension, add a new HTTP MCP server, and use the MCP URL above for the server endpoint.
Claude Desktop JSON config:
{"mcpServers": {"apify-fec-parser": {"url": "https://mcp.apify.com/?tools=automation-lab/fec-electronic-filing-parser"}}}
Example prompts:
- "Parse FEC filing 870444 and summarize the schedule row types."
- "Fetch recent F3 filings for committee C00465880 and export the parsed rows."
- "Compare raw row counts across the latest filings for this committee."
Tips for reliable runs
- Provide your own OpenFEC API key for larger runs.
- Use exact filing IDs when reproducibility matters.
- Keep
maxItemshigh enough for filings with many schedule rows. - Enable
includeRawRowsonly when you need exact source arrays. - Treat
columnsas the full source-preserving representation. - Treat
normalizedas a convenience layer that may expand over time.
Limitations
FEC electronic filing CSV layouts vary by form and schedule. This actor preserves every source column even when a row type is not yet fully labeled.
The actor does not scrape blocked HTML rendering pages. It uses OpenFEC metadata and official CSV assets instead.
The default DEMO_KEY is suitable for small smoke tests, not heavy production use.
Legality
FEC filings are public government records. You are responsible for using exported data in compliance with applicable laws, FEC rules, Apify terms, and your organization's policies.
Do not use the actor to misrepresent official filings. Keep links to the original FEC CSV, PDF, or filing page when publishing analysis.
Integrations
Common workflows include:
- Send parsed rows to Google Sheets for analyst review.
- Load schedule rows into BigQuery, Snowflake, or PostgreSQL.
- Trigger Slack alerts when a committee files a new report.
- Join parsed FEC rows with committee, candidate, or election-cycle reference tables.
- Archive raw filing rows for audit evidence.
Related Apify actors
You may also need other Automation Lab actors for adjacent workflows:
- SEC filing and company-data actors for public-market research.
- Government contract and tender scrapers for public-sector intelligence.
- Website contact and lead enrichment actors for outreach workflows.
FAQ
Why did my run return no filings?
Check that the committee ID, form type, report year, and date filters exist in OpenFEC. Try one exact filingIds value first to verify the parser path.
Why did OpenFEC return a rate-limit error?
The actor defaults to OpenFEC DEMO_KEY. For repeated or large runs, create a free OpenFEC API key and add it to the apiKey input.
Why are some row fields named col001?
FEC row layouts vary. The actor keeps all values under stable column keys and labels common row types where safe.
Changelog
Initial version:
- OpenFEC filings search.
- Exact filing ID parsing.
- CSV row parser.
- Filing summaries and schedule-row dataset items.
- Optional raw row arrays.
Support
If you need a specific FEC schedule normalized into named fields, open an issue with sample filing IDs and the row types you want mapped.
Summary
FEC Electronic Filing Parser gives analysts a repeatable way to convert public FEC electronic filings into structured Apify datasets without browser automation or fragile HTML scraping.