๐Ÿ“Š FEC Independent Expenditures Scraper โ€” PAC Tracker avatar

๐Ÿ“Š FEC Independent Expenditures Scraper โ€” PAC Tracker

Pricing

from $8.00 / 1,000 expenditure records

Go to Apify Store
๐Ÿ“Š FEC Independent Expenditures Scraper โ€” PAC Tracker

๐Ÿ“Š 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

Stephan Corbeil

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

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

FieldTypeNotes
candidate_idstringFEC ID (e.g. P00009423)
candidate_namestringFull candidate name
candidate_officestringH House / S Senate / P President
candidate_office_statestring2-letter state
candidate_office_districtstringDistrict number
candidate_partystringDEM / REP / IND / etc.
committee_idstringSpending committee FEC ID
committee_namestringSpending committee name
expenditure_amountnumberUSD
expenditure_datestringISO date
expenditure_descriptionstringPlain-text purpose ("media buy", "phone banking", etc.)
dissemination_datestringWhen the ad / mailer actually ran
support_oppose_indicatorstringS (support) or O (oppose)
election_typestringP primary / G general / R runoff
category_code_fullstringCategory description
report_year / report_typestringFiling year and report code
payee_namestringVendor that received the money
payee_city / payee_state / payee_zipstringVendor address
memo_textstringFree-text memo
pdf_urlstringDirect link to the FEC-hosted PDF filing
image_number / transaction_id / file_number / sub_idstringCross-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 ApifyClient
client = 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:

RecordsApprox. 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.

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.