|
| 1 | +# OpenFEC (Independent Publisher) |
| 2 | + |
| 3 | +## Publisher: Dan Romano |
| 4 | + |
| 5 | +## Prerequisites |
| 6 | + |
| 7 | +- A valid **FEC API Key** (you can use `DEMO_KEY` for testing, but expect rate limits). |
| 8 | + |
| 9 | +## Obtaining Credentials |
| 10 | + |
| 11 | +- Obtain an API key(https://api.open.fec.gov/developers/) from FEC.gov |
| 12 | + |
| 13 | + |
| 14 | +## Supported Operations |
| 15 | + |
| 16 | +Some of the important endpoint categories in this connector include: |
| 17 | + |
| 18 | +|operationType | operationName | operationDescription | |
| 19 | +|---|---| |
| 20 | +|GET | `/calendar-dates/` | Get FEC calendar events | |
| 21 | +|GET | `/calendar-dates/export/` | Download FEC Calendar Dates (CSV or ICS) | |
| 22 | +|GET | `/candidate/{candidate_id}/committees/history/` | Committee History by Candidate | |
| 23 | +|GET | `/candidate/{candidate_id}/committees/history/{cycle}/` | Committee History for a Specific Cycle | |
| 24 | +|GET | `/candidate/{candidate_id}/committees/` | Get Committees for a Candidate | |
| 25 | +|GET | `/candidate/{candidate_id}/history/` | Get Candidate Details (History) | |
| 26 | +|GET | `/candidate/{candidate_id}/history/{cycle}/` | Get Candidate Details per Election Cycle | |
| 27 | +|GET | `/candidate/{candidate_id}/` | Get Candidate Details (Current) | |
| 28 | +|GET | `/candidate/{candidate_id}/filings/` | Get Candidate Filings | |
| 29 | +|GET | `/candidate/{candidate_id}/totals/` | Get Candidate Totals by Cycle | |
| 30 | +|GET | `/candidates/totals/by_office Get Agg. Receipts/Disbursements by Office and Cycle | |
| 31 | +|GET | `/candidates/totals/by_office/by_party/` | Get Agg. Receipts/Disbursements by Office and Party per Election Cycle | |
| 32 | +|GET | `/candidates/totals/` | Get Agg. Receipts and Disbursements by Cycle | |
| 33 | +|GET | `/candidates/` | Get Candidates Basic Info | |
| 34 | +|GET | `/candidates/search/` | Search Candidates | |
| 35 | +|GET | `/committee/{committee_id}/candidates/history/` | Get Candidate History by Committee | |
| 36 | +|GET | `/committee/{committee_id}/candidates/history/{cycle}/` | Get Candidate History by Election Cycle | |
| 37 | +|GET | `/committee/{committee_id}/candidates/` | Get Candidate by Committee (Current) | |
| 38 | +|GET | `/committee/{committee_id}/history/` | Get Candidate by Committee (History) | |
| 39 | +|GET | `/committee/{committee_id}/history/{cycle}/` | Get Candidate Committee History by Cycle | |
| 40 | +|GET | `/committee/{committee_id}/` | /committee/:committee_id/ | |
| 41 | +|GET | `/committee/{committee_id}/communication_costs/by_candidate/` | Get Communication Costs by Committee by Candidate | |
| 42 | +|GET | `/committee/{committee_id}/electioneering/by_candidate/` | Get Electioneering by Committee by Candidate | |
| 43 | +|GET | `/committee/{committee_id}/filings/` | Get Filings for a Specific Committee | |
| 44 | +|GET | `/committee/{committee_id}/reports/` | Get Financial Reports for a Committee | |
| 45 | +|GET | `/committee/{committee_id}/totals/` | Get Committee Financial Totals | |
| 46 | +|GET | `/communication_costs/aggregates/` | Get Communication Cost Aggregates | |
| 47 | +|GET | `/communication_costs/by_candidate/` | Get Communication Costs by Candidate | |
| 48 | +|GET | `/communication_costs/totals/by_candidate/` | Get Communication Cost Totals by Candidate | |
| 49 | +|GET | `/efile/reports/house-senate/` | Get Electronic F3/F3X/F3P Summary Filings for House and Senate | |
| 50 | +|GET | `/efile/reports/pac-party/` | Get Electronic F3X Summary Filings for PACs and Party Committees | |
| 51 | +|GET | `/efile/reports/presidential/` | Get Presidential Committee Electronic Filings (F3P Reports) | |
| 52 | +|GET | `/efile/filings/` | Retrieve eFiled Filings | |
| 53 | +|GET | `/electioneering Get Electioneering Communications | |
| 54 | +|GET | `/electioneering/aggregates/` | Get Electioneering Communications Cost Aggregates | |
| 55 | +|GET | `/electioneering/by_candidate/` | Get Electioneering Costs Agg. by Candidate | |
| 56 | +|GET | `/electioneering/totals/by_candidate/` | Get Total Electioneering Communications by Candidate and Cycle | |
| 57 | +|GET | `/elections/` | Get Election-level Financial Summary for All Candidates in a Race | |
| 58 | +|GET | `/elections/search/` | Search Elections by Location and Cycle | |
| 59 | +|GET | `/elections/summary/` | Summary of Financials for a Specific Election | |
| 60 | +|GET | `/names/audit_candidates/` | Search Candidates and Committees by Name | |
| 61 | +|GET | `/names/audit_committees/` | Search Audited Committees by Name | |
| 62 | +|GET | `/names/candidates/` | Search Candidates by Name | |
| 63 | +|GET | `/names/committees/` | Search Committees by Name | |
| 64 | +|GET | `/presidential/contributions/by_candidate/` | Get Presidential Contributions by Candidate | |
| 65 | +|GET | `/presidential/contributions/by_size/` | Get Presidential Contributions by Size | |
| 66 | +|GET | `/presidential/contributions/by_state/` | Get Presidential Contributions by State | |
| 67 | +|GET | `/presidential/coverage_end_date/` | Get Presidential Coverage End Date | |
| 68 | +|GET | `/presidential/financial_summary/` | Get Presidential Financial Summary by Candidate | |
| 69 | +|GET | `/schedules/schedule_a/by_size/` | Get Schedule A Contributions by Size | |
| 70 | +|GET | `/schedules/schedule_a/by_size/by_candidate/` | Get Schedule A Contributions by Size by Candidate | |
| 71 | +|GET | `/schedules/schedule_a/by_state/by_candidate/` | Get Schedule A Contributions by State by Candidate | |
| 72 | +|GET | `/schedules/schedule_a/by_state/by_candidate/totals/` | Get Schedule A Contributions Totals by Size by Candidate | |
| 73 | +|GET | `/schedules/schedule_a/by_state/Get Schedule A Contributions by State | |
| 74 | +|GET | `/schedules/schedule_a/by_state/totals/` | Get Schedule A Contribution Totals by State | |
| 75 | +|GET | `/schedules/schedule_a/` | Get Schedule A Itemized Receipts | |
| 76 | +|GET | `/schedules/schedule_a/by_employer/` | Get Aggregated Contributions by Employer | |
| 77 | +|GET | `/schedules/schedule_a/by_occupation/` | Get Aggregated Contributions by Occupation | |
| 78 | +|GET | `/schedules/schedule_a/by_zip/` | Get Aggregated Contributions by ZIP Code | |
| 79 | +|GET | `/schedules/schedule_a/efile/` | Get eFiled Schedule A Contributions | |
| 80 | +|GET | `/schedules/schedule_a/{sub_id}/` | Get a Single Schedule A Transaction by Sub ID | |
| 81 | +|GET | `/schedules/schedule_b/` | Get Schedule B Disbursements | |
| 82 | +|GET | `/schedules/schedule_b/by_purpose/Get Schedule B Disbursements By Purpose | |
| 83 | +|GET | `/schedules/schedule_b/by_recipient/` | Get Schedule B Disbursements By Recipient | |
| 84 | +|GET | `/schedules/schedule_b/by_recipient_id/` | Get Schedule B Disbursements By Recipient Id | |
| 85 | +|GET | `/schedules/schedule_b/efile/` | Get Schedule eFiled Disbursements | |
| 86 | +|GET | `/schedules/schedule_b/{sub_id}/` | Get Schedule B By SubId | |
| 87 | +|GET | `/schedules/schedule_c/` | Get Schedule C Loans | |
| 88 | +|GET | `/schedules/schedule_c/{sub_id}/` | Get Schedule C By Sub Id | |
| 89 | +|GET | `/schedules/schedule_d/` | Get Schedule D | |
| 90 | +|GET | `/schedules/schedule_d/{sub_id}/` | Get Schedule D Records By Sub Id | |
| 91 | +|GET | `/schedules/schedule_e/` | Get Schedule E | |
| 92 | +|GET | `/schedules/schedule_e/by_candidate/` | Get Schedule E Totals By Candidate | |
| 93 | +|GET | `/schedules/schedule_e/efile/` | Get Schedule E eFile | |
| 94 | +|GET | `/schedules/schedule_e/totals/by_candidate/` | Get Schedule E Totals by Candidate | |
| 95 | +|GET | `/schedules/schedule_f/` | Get Schedule F Party Expenditures | |
| 96 | +|GET | `/schedules/schedule_f/{sub_id}/` | Get Schedule F By Id | |
| 97 | +|GET | `/totals/by_entity/` | Get Cumulative Receipt Totals by Entity Type over a two-year cycle | |
| 98 | +|GET | `/totals/{committee_type}/` | Get Totals by Committee Type | |
| 99 | +|GET | `/audit-case/` | Get Audit Case Records | |
| 100 | +|GET | `/audit-category/` | Get Audit Categories and Sub-Categories | |
| 101 | +|GET | `/committees/` | Search for Committees | |
| 102 | +|GET | `/communication_costs/` | Retrieve Communication Costs | |
| 103 | +|GET | `/election-dates/` | Retrieve Election Dates | |
| 104 | +|GET | `/filings/` | Get All FEC Filings | |
| 105 | +|GET | `/operations-log/` | Get FEC Data Log | |
| 106 | +|GET | `/rad-analyst/` | Retrieve RAD Analysts Assigned to Committees | |
| 107 | +|GET | `/reporting-dates/` | Retrieve Audit Reporting Dates | |
| 108 | +|GET | `/state-election-office/` | Retrieve State and Local Election Office Details | |
| 109 | + |
| 110 | + |
| 111 | +## Known Limitations |
| 112 | + |
| 113 | +- The “efile” endpoints are raw and may omit categories or standardized fields present in processed data. |
| 114 | +- Rate limiting could apply when using `DEMO_KEY` or during peak usage. |
| 115 | +- Some fields may be `null` or missing if not reported (e.g., occupation, employer, ZIP). |
| 116 | + |
| 117 | +## Frequently Asked Questions |
| 118 | + |
| 119 | +- **Default Values**: Many operations have defaults set for parameters like `cycle`, `page`, `per_page`, `sort`, etc., to mimic real FEC data flows. |
| 120 | +- **Pagination**: |
| 121 | + - For large data sets, use *keyset pagination* rather than naive page numbers wherever indicated (e.g. `last_index`, `last_contribution_receipt_date`) to avoid missing or duplicating records. |
| 122 | + - For “efile” endpoints: only the most recent ~4 months of data are available and data is raw/unprocessed. |
| 123 | +- **Nulls and Sorting**: There are parameters like `sort_hide_null`, `sort_nulls_last`, `sort_null_only` to manage how null values are treated in sorted results. Use them thoughtfully. |
| 124 | +- **Limits**: Be mindful of data volume—filters like `committee_id`, `cycle`, `state`, etc., can dramatically reduce the response size. Per‑request size is limited (e.g., via `per_page`). |
0 commit comments