๐ FEC Independent Expenditures Scraper โ PAC Tracker
Pricing
from $8.00 / 1,000 expenditure records
๐ FEC Independent Expenditures Scraper โ PAC Tracker
Scrape FEC Schedule E independent expenditures by PACs and Super PACs supporting or opposing federal candidates. Get committee, candidate, amount, payee, date, election cycle, support/oppose flag. OpenSecrets alternative for campaign finance researchers, journalists, opposition research.
Pricing
from $8.00 / 1,000 expenditure records
Rating
0.0
(0)
Developer
Stephan Corbeil
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
FEC Independent Expenditures Scraper
Pull FEC Schedule E independent-expenditure filings โ every dollar a PAC, Super PAC, or non-profit spent supporting or opposing a federal candidate. Returns committee, candidate, payee, amount, support/oppose flag, dissemination date, election cycle, and category. Built for political journalists, opposition research firms, campaign finance watchdogs, and election lawyers โ the OpenSecrets-style workflows that need clean structured data without scraping fec.gov by hand.
Runs against the official OpenFEC REST API (api.open.fec.gov). Free with the shared DEMO_KEY for low-volume usage; supply your own free API key for unlimited throughput.
What you get
| Field | Type | Notes |
|---|---|---|
candidate_id | string | FEC ID (e.g. P00009423) |
candidate_name | string | Full candidate name |
candidate_office | string | H House / S Senate / P President |
candidate_office_state | string | 2-letter state |
candidate_office_district | string | District number |
candidate_party | string | DEM / REP / IND / etc. |
committee_id | string | Spending committee FEC ID |
committee_name | string | Spending committee name |
expenditure_amount | number | USD |
expenditure_date | string | ISO date |
expenditure_description | string | Plain-text purpose ("media buy", "phone banking", etc.) |
dissemination_date | string | When the ad / mailer actually ran |
support_oppose_indicator | string | S (support) or O (oppose) |
election_type | string | P primary / G general / R runoff |
category_code_full | string | Category description |
report_year / report_type | string | Filing year and report code |
payee_name | string | Vendor that received the money |
payee_city / payee_state / payee_zip | string | Vendor address |
memo_text | string | Free-text memo |
pdf_url | string | Direct link to the FEC-hosted PDF filing |
image_number / transaction_id / file_number / sub_id | string | Cross-reference IDs |
Use cases
- Opposition research โ pull every IE attacking a sitting incumbent in their primary, broken down by spender and vendor.
- Campaign finance journalism โ track Super PAC activity in a swing race week-over-week, surface late-cycle ad buys.
- Vendor intel โ see which media buyers, mail houses, and digital firms are getting the IE money.
- Compliance vetting โ corporate PAC officers verifying their committee's reported expenditures match what's published.
- Academic research โ bulk-pull a cycle of IEs into a notebook for political-science analysis.
- Real-time monitoring โ schedule the actor daily during the election window, alert on new spending against your client/candidate.
Quick start
Input JSON (search by candidate name):
{"candidate_name": "Trump","cycle": 2024,"min_date": "2024-09-01","max_date": "2024-11-05","support_oppose": "O","max_results": 100}
Sample output item:
{"candidate_id": "P80001571","candidate_name": "TRUMP, DONALD J.","candidate_office": "P","candidate_party": "REP","committee_id": "C00580100","committee_name": "FUTURE FORWARD USA ACTION","expenditure_amount": 4275000.0,"dissemination_date": "2024-10-22","support_oppose_indicator": "O","election_type": "G","expenditure_description": "MEDIA BUY","payee_name": "GMMB INC","payee_city": "WASHINGTON","payee_state": "DC","pdf_url": "https://docquery.fec.gov/pdf/.../12345.pdf"}
Python SDK example
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("nexgendata/fec-independent-expenditures-scraper").call(run_input={"candidate_name": "Harris","cycle": 2024,"support_oppose": "S","max_results": 250,"apiKey": "YOUR_OPENFEC_KEY",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"${item['expenditure_amount']:,.0f} {item['committee_name']} -> {item['payee_name']}")
cURL example
curl -X POST "https://api.apify.com/v2/acts/nexgendata~fec-independent-expenditures-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"committee_id":"C00580100","cycle":2024,"max_results":50}'
Integrations
- Zapier / Make.com / n8n โ feed new IEs into Slack / Airtable / Google Sheets the moment they appear in the FEC stream.
- Postgres / Snowflake / BigQuery โ sync the dataset via Apify webhooks into your political-data warehouse.
- Looker / Tableau / Metabase โ power campaign-finance dashboards directly off the dataset.
Pricing
Pay-per-event:
- Actor start: $0.00005 (one-time per run)
- Per expenditure record: $0.008
Cost calculator:
| Records | Approx. cost |
|---|---|
| 50 | $0.40 |
| 100 | $0.80 |
| 500 | $4.00 |
| 1,000 | $8.00 |
| 5,000 | $40.00 |
Premium pricing reflects the compliance / opposition-research value of clean campaign-finance data โ buyers in this niche routinely pay 4-figure subscriptions for OpenSecrets-style feeds.
FAQ
Q: Do I need an API key?
A: No โ the scraper falls back to OpenFEC's DEMO_KEY (shared, ~30 calls/hour). For real workloads sign up free at https://api.open.fec.gov/developers (instant, unlimited) and pass it via the apiKey input.
Q: How fresh is the data?
A: As fresh as FEC publishes. Schedule E filings appear within 24 hours of the underlying report being filed; for committees on monthly filing schedules the lag is days, for 24/48-hour notice filings (last 20 days before an election) the lag is hours.
Q: What's NOT included?
A: Schedule A (contributions), Schedule B (operating expenditures), Schedule F (party coordinated expenditures). This actor focuses on independent expenditures only. For other schedules see the related actors below.
Q: How does cursor pagination work?
A: The actor automatically follows OpenFEC's last_indexes cursor across pages, so a max_results=2000 run will sweep up to 2,000 sequential records without a page ceiling.
Q: Can I filter by state, district, race?
A: Yes โ pass the candidate_id corresponding to the candidate in that race, OR the committee_id of the spender. Resolve candidate IDs via the candidate_name field (auto-resolves up to 3 best matches).
Q: What about 501(c)(4) "dark money"?
A: 501(c)(4) groups are not required to file Schedule E unless they spend in the 60/30-day windows. This actor returns everything filed; what's not filed (genuinely dark money) is by definition not in the FEC database.
Related actors from nexgendata
- Government Contracts Search โ pair political spending with federal contract awards for influence-money analyses.
- H1B Visa Salary Search โ verify donor-employer / lobbyist claims against the H1B record.
- Court Records Search โ track campaign-finance enforcement cases through the federal court system.
About nexgendata
Built and maintained by nexgendata โ a portfolio of 160+ specialized scrapers and MCP servers covering compliance, civic data, lead gen, and developer tools. Need higher volume, custom output, or a private fork? Email steve_corbeil@hotmail.com.