Explore U.S. campaign finance data from the Federal Election Commission: candidates, committees, filings, and spending.
Bring your own key. This API needs your own OpenFEC key - get one from the provider, add it once below, and the proxy injects it on every call. Your OmniStream plan covers the unified SDK, key storage, and proxy - the provider's own rate limits still apply to your key.
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("openfec/getaudit_case");One install, one key - the same client calls every API on the marketplace.
Primary/foreign key for audit tables
Filter records to only those that are applicable to a given two-year period. This cycle follows the traditional House election cycle and subdivides the presidential and Senate elections into comparable two-year blocks. The cycle begins with an odd year and is named for its ending, even year.
The finding id of an audit. Finding are a category of broader issues. Each category has an unique ID.
Toggle that sorts null values last
Hide null values on sorted column(s).
Filter records to only those that are applicable to a given two-year period. This cycle follows the traditional House election cycle and subdivides the presidential and Senate elections into comparable two-year blocks. The cycle begins with an odd year and is named for its ending, even year.
The audit issue. Each subcategory has an unique ID
The name of the committee. If a committee changes its name, the most recent name will be shown. Committee names are not unique. Use committee_id for looking up records.
The number of results returned per page. Defaults to 20.
Filter records to only those that are applicable to a given two-year period. This cycle follows the traditional House election cycle and subdivides the presidential and Senate elections into comparable two-year blocks. The cycle begins with an odd year and is named for its ending, even year.
A unique identifier assigned to each candidate registered with the FEC. If a person runs for several offices, that person will have separate candidate IDs for each office.
The one-letter type code of the organization: - C communication cost - D delegate - E electioneering communication - H House - I independent expenditure filer (not a committee) - N PAC - nonqualified - O independent expenditure-only (super PACs) - P presidential - Q PAC - qualified - S Senate - U single candidate independent expenditure - V PAC with non-contribution account, nonqualified - W PAC with non-contribution account, qualified - X party, nonqualified - Y party, qualified - Z national party non-federal account
Name of candidate running for office
For paginating through results, starting at page 1
A unique identifier assigned to each committee or filer registered with the FEC. In general committee id's begin with the letter C which is followed by eight digits.
API key for https://api.data.gov. Get one at https://api.data.gov/signup.
Type of committee: - H or S - Congressional - P - Presidential - X or Y or Z - Party - N or Q - PAC - I - Independent expenditure - O - Super PAC
Audit category ID (table PK)
Toggle that filters out all rows having sort column that is non-null
Provide a field to sort by. Use `-` for descending order. ex: `-case_no`
This endpoint contains Final Audit Reports approved by the Commission since inception. The search can be based on information about the audited committee (Name, FEC ID Number, Type, Election Cycle) or the issues covered in the report.
This lists the options for the categories and subcategories available in the /audit-search/ endpoint.
/**
* OpenFEC - generated by OmniStream from OpenFEC's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/openfec";
export class OpenFECError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `OpenFEC error ${status}`);
this.name = "OpenFECError";
this.status = status;
this.code = code;
}
}
export interface OpenFECOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class OpenFEC {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: OpenFECOptions = {}) {
if (!token) throw new Error("OpenFEC: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new OpenFECError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/**
This endpoint contains Final Audit Reports approved by the Commission since inception.
The search can be based on information about the audited committee (Name, FEC ID Number, Type,
Election Cycle) or the issues covered in the report.
*/
getauditCase(params: { "api_key": string; "audit_case_id"?: unknown[]; "cycle"?: unknown[]; "sub_category_id"?: string; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "min_election_cycle"?: number; "audit_id"?: unknown[]; "q"?: unknown[]; "per_page"?: number; "max_election_cycle"?: number; "candidate_id"?: unknown[]; "committee_type"?: unknown[]; "qq"?: unknown[]; "page"?: number; "committee_id"?: unknown[]; "committee_designation"?: string; "primary_category_id"?: string; "sort_null_only"?: boolean; "sort"?: unknown[] }): Promise<any> {
return this._request("GET", "/audit-case/", { params });
}
/**
This lists the options for the categories and subcategories available in the /audit-search/ endpoint.
*/
getauditCategory(params: { "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "primary_category_name"?: unknown[]; "sort_hide_null"?: boolean; "primary_category_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/audit-category/", { params });
}
/**
This lists the options for the primary categories available in the /audit-search/ endpoint.
*/
getauditPrimaryCategory(params: { "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "primary_category_name"?: unknown[]; "sort_hide_null"?: boolean; "primary_category_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/audit-primary-category/", { params });
}
/**
Combines the election and reporting dates with Commission meetings, conferences, outreach, Advisory Opinions, rules, litigation dates and other
events into one calendar.
State and report type filtering is no longer available.
*/
getcalendarDates(params: { "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "min_start_date"?: string; "calendar_category_id"?: unknown[]; "sort_hide_null"?: boolean; "min_end_date"?: string; "event_id"?: number; "sort_null_only"?: boolean; "per_page"?: number; "description"?: unknown[]; "sort"?: string; "max_end_date"?: string; "summary"?: unknown[]; "max_start_date"?: string }): Promise<any> {
return this._request("GET", "/calendar-dates/", { params });
}
/**
Returns CSV or ICS for downloading directly into calendar applications like Google, Outlook or other applications.
Combines the election and reporting dates with Commission meetings, conferences, outreach, Advisory Opinions, rules, litigation dates and other
events into one calendar.
State filtering now applies to elections, reports and reporting periods.
Presidential pre-primary report due dates are not shown on even years.
Filers generally opt to file monthly rather than submit over 50 pre-primary election
reports. All reporting deadlines are available at /reporting-dates/ for reference.
This is [the sql function](https://github.com/fecgov/openFEC/blob/develop/data/migrations/V40__omnibus_dates.sql)
that creates the calendar.
*/
getcalendarDatesExport(params: { "api_key": string; "renderer"?: string; "sort_nulls_last"?: boolean; "page"?: number; "min_start_date"?: string; "calendar_category_id"?: unknown[]; "sort_hide_null"?: boolean; "min_end_date"?: string; "event_id"?: number; "sort_null_only"?: boolean; "per_page"?: number; "description"?: unknown[]; "sort"?: string; "max_end_date"?: string; "summary"?: unknown[]; "max_start_date"?: string }): Promise<any> {
return this._request("GET", "/calendar-dates/export/", { params });
}
/**
This endpoint is useful for finding detailed information about a particular candidate. Use the
`candidate_id` to find the most recent information about that candidate.
*/
getcandidateCandidateId(params: { "api_key": string; "candidate_id": string; "office"?: unknown[]; "candidate_status"?: unknown[]; "cycle"?: unknown[]; "sort_nulls_last"?: boolean; "state"?: unknown[]; "district"?: unknown[]; "year"?: string; "name"?: unknown[]; "sort_hide_null"?: boolean; "federal_funds_flag"?: boolean; "per_page"?: number; "page"?: number; "sort"?: string; "has_raised_funds"?: boolean; "election_year"?: unknown[]; "sort_null_only"?: boolean; "incumbent_challenge"?: unknown[]; "party"?: unknown[] }): Promise<any> {
return this._request("GET", "/candidate/{candidate_id}/", { params });
}
/**
This endpoint is useful for finding detailed information about a particular committee or
filer. Use the `committee_id` to find the most recent information about the committee.
*/
getcandidateCandidateIdCommittees(params: { "api_key": string; "candidate_id": string; "designation"?: unknown[]; "committee_type"?: unknown[]; "page"?: number; "filing_frequency"?: unknown[]; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "year"?: unknown[]; "sort_nulls_last"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "organization_type"?: unknown[]; "sort"?: string }): Promise<any> {
return this._request("GET", "/candidate/{candidate_id}/committees/", { params });
}
/**
Explore a filer's characteristics over time. This can be particularly useful if the
committees change treasurers, designation, or `committee_type`.
*/
getcandidateCandidateIdCommitteesHistory(params: { "api_key": string; "candidate_id": string; "designation"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/candidate/{candidate_id}/committees/history/", { params });
}
/**
Explore a filer's characteristics over time. This can be particularly useful if the
committees change treasurers, designation, or `committee_type`.
*/
getcandidateCandidateIdCommitteesHistoryCycle(params: { "api_key": string; "candidate_id": string; "cycle": number; "designation"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/candidate/{candidate_id}/committees/history/{cycle}/", { params });
}
/**
All official records and reports filed by or delivered to the FEC.
Note: because the filings data includes many records, counts for large
result sets are approximate; you will want to page through the records until no records are returned.
*/
getcandidateCandidateIdFilings(params: { "api_key": string; "candidate_id": string; "office"?: unknown[]; "file_number"?: unknown[]; "form_category"?: unknown[]; "cycle"?: unknown[]; "district"?: unknown[]; "document_type"?: unknown[]; "sort_hide_null"?: boolean; "state"?: unknown[]; "amendment_indicator"?: unknown[]; "sort_nulls_last"?: boolean; "is_amended"?: boolean; "filer_type"?: string; "max_receipt_date"?: string; "per_page"?: number; "primary_general_indicator"?: unknown[]; "request_type"?: unknown[]; "report_year"?: unknown[]; "form_type"?: unknown[]; "committee_type"?: string; "beginning_image_number"?: unknown[]; "page"?: number; "sort"?: unknown[]; "min_receipt_date"?: string; "sort_null_only"?: boolean; "q_filer"?: unknown[]; "report_type"?: unknown[]; "party"?: unknown[]; "most_recent"?: boolean }): Promise<any> {
return this._request("GET", "/candidate/{candidate_id}/filings/", { params });
}
/**
Find out a candidate's characteristics over time. This is particularly useful if the
candidate runs for the same office in different districts or you want to know more about a candidate's
previous races.
This information is organized by `candidate_id`, so it won't help you find a candidate
who ran for different offices over time; candidates get a new ID for each office.
*/
getcandidateCandidateIdHistory(params: { "api_key": string; "candidate_id": string; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_null_only"?: boolean; "sort_hide_null"?: boolean; "sort"?: string; "election_full"?: boolean; "page"?: number }): Promise<any> {
return this._request("GET", "/candidate/{candidate_id}/history/", { params });
}
/**
Find out a candidate's characteristics over time. This is particularly useful if the
candidate runs for the same office in different districts or you want to know more about a candidate's
previous races.
This information is organized by `candidate_id`, so it won't help you find a candidate
who ran for different offices over time; candidates get a new ID for each office.
*/
getcandidateCandidateIdHistoryCycle(params: { "api_key": string; "candidate_id": string; "cycle": number; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_null_only"?: boolean; "sort_hide_null"?: boolean; "sort"?: string; "election_full"?: boolean; "page"?: number }): Promise<any> {
return this._request("GET", "/candidate/{candidate_id}/history/{cycle}/", { params });
}
/**
This endpoint provides information about a committee's Form 3, Form 3X, or Form 3P financial reports,
which are aggregated by two-year period. We refer to two-year periods as a `cycle`.
The cycle is named after the even-numbered year and includes the year before it. To obtain
totals from 2013 and 2014, you would use 2014. In odd-numbered years, the current cycle
is the next year — for example, in 2015, the current cycle is 2016.
For presidential and Senate candidates, multiple two-year cycles exist between elections.
*/
getcandidateCandidateIdTotals(params: { "api_key": string; "candidate_id": string; "sort_nulls_last"?: boolean; "cycle"?: unknown[]; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/candidate/{candidate_id}/totals/", { params });
}
/**
Fetch basic information about candidates, and use parameters to filter results to the
candidates you're looking for.
Each result reflects a unique FEC candidate ID. That ID is particular to the candidate for a
particular office sought. If a candidate runs for the same office multiple times, the ID
stays the same. If the same person runs for another office — for example, a House
candidate runs for a Senate office — that candidate will get a unique ID for each office.
*/
getcandidates(params: { "api_key": string; "office"?: unknown[]; "candidate_status"?: unknown[]; "cycle"?: unknown[]; "district"?: unknown[]; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "year"?: string; "state"?: unknown[]; "name"?: unknown[]; "is_active_candidate"?: boolean; "q"?: unknown[]; "federal_funds_flag"?: boolean; "per_page"?: number; "candidate_id"?: unknown[]; "min_first_file_date"?: string; "page"?: number; "sort"?: string; "has_raised_funds"?: boolean; "election_year"?: unknown[]; "incumbent_challenge"?: unknown[]; "sort_null_only"?: boolean; "max_first_file_date"?: string; "party"?: unknown[] }): Promise<any> {
return this._request("GET", "/candidates/", { params });
}
/**
Fetch basic information about candidates and their principal committees.
Each result reflects a unique FEC candidate ID. That ID is assigned to the candidate for a
particular office sought. If a candidate runs for the same office over time, that ID
stays the same. If the same person runs for multiple offices — for example, a House
candidate runs for a Senate office — that candidate will get a unique ID for each office.
The candidate endpoints primarily use data from FEC registration
[Form 1](https://www.fec.gov/pdf/forms/fecfrm1.pdf) for committee information and
[Form 2](https://www.fec.gov/pdf/forms/fecfrm2.pdf) for candidate information.
*/
getcandidatesSearch(params: { "api_key": string; "office"?: unknown[]; "candidate_status"?: unknown[]; "cycle"?: unknown[]; "district"?: unknown[]; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "year"?: string; "state"?: unknown[]; "name"?: unknown[]; "is_active_candidate"?: boolean; "q"?: unknown[]; "federal_funds_flag"?: boolean; "per_page"?: number; "candidate_id"?: unknown[]; "min_first_file_date"?: string; "page"?: number; "sort"?: string; "has_raised_funds"?: boolean; "election_year"?: unknown[]; "incumbent_challenge"?: unknown[]; "sort_null_only"?: boolean; "max_first_file_date"?: string; "party"?: unknown[] }): Promise<any> {
return this._request("GET", "/candidates/search/", { params });
}
/**
Aggregated candidate receipts and disbursements grouped by cycle.
*/
getcandidatesTotals(params: { "api_key": string; "office"?: unknown[]; "min_receipts"?: string; "cycle"?: unknown[]; "district"?: unknown[]; "max_receipts"?: string; "sort_hide_null"?: boolean; "state"?: unknown[]; "max_debts_owed_by_committee"?: string; "sort_nulls_last"?: boolean; "min_debts_owed_by_committee"?: string; "is_active_candidate"?: boolean; "q"?: unknown[]; "federal_funds_flag"?: boolean; "per_page"?: number; "max_cash_on_hand_end_period"?: string; "max_disbursements"?: string; "candidate_id"?: unknown[]; "page"?: number; "has_raised_funds"?: boolean; "election_full"?: boolean; "election_year"?: unknown[]; "sort_null_only"?: boolean; "min_cash_on_hand_end_period"?: string; "sort"?: string; "party"?: unknown[]; "min_disbursements"?: string }): Promise<any> {
return this._request("GET", "/candidates/totals/", { params });
}
/** Candidate total receipts and disbursements aggregated by `aggregate_by`.
*/
getcandidatesTotalsAggregates(params: { "api_key": string; "office"?: string; "sort_nulls_last"?: boolean; "district"?: unknown[]; "state"?: unknown[]; "min_election_cycle"?: number; "sort_hide_null"?: boolean; "is_active_candidate"?: boolean; "per_page"?: number; "max_election_cycle"?: number; "aggregate_by"?: string; "page"?: number; "election_year"?: unknown[]; "election_full"?: boolean; "sort_null_only"?: boolean; "sort"?: unknown[]; "party"?: string }): Promise<any> {
return this._request("GET", "/candidates/totals/aggregates/", { params });
}
/** Aggregated candidate receipts and disbursements grouped by office by cycle.
*/
getcandidatesTotalsByOffice(params: { "api_key": string; "office"?: string; "sort_nulls_last"?: boolean; "page"?: number; "min_election_cycle"?: number; "sort_hide_null"?: boolean; "election_year"?: unknown[]; "election_full"?: boolean; "is_active_candidate"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "max_election_cycle"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/candidates/totals/by_office/", { params });
}
/** Aggregated candidate receipts and disbursements grouped by office by party by cycle.
*/
getcandidatesTotalsByOfficeByParty(params: { "api_key": string; "office"?: string; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_year"?: unknown[]; "election_full"?: boolean; "is_active_candidate"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/candidates/totals/by_office/by_party/", { params });
}
/**
This endpoint is useful for finding detailed information about a particular committee or
filer. Use the `committee_id` to find the most recent information about the committee.
*/
getcommitteeCommitteeId(params: { "api_key": string; "committee_id": string; "designation"?: unknown[]; "committee_type"?: unknown[]; "page"?: number; "filing_frequency"?: unknown[]; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "year"?: unknown[]; "sort_nulls_last"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "organization_type"?: unknown[]; "sort"?: string }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/", { params });
}
/**
This endpoint is useful for finding detailed information about a particular candidate. Use the
`candidate_id` to find the most recent information about that candidate.
*/
getcommitteeCommitteeIdCandidates(params: { "api_key": string; "committee_id": string; "office"?: unknown[]; "candidate_status"?: unknown[]; "cycle"?: unknown[]; "sort_nulls_last"?: boolean; "state"?: unknown[]; "district"?: unknown[]; "year"?: string; "name"?: unknown[]; "sort_hide_null"?: boolean; "federal_funds_flag"?: boolean; "per_page"?: number; "page"?: number; "sort"?: string; "has_raised_funds"?: boolean; "election_year"?: unknown[]; "sort_null_only"?: boolean; "incumbent_challenge"?: unknown[]; "party"?: unknown[] }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/candidates/", { params });
}
/**
Find out a candidate's characteristics over time. This is particularly useful if the
candidate runs for the same office in different districts or you want to know more about a candidate's
previous races.
This information is organized by `candidate_id`, so it won't help you find a candidate
who ran for different offices over time; candidates get a new ID for each office.
*/
getcommitteeCommitteeIdCandidatesHistory(params: { "api_key": string; "committee_id": string; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_null_only"?: boolean; "sort_hide_null"?: boolean; "sort"?: string; "election_full"?: boolean; "page"?: number }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/candidates/history/", { params });
}
/**
Find out a candidate's characteristics over time. This is particularly useful if the
candidate runs for the same office in different districts or you want to know more about a candidate's
previous races.
This information is organized by `candidate_id`, so it won't help you find a candidate
who ran for different offices over time; candidates get a new ID for each office.
*/
getcommitteeCommitteeIdCandidatesHistoryCycle(params: { "api_key": string; "committee_id": string; "cycle": number; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_null_only"?: boolean; "sort_hide_null"?: boolean; "sort"?: string; "election_full"?: boolean; "page"?: number }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/candidates/history/{cycle}/", { params });
}
/**
All official records and reports filed by or delivered to the FEC.
Note: because the filings data includes many records, counts for large
result sets are approximate; you will want to page through the records until no records are returned.
*/
getcommitteeCommitteeIdFilings(params: { "api_key": string; "committee_id": string; "office"?: unknown[]; "file_number"?: unknown[]; "form_category"?: unknown[]; "cycle"?: unknown[]; "district"?: unknown[]; "document_type"?: unknown[]; "sort_hide_null"?: boolean; "state"?: unknown[]; "amendment_indicator"?: unknown[]; "sort_nulls_last"?: boolean; "is_amended"?: boolean; "filer_type"?: string; "max_receipt_date"?: string; "per_page"?: number; "primary_general_indicator"?: unknown[]; "request_type"?: unknown[]; "report_year"?: unknown[]; "form_type"?: unknown[]; "committee_type"?: string; "beginning_image_number"?: unknown[]; "page"?: number; "sort"?: unknown[]; "min_receipt_date"?: string; "sort_null_only"?: boolean; "q_filer"?: unknown[]; "report_type"?: unknown[]; "party"?: unknown[]; "most_recent"?: boolean }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/filings/", { params });
}
/**
Explore a filer's characteristics over time. This can be particularly useful if the
committees change treasurers, designation, or `committee_type`.
*/
getcommitteeCommitteeIdHistory(params: { "api_key": string; "committee_id": string; "designation"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/history/", { params });
}
/**
Explore a filer's characteristics over time. This can be particularly useful if the
committees change treasurers, designation, or `committee_type`.
*/
getcommitteeCommitteeIdHistoryCycle(params: { "api_key": string; "committee_id": string; "cycle": number; "designation"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/history/{cycle}/", { params });
}
/**
Each report represents the summary information from Form 3, Form 3X and Form 3P.
These reports have key statistics that illuminate the financial status of a given committee.
Things like cash on hand, debts owed by committee, total receipts, and total disbursements
are especially helpful for understanding a committee's financial dealings.
By default, this endpoint includes both amended and final versions of each report. To restrict
to only the final versions of each report, use `is_amended=false`; to retrieve only reports that
have been amended, use `is_amended=true`.
Several different reporting structures exist, depending on the type of organization that
submits financial information. To see an example of these reporting requirements,
look at the summary and detailed summary pages of Form 3, Form 3X, and Form 3P.
DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly
label these fields while conveying clear meaning to ensure accessibility for all users.
*/
getcommitteeCommitteeIdReports(params: { "api_key": string; "committee_id": string; "min_debts_owed_amount"?: string; "max_disbursements_amount"?: string; "max_total_contributions"?: string; "max_debts_owed_expenditures"?: string; "cycle"?: unknown[]; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "year"?: unknown[]; "max_receipts_amount"?: string; "max_cash_on_hand_end_period_amount"?: string; "is_amended"?: boolean; "min_disbursements_amount"?: string; "max_party_coordinated_expenditures"?: string; "per_page"?: number; "max_independent_expenditures"?: string; "min_receipts_amount"?: string; "min_party_coordinated_expenditures"?: string; "candidate_id"?: string; "beginning_image_number"?: unknown[]; "page"?: number; "type"?: unknown[]; "sort"?: unknown[]; "min_total_contributions"?: string; "min_cash_on_hand_end_period_amount"?: string; "sort_null_only"?: boolean; "min_independent_expenditures"?: string; "report_type"?: unknown[] }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/reports/", { params });
}
/**
This endpoint provides information about a committee's Form 3, Form 3X, or Form 3P financial reports,
which are aggregated by two-year period. We refer to two-year periods as a `cycle`.
The cycle is named after the even-numbered year and includes the year before it. To obtain
totals from 2013 and 2014, you would use 2014. In odd-numbered years, the current cycle
is the next year — for example, in 2015, the current cycle is 2016.
For presidential and Senate candidates, multiple two-year cycles exist between elections.
*/
getcommitteeCommitteeIdTotals(params: { "api_key": string; "committee_id": string; "cycle"?: unknown[]; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_null_only"?: boolean; "sort_hide_null"?: boolean; "sort"?: string; "page"?: number }): Promise<any> {
return this._request("GET", "/committee/{committee_id}/totals/", { params });
}
/**
Fetch basic information about committees and filers. Use parameters to filter for
particular characteristics.
*/
getcommittees(params: { "api_key": string; "designation"?: unknown[]; "max_first_f1_date"?: string; "min_first_f1_date"?: string; "cycle"?: unknown[]; "filing_frequency"?: unknown[]; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "year"?: unknown[]; "state"?: unknown[]; "sponsor_candidate_id"?: unknown[]; "q"?: unknown[]; "per_page"?: number; "min_last_f1_date"?: string; "candidate_id"?: unknown[]; "committee_type"?: unknown[]; "min_first_file_date"?: string; "page"?: number; "sort"?: string; "committee_id"?: unknown[]; "sort_null_only"?: boolean; "max_last_f1_date"?: string; "treasurer_name"?: unknown[]; "organization_type"?: unknown[]; "max_first_file_date"?: string; "party"?: unknown[] }): Promise<any> {
return this._request("GET", "/committees/", { params });
}
/**
52 U.S.C. 30118 allows "communications by a corporation to its stockholders and executive or administrative personnel and their families or by a labor organization to its members and their families on any subject," including the express advocacy of the election or defeat of any Federal candidate. The costs of such communications must be reported to the Federal Election Commission under certain circumstances.
*/
getcommunicationCosts(params: { "api_key": string; "max_amount"?: string; "max_image_number"?: string; "sort_nulls_last"?: boolean; "support_oppose_indicator"?: unknown[]; "sort_hide_null"?: boolean; "line_number"?: string; "per_page"?: number; "candidate_id"?: unknown[]; "page"?: number; "min_date"?: string; "committee_id"?: unknown[]; "min_amount"?: string; "min_image_number"?: string; "sort_null_only"?: boolean; "image_number"?: unknown[]; "sort"?: string; "max_date"?: string }): Promise<any> {
return this._request("GET", "/communication_costs/", { params });
}
/** Communication cost aggregated by candidate ID and committee ID. */
getcommunicationCostsAggregates(params: { "api_key": string; "candidate_id"?: unknown[]; "page"?: number; "cycle"?: unknown[]; "support_oppose_indicator"?: string; "sort_hide_null"?: boolean; "sort_nulls_last"?: boolean; "committee_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/communication_costs/aggregates/", { params });
}
/** Communication cost aggregated by candidate ID and committee ID. */
getcommunicationCostsByCandidate(params: { "api_key": string; "office"?: string; "candidate_id"?: unknown[]; "cycle"?: unknown[]; "district"?: string; "state"?: string; "page"?: number; "support_oppose"?: string; "election_full"?: boolean; "sort_hide_null"?: boolean; "sort_nulls_last"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/communication_costs/by_candidate/", { params });
}
/**
Total communications costs aggregated across committees on supported or opposed candidates by cycle or candidate election year.
*/
getcommunicationCostsTotalsByCandidate(params: { "api_key": string; "candidate_id"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/communication_costs/totals/by_candidate/", { params });
}
/** Basic information about electronic files coming into the FEC, posted as they are received. */
getefileFilings(params: { "api_key": string; "file_number"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "per_page"?: number; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "min_receipt_date"?: string; "max_receipt_date"?: string; "q_filer"?: unknown[]; "sort_null_only"?: boolean; "sort"?: string }): Promise<any> {
return this._request("GET", "/efile/filings/", { params });
}
/**
Key financial data reported periodically by committees as they are reported. This feed includes summary
information from the the House F3 reports, the presidential F3p reports and the PAC and party
F3x reports.
Generally, committees file reports on a quarterly or monthly basis, but
some must also submit a report 12 days before primary elections. Therefore, during the primary
season, the period covered by this file may be different for different committees. These totals
also incorporate any changes made by committees, if any report covering the period is amended.
DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly
label these fields while conveying clear meaning to ensure accessibility for all users.
*/
getefileReportsHouseSenate(params: { "api_key": string; "file_number"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "per_page"?: number; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "min_receipt_date"?: string; "max_receipt_date"?: string; "q_filer"?: unknown[]; "sort_null_only"?: boolean; "sort"?: string }): Promise<any> {
return this._request("GET", "/efile/reports/house-senate/", { params });
}
/**
Key financial data reported periodically by committees as they are reported. This feed includes summary
information from the the House F3 reports, the presidential F3p reports and the PAC and party
F3x reports.
Generally, committees file reports on a quarterly or monthly basis, but
some must also submit a report 12 days before primary elections. Therefore, during the primary
season, the period covered by this file may be different for different committees. These totals
also incorporate any changes made by committees, if any report covering the period is amended.
DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly
label these fields while conveying clear meaning to ensure accessibility for all users.
*/
getefileReportsPacParty(params: { "api_key": string; "file_number"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "per_page"?: number; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "min_receipt_date"?: string; "max_receipt_date"?: string; "q_filer"?: unknown[]; "sort_null_only"?: boolean; "sort"?: string }): Promise<any> {
return this._request("GET", "/efile/reports/pac-party/", { params });
}
/**
Key financial data reported periodically by committees as they are reported. This feed includes summary
information from the the House F3 reports, the presidential F3p reports and the PAC and party
F3x reports.
Generally, committees file reports on a quarterly or monthly basis, but
some must also submit a report 12 days before primary elections. Therefore, during the primary
season, the period covered by this file may be different for different committees. These totals
also incorporate any changes made by committees, if any report covering the period is amended.
DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly
label these fields while conveying clear meaning to ensure accessibility for all users.
*/
getefileReportsPresidential(params: { "api_key": string; "file_number"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "per_page"?: number; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "min_receipt_date"?: string; "max_receipt_date"?: string; "q_filer"?: unknown[]; "sort_null_only"?: boolean; "sort"?: string }): Promise<any> {
return this._request("GET", "/efile/reports/presidential/", { params });
}
/**
FEC election dates since 1995.
*/
getelectionDates(params: { "api_key": string; "max_update_date"?: string; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "max_primary_general_date"?: string; "min_update_date"?: string; "max_create_date"?: string; "per_page"?: number; "min_election_date"?: string; "election_party"?: unknown[]; "election_type_id"?: unknown[]; "page"?: number; "min_create_date"?: string; "min_primary_general_date"?: string; "election_year"?: unknown[]; "election_district"?: unknown[]; "office_sought"?: unknown[]; "sort_null_only"?: boolean; "max_election_date"?: string; "sort"?: string; "election_state"?: unknown[] }): Promise<any> {
return this._request("GET", "/election-dates/", { params });
}
/**
An electioneering communication is any broadcast, cable or satellite communication that fulfills each of the following conditions:
_The communication refers to a clearly identified federal candidate._
_The communication is publicly distributed by a television station, radio station, cable television system or satellite system for a fee._
_The communication is distributed within 60 days prior to a general election or 30 days prior to a primary election to federal office._
*/
getelectioneering(params: { "api_key": string; "candidate_id"?: unknown[]; "max_amount"?: string; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "min_date"?: string; "min_amount"?: string; "per_page"?: number; "sort_null_only"?: boolean; "description"?: string; "sort"?: string; "report_year"?: unknown[]; "last_index"?: number; "max_date"?: string }): Promise<any> {
return this._request("GET", "/electioneering/", { params });
}
/** Electioneering communications costs aggregates */
getelectioneeringAggregates(params: { "api_key": string; "candidate_id"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/electioneering/aggregates/", { params });
}
/** Electioneering costs aggregated by candidate */
getelectioneeringByCandidate(params: { "api_key": string; "office"?: string; "candidate_id"?: unknown[]; "cycle"?: unknown[]; "district"?: string; "state"?: string; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_nulls_last"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/electioneering/by_candidate/", { params });
}
/**
Total electioneering communications spent on candidates by cycle
or candidate election year
*/
getelectioneeringTotalsByCandidate(params: { "api_key": string; "candidate_id"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/electioneering/totals/by_candidate/", { params });
}
/**
Look at the top-level financial information for all candidates running for the same
office.
Choose a 2-year cycle, and `house`, `senate` or `presidential`.
If you are looking for a Senate seat, you will need to select the state using a two-letter
abbreviation.
House races require state and a two-digit district number.
Since this endpoint reflects financial information, it will only have candidates once they file
financial reporting forms. Query the `/candidates` endpoint to retrieve an-up-to-date list of all the
candidates that filed to run for a particular seat.
*/
getelections(params: { "office": string; "cycle": number; "api_key": string; "page"?: number; "district"?: string; "state"?: string; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_nulls_last"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/elections/", { params });
}
/**
List elections by cycle, office, state, and district.
*/
getelectionsSearch(params: { "api_key": string; "office"?: unknown[]; "cycle"?: unknown[]; "district"?: unknown[]; "zip"?: unknown[]; "state"?: unknown[]; "sort_hide_null"?: boolean; "sort_nulls_last"?: boolean; "page"?: number; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: unknown[] }): Promise<any> {
return this._request("GET", "/elections/search/", { params });
}
/**
List elections by cycle, office, state, and district.
*/
getelectionsSummary(params: { "office": string; "cycle": number; "api_key": string; "district"?: string; "state"?: string; "election_full"?: boolean }): Promise<any> {
return this._request("GET", "/elections/summary/", { params });
}
/**
All official records and reports filed by or delivered to the FEC.
Note: because the filings data includes many records, counts for large
result sets are approximate; you will want to page through the records until no records are returned.
*/
getfilings(params: { "api_key": string; "office"?: unknown[]; "file_number"?: unknown[]; "form_category"?: unknown[]; "cycle"?: unknown[]; "district"?: unknown[]; "document_type"?: unknown[]; "sort_hide_null"?: boolean; "state"?: unknown[]; "amendment_indicator"?: unknown[]; "sort_nulls_last"?: boolean; "is_amended"?: boolean; "filer_type"?: string; "max_receipt_date"?: string; "per_page"?: number; "primary_general_indicator"?: unknown[]; "request_type"?: unknown[]; "report_year"?: unknown[]; "form_type"?: unknown[]; "candidate_id"?: unknown[]; "committee_type"?: string; "beginning_image_number"?: unknown[]; "page"?: number; "sort"?: unknown[]; "committee_id"?: unknown[]; "min_receipt_date"?: string; "sort_null_only"?: boolean; "q_filer"?: unknown[]; "report_type"?: unknown[]; "party"?: unknown[]; "most_recent"?: boolean }): Promise<any> {
return this._request("GET", "/filings/", { params });
}
/**
Search legal documents by document type, or across all document types using keywords, parameter values and ranges.
*/
getlegalSearch(params: { "api_key": string; "hits_returned"?: number; "af_report_year"?: string; "case_max_open_date"?: string; "ao_max_issue_date"?: string; "case_statutory_citation"?: unknown[]; "case_respondents"?: string; "q"?: string; "ao_min_issue_date"?: string; "af_max_fd_date"?: string; "from_hit"?: number; "af_fd_fine_amount"?: number; "type"?: string; "af_name"?: unknown[]; "ao_requestor_type"?: unknown[]; "ao_statutory_citation"?: unknown[]; "ao_entity_name"?: unknown[]; "mur_type"?: string; "ao_regulatory_citation"?: unknown[]; "af_committee_id"?: string; "ao_requestor"?: string; "case_citation_require_all"?: boolean; "af_min_fd_date"?: string; "ao_is_pending"?: boolean; "af_rtb_fine_amount"?: number; "case_election_cycles"?: number; "ao_category"?: unknown[]; "ao_citation_require_all"?: boolean; "case_dispositions"?: unknown[]; "af_max_rtb_date"?: string; "case_min_open_date"?: string; "case_max_close_date"?: string; "ao_min_request_date"?: string; "ao_status"?: string; "case_doc_category_id"?: unknown[]; "af_min_rtb_date"?: string; "ao_name"?: unknown[]; "case_regulatory_citation"?: unknown[]; "ao_no"?: unknown[]; "case_min_close_date"?: string; "sort"?: string; "ao_max_request_date"?: string; "case_no"?: unknown[] }): Promise<any> {
return this._request("GET", "/legal/search/", { params });
}
/**
Search for candidates or committees by name. If you're looking for information on a
particular person or group, using a name to find the `candidate_id` or `committee_id` on
this endpoint can be a helpful first step.
*/
getnamesAuditCandidates(params: { "api_key": string; "q": unknown[] }): Promise<any> {
return this._request("GET", "/names/audit_candidates/", { params });
}
/**
Search for candidates or committees by name. If you're looking for information on a
particular person or group, using a name to find the `candidate_id` or `committee_id` on
this endpoint can be a helpful first step.
*/
getnamesAuditCommittees(params: { "api_key": string; "q": unknown[] }): Promise<any> {
return this._request("GET", "/names/audit_committees/", { params });
}
/**
Search for candidates or committees by name. If you're looking for information on a
particular person or group, using a name to find the `candidate_id` or `committee_id` on
this endpoint can be a helpful first step.
*/
getnamesCandidates(params: { "api_key": string; "q": unknown[] }): Promise<any> {
return this._request("GET", "/names/candidates/", { params });
}
/**
Search for candidates or committees by name. If you're looking for information on a
particular person or group, using a name to find the `candidate_id` or `committee_id` on
this endpoint can be a helpful first step.
*/
getnamesCommittees(params: { "api_key": string; "q": unknown[] }): Promise<any> {
return this._request("GET", "/names/committees/", { params });
}
/**
The Operations log contains details of each report loaded into the database. It is primarily
used as status check to determine when all of the data processes, from initial entry through
review are complete.
*/
getoperationsLog(params: { "api_key": string; "max_coverage_end_date"?: string; "sort_nulls_last"?: boolean; "amendment_indicator"?: unknown[]; "sort_hide_null"?: boolean; "max_receipt_date"?: string; "per_page"?: number; "min_transaction_data_complete_date"?: string; "form_type"?: unknown[]; "max_transaction_data_complete_date"?: string; "beginning_image_number"?: unknown[]; "page"?: number; "min_coverage_end_date"?: string; "sort"?: unknown[]; "min_receipt_date"?: string; "sort_null_only"?: boolean; "candidate_committee_id"?: unknown[]; "report_type"?: unknown[]; "report_year"?: unknown[]; "status_num"?: unknown[] }): Promise<any> {
return this._request("GET", "/operations-log/", { params });
}
/**
Net receipts per candidate.
Filter with `contributor_state='US'` for national totals
*/
getpresidentialContributionsByCandidate(params: { "api_key": string; "contributor_state"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_year"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/presidential/contributions/by_candidate/", { params });
}
/**
Contribution receipts by size per candidate.
Filter by candidate_id, election_year and/or size
*/
getpresidentialContributionsBySize(params: { "api_key": string; "candidate_id"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_year"?: unknown[]; "size"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/presidential/contributions/by_size/", { params });
}
/**
Contribution receipts by state per candidate.
Filter by candidate_id and/or election_year
*/
getpresidentialContributionsByState(params: { "api_key": string; "candidate_id"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_year"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/presidential/contributions/by_state/", { params });
}
/**
Coverage end date per candidate.
Filter by candidate_id and/or election_year
*/
getpresidentialCoverageEndDate(params: { "api_key": string; "candidate_id"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_year"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/presidential/coverage_end_date/", { params });
}
/**
Financial summary per candidate.
Filter by candidate_id and/or election_year
*/
getpresidentialFinancialSummary(params: { "api_key": string; "candidate_id"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_year"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/presidential/financial_summary/", { params });
}
/**
Use this endpoint to look up the RAD Analyst for a committee.
The mission of the Reports Analysis Division (RAD) is to ensure that
campaigns and political committees file timely and accurate reports that fully disclose
their financial activities. RAD is responsible for reviewing statements and financial
reports filed by political committees participating in federal elections, providing
assistance and guidance to the committees to properly file their reports, and for taking
appropriate action to ensure compliance with the Federal Election Campaign Act (FECA).
*/
getradAnalyst(params: { "api_key": string; "min_assignment_update_date"?: string; "max_assignment_update_date"?: string; "analyst_short_id"?: unknown[]; "email"?: unknown[]; "page"?: number; "sort_nulls_last"?: boolean; "title"?: unknown[]; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "name"?: unknown[]; "telephone_ext"?: unknown[]; "analyst_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/rad-analyst/", { params });
}
/**
FEC election dates since 1995.
*/
getreportingDates(params: { "api_key": string; "max_update_date"?: string; "page"?: number; "max_due_date"?: string; "min_create_date"?: string; "min_due_date"?: string; "sort_hide_null"?: boolean; "sort_nulls_last"?: boolean; "min_update_date"?: string; "max_create_date"?: string; "per_page"?: number; "sort_null_only"?: boolean; "sort"?: string; "report_year"?: unknown[]; "report_type"?: unknown[] }): Promise<any> {
return this._request("GET", "/reporting-dates/", { params });
}
/**
Each report represents the summary information from Form 3, Form 3X and Form 3P.
These reports have key statistics that illuminate the financial status of a given committee.
Things like cash on hand, debts owed by committee, total receipts, and total disbursements
are especially helpful for understanding a committee's financial dealings.
By default, this endpoint includes both amended and final versions of each report. To restrict
to only the final versions of each report, use `is_amended=false`; to retrieve only reports that
have been amended, use `is_amended=true`.
Several different reporting structures exist, depending on the type of organization that
submits financial information. To see an example of these reporting requirements,
look at the summary and detailed summary pages of Form 3, Form 3X, and Form 3P.
DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly
label these fields while conveying clear meaning to ensure accessibility for all users.
*/
getreportsEntityType(params: { "api_key": string; "entity_type": string; "min_debts_owed_amount"?: string; "max_debts_owed_expenditures"?: string; "sort_hide_null"?: boolean; "year"?: unknown[]; "max_cash_on_hand_end_period_amount"?: string; "filer_type"?: string; "max_party_coordinated_expenditures"?: string; "q_spender"?: unknown[]; "max_receipt_date"?: string; "per_page"?: number; "max_independent_expenditures"?: string; "min_party_coordinated_expenditures"?: string; "committee_type"?: unknown[]; "page"?: number; "min_total_contributions"?: string; "min_cash_on_hand_end_period_amount"?: string; "min_receipt_date"?: string; "sort_null_only"?: boolean; "min_independent_expenditures"?: string; "q_filer"?: unknown[]; "max_disbursements_amount"?: string; "max_total_contributions"?: string; "cycle"?: unknown[]; "amendment_indicator"?: unknown[]; "sort_nulls_last"?: boolean; "max_receipts_amount"?: string; "is_amended"?: boolean; "min_disbursements_amount"?: string; "min_receipts_amount"?: string; "candidate_id"?: string; "beginning_image_number"?: unknown[]; "sort"?: unknown[]; "committee_id"?: unknown[]; "report_type"?: unknown[]; "most_recent"?: boolean }): Promise<any> {
return this._request("GET", "/reports/{entity_type}/", { params });
}
/**
This description is for both `/schedules/schedule_a/` and `/schedules/schedule_a/{sub_id}/`.
This endpoint provides itemized receipts. Schedule A records describe itemized receipts, including contributions from individuals. If you are interested in contributions from an individual, use the `/schedules/schedule_a/` endpoint. For a more complete description of all Schedule A records visit [About receipts data](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/about-receipts-data/). If you are interested in our "is_individual" methodology visit our [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology/).
The `/schedules/schedule_a/` endpoint is not paginated by page number. This endpoint uses keyset pagination to improve query performance and these indices are required to properly page through this large dataset. To request the next page, you should append the values found in the `last_indexes` object from pagination to the URL of your last request as additional parameters.
For example, when sorting by `contribution_receipt_date`, you might receive a page of results with the two scenarios of following pagination information:
case #1:
```
pagination: {
pages: 2152643,
per_page: 20,
count: 43052850,
last_indexes: {
last_index: "230880619",
last_contribution_receipt_date: "2014-01-01"
}
}
```
<br/>
case #2 (results which include contribution_receipt_date = NULL):
```
pagination: {
pages: 2152644,
per_page: 20,
count: 43052850,
last_indexes: {
last_index: "230880639",
sort_null_only: True
}
}
```
To fetch the next page of sorted results, append `last_index=230880619` and `last_contribution_receipt_date=2014-01-01` to the URL and when reaching `contribution_receipt_date=NULL`, append `last_index=230880639` and `sort_null_only=True`. We strongly advise paging through these results using sort indices. The default sort is acending by `contribution_receipt_date` (`deprecated`, will be descending). If you do not page using sort indices, some transactions may be unintentionally filtered out.
Calls to `/schedules/schedule_a/` may return many records. For large result sets, the record counts found in the pagination object are approximate; you will need to page through the records until no records are returned.
To avoid throwing the "out of range" exception on the last page, one recommandation is to use total count and `per_page` to control the traverse loop of results.
The `/schedules/schedule_a/{sub_id}/` endpoint returns a single transaction, but it does include a pagination object class. Please ignore the information in that object class.
*/
getschedulesScheduleA(params: { "api_key": string; "max_load_date"?: string; "max_amount"?: string; "max_image_number"?: string; "contributor_occupation"?: unknown[]; "recipient_committee_designation"?: unknown[]; "sort_hide_null"?: boolean; "is_individual"?: boolean; "line_number"?: string; "contributor_type"?: unknown[]; "recipient_committee_type"?: unknown[]; "per_page"?: number; "contributor_zip"?: unknown[]; "contributor_city"?: unknown[]; "last_index"?: number; "last_contribution_receipt_amount"?: number; "contributor_id"?: unknown[]; "recipient_committee_org_type"?: unknown[]; "contributor_state"?: unknown[]; "sort"?: string; "two_year_transaction_period"?: unknown[]; "min_date"?: string; "committee_id"?: unknown[]; "contributor_employer"?: unknown[]; "min_load_date"?: string; "last_contribution_receipt_date"?: string; "min_image_number"?: string; "contributor_name"?: unknown[]; "sort_null_only"?: boolean; "image_number"?: unknown[]; "min_amount"?: string; "max_date"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/", { params });
}
/**
This endpoint provides itemized individual contributions received by a committee, aggregated by the contributor’s employer name. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
*/
getschedulesScheduleAByEmployer(params: { "api_key": string; "employer"?: unknown[]; "page"?: number; "sort_nulls_last"?: boolean; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_employer/", { params });
}
/**
This endpoint provides itemized individual contributions received by a committee, aggregated by the contributor’s occupation. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
*/
getschedulesScheduleAByOccupation(params: { "api_key": string; "occupation"?: unknown[]; "page"?: number; "sort_nulls_last"?: boolean; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_occupation/", { params });
}
/**
This endpoint provides individual contributions received by a committee, aggregated by size:
```
- $200 and under
- $200.01 - $499.99
- $500 - $999.99
- $1000 - $1999.99
- $2000 +
```
The $200.00 and under category includes contributions of $200 or less combined with unitemized individual contributions.
*/
getschedulesScheduleABySize(params: { "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "size"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_size/", { params });
}
/**
This endpoint provides itemized individual contributions received by a committee, aggregated by size of contribution and candidate. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
*/
getschedulesScheduleABySizeByCandidate(params: { "candidate_id": unknown[]; "cycle": unknown[]; "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_size/by_candidate/", { params });
}
/**
This endpoint provides itemized individual contributions received by a committee, aggregated by the contributor’s state. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
*/
getschedulesScheduleAByState(params: { "api_key": string; "hide_null"?: boolean; "page"?: number; "cycle"?: unknown[]; "state"?: unknown[]; "sort_hide_null"?: boolean; "sort_nulls_last"?: boolean; "committee_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_state/", { params });
}
/**
This endpoint provides itemized individual contributions received by a committee, aggregated by contributor’s state and candidate. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
*/
getschedulesScheduleAByStateByCandidate(params: { "candidate_id": unknown[]; "cycle": unknown[]; "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_state/by_candidate/", { params });
}
/**
Itemized individual contributions aggregated by contributor’s state, candidate, committee type and cycle. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
*/
getschedulesScheduleAByStateByCandidateTotal(params: { "candidate_id": unknown[]; "cycle": unknown[]; "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_state/by_candidate/totals/", { params });
}
/**
This endpoint provides itemized individual contributions received by a committee, aggregated by contributor’s state, committee type and cycle. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
*/
getschedulesScheduleAByStateTotals(params: { "api_key": string; "committee_type"?: unknown[]; "cycle"?: unknown[]; "page"?: number; "state"?: unknown[]; "sort_hide_null"?: boolean; "sort_nulls_last"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_state/totals/", { params });
}
/**
This endpoint provides itemized individual contributions received by a committee, aggregated by the contributor’s ZIP code. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
*/
getschedulesScheduleAByZip(params: { "api_key": string; "page"?: number; "cycle"?: unknown[]; "zip"?: unknown[]; "sort_hide_null"?: boolean; "state"?: unknown[]; "committee_id"?: unknown[]; "sort_nulls_last"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/by_zip/", { params });
}
/**
Efiling endpoints provide real-time campaign finance data received from electronic filers. Efiling endpoints only contain the most recent four months of data and don't contain the processed and coded data that you can find on other endpoints.
*/
getschedulesScheduleAEfile(params: { "api_key": string; "max_amount"?: string; "contributor_occupation"?: unknown[]; "max_image_number"?: string; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "line_number"?: string; "per_page"?: number; "contributor_city"?: unknown[]; "contributor_state"?: unknown[]; "page"?: number; "sort"?: string; "committee_id"?: unknown[]; "min_date"?: string; "contributor_employer"?: unknown[]; "contributor_name"?: unknown[]; "min_image_number"?: string; "sort_null_only"?: boolean; "image_number"?: unknown[]; "min_amount"?: string; "max_date"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/efile/", { params });
}
/**
This description is for both `/schedules/schedule_a/` and `/schedules/schedule_a/{sub_id}/`.
This endpoint provides itemized receipts. Schedule A records describe itemized receipts, including contributions from individuals. If you are interested in contributions from an individual, use the `/schedules/schedule_a/` endpoint. For a more complete description of all Schedule A records visit [About receipts data](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/about-receipts-data/). If you are interested in our "is_individual" methodology visit our [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology/).
The `/schedules/schedule_a/` endpoint is not paginated by page number. This endpoint uses keyset pagination to improve query performance and these indices are required to properly page through this large dataset. To request the next page, you should append the values found in the `last_indexes` object from pagination to the URL of your last request as additional parameters.
For example, when sorting by `contribution_receipt_date`, you might receive a page of results with the two scenarios of following pagination information:
case #1:
```
pagination: {
pages: 2152643,
per_page: 20,
count: 43052850,
last_indexes: {
last_index: "230880619",
last_contribution_receipt_date: "2014-01-01"
}
}
```
<br/>
case #2 (results which include contribution_receipt_date = NULL):
```
pagination: {
pages: 2152644,
per_page: 20,
count: 43052850,
last_indexes: {
last_index: "230880639",
sort_null_only: True
}
}
```
To fetch the next page of sorted results, append `last_index=230880619` and `last_contribution_receipt_date=2014-01-01` to the URL and when reaching `contribution_receipt_date=NULL`, append `last_index=230880639` and `sort_null_only=True`. We strongly advise paging through these results using sort indices. The default sort is acending by `contribution_receipt_date` (`deprecated`, will be descending). If you do not page using sort indices, some transactions may be unintentionally filtered out.
Calls to `/schedules/schedule_a/` may return many records. For large result sets, the record counts found in the pagination object are approximate; you will need to page through the records until no records are returned.
To avoid throwing the "out of range" exception on the last page, one recommandation is to use total count and `per_page` to control the traverse loop of results.
The `/schedules/schedule_a/{sub_id}/` endpoint returns a single transaction, but it does include a pagination object class. Please ignore the information in that object class.
*/
getschedulesScheduleASubId(params: { "api_key": string; "sub_id": string; "max_load_date"?: string; "max_amount"?: string; "max_image_number"?: string; "contributor_occupation"?: unknown[]; "recipient_committee_designation"?: unknown[]; "sort_hide_null"?: boolean; "is_individual"?: boolean; "line_number"?: string; "contributor_type"?: unknown[]; "recipient_committee_type"?: unknown[]; "per_page"?: number; "contributor_zip"?: unknown[]; "contributor_city"?: unknown[]; "last_index"?: number; "last_contribution_receipt_amount"?: number; "contributor_id"?: unknown[]; "recipient_committee_org_type"?: unknown[]; "contributor_state"?: unknown[]; "sort"?: string; "two_year_transaction_period"?: unknown[]; "min_date"?: string; "committee_id"?: unknown[]; "contributor_employer"?: unknown[]; "min_load_date"?: string; "last_contribution_receipt_date"?: string; "min_image_number"?: string; "contributor_name"?: unknown[]; "sort_null_only"?: boolean; "image_number"?: unknown[]; "min_amount"?: string; "max_date"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_a/{sub_id}/", { params });
}
/**
Schedule B filings describe itemized disbursements. This data
explains how committees and other filers spend their money. These figures are
reported as part of forms F3, F3X and F3P.
The data is divided in two-year periods, called `two_year_transaction_period`, which
is derived from the `report_year` submitted of the corresponding form. If no value is supplied, the results will
default to the most recent two-year period that is named after the ending,
even-numbered year.
Due to the large quantity of Schedule B filings, this endpoint is not paginated by
page number. Instead, you can request the next page of results by adding the values in
the `last_indexes` object from `pagination` to the URL of your last request. For
example, when sorting by `disbursement_date`, you might receive a page of
results with the following pagination information:
```
pagination: {
pages: 965191,
per_page: 20,
count: 19303814,
last_indexes: {
last_index: "230906248",
last_disbursement_date: "2014-07-04"
}
}
```
To fetch the next page of sorted results, append `last_index=230906248` and
`last_disbursement_date=2014-07-04` to the URL. We strongly advise paging through
these results by using the sort indices (defaults to sort by disbursement date, e.g.
`last_disbursement_date`), otherwise some resources may be unintentionally filtered out.
This resource uses keyset pagination to improve query performance
and these indices are required to properly page through this large dataset.
Note: because the Schedule B data includes many records, counts for
large result sets are approximate; you will want to page through the records until no records are returned.
*/
getschedulesScheduleB(params: { "api_key": string; "disbursement_description"?: unknown[]; "max_amount"?: string; "max_image_number"?: string; "image_number"?: unknown[]; "sort_hide_null"?: boolean; "last_disbursement_date"?: string; "line_number"?: string; "spender_committee_designation"?: unknown[]; "last_disbursement_amount"?: number; "per_page"?: number; "last_index"?: number; "spender_committee_type"?: unknown[]; "sort"?: string; "two_year_transaction_period"?: unknown[]; "min_date"?: string; "committee_id"?: unknown[]; "disbursement_purpose_category"?: unknown[]; "recipient_name"?: unknown[]; "recipient_state"?: unknown[]; "recipient_city"?: unknown[]; "min_image_number"?: string; "spender_committee_org_type"?: unknown[]; "sort_null_only"?: boolean; "recipient_committee_id"?: unknown[]; "min_amount"?: string; "max_date"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_b/", { params });
}
/**
Schedule B disbursements aggregated by disbursement purpose category. To avoid double counting,
memoed items are not included.
Purpose is a combination of transaction codes, category codes and disbursement description.
Inspect the `disbursement_purpose` sql function within the migrations for more details.
*/
getschedulesScheduleBByPurpose(params: { "api_key": string; "purpose"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_b/by_purpose/", { params });
}
/**
Schedule B disbursements aggregated by recipient name. To avoid double counting,
memoed items are not included.
*/
getschedulesScheduleBByRecipient(params: { "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "recipient_name"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_b/by_recipient/", { params });
}
/**
Schedule B disbursements aggregated by recipient committee ID, if applicable.
To avoid double counting, memoed items are not included.
*/
getschedulesScheduleBByRecipientId(params: { "api_key": string; "sort_nulls_last"?: boolean; "page"?: number; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "recipient_id"?: unknown[]; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_b/by_recipient_id/", { params });
}
/**
Efiling endpoints provide real-time campaign finance data received from electronic filers. Efiling endpoints only contain the most recent four months of data and don't contain the processed and coded data that you can find on other endpoints.
*/
getschedulesScheduleBEfile(params: { "api_key": string; "disbursement_description"?: unknown[]; "max_amount"?: string; "page"?: number; "sort_nulls_last"?: boolean; "sort"?: string; "sort_hide_null"?: boolean; "committee_id"?: unknown[]; "min_date"?: string; "recipient_state"?: unknown[]; "recipient_city"?: unknown[]; "sort_null_only"?: boolean; "per_page"?: number; "image_number"?: unknown[]; "min_amount"?: string; "max_date"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_b/efile/", { params });
}
/**
Schedule B filings describe itemized disbursements. This data
explains how committees and other filers spend their money. These figures are
reported as part of forms F3, F3X and F3P.
The data is divided in two-year periods, called `two_year_transaction_period`, which
is derived from the `report_year` submitted of the corresponding form. If no value is supplied, the results will
default to the most recent two-year period that is named after the ending,
even-numbered year.
Due to the large quantity of Schedule B filings, this endpoint is not paginated by
page number. Instead, you can request the next page of results by adding the values in
the `last_indexes` object from `pagination` to the URL of your last request. For
example, when sorting by `disbursement_date`, you might receive a page of
results with the following pagination information:
```
pagination: {
pages: 965191,
per_page: 20,
count: 19303814,
last_indexes: {
last_index: "230906248",
last_disbursement_date: "2014-07-04"
}
}
```
To fetch the next page of sorted results, append `last_index=230906248` and
`last_disbursement_date=2014-07-04` to the URL. We strongly advise paging through
these results by using the sort indices (defaults to sort by disbursement date, e.g.
`last_disbursement_date`), otherwise some resources may be unintentionally filtered out.
This resource uses keyset pagination to improve query performance
and these indices are required to properly page through this large dataset.
Note: because the Schedule B data includes many records, counts for
large result sets are approximate; you will want to page through the records until no records are returned.
*/
getschedulesScheduleBSubId(params: { "api_key": string; "sub_id": string; "disbursement_description"?: unknown[]; "max_amount"?: string; "max_image_number"?: string; "image_number"?: unknown[]; "sort_hide_null"?: boolean; "last_disbursement_date"?: string; "line_number"?: string; "spender_committee_designation"?: unknown[]; "last_disbursement_amount"?: number; "per_page"?: number; "last_index"?: number; "spender_committee_type"?: unknown[]; "sort"?: string; "two_year_transaction_period"?: unknown[]; "min_date"?: string; "committee_id"?: unknown[]; "disbursement_purpose_category"?: unknown[]; "recipient_name"?: unknown[]; "recipient_state"?: unknown[]; "recipient_city"?: unknown[]; "min_image_number"?: string; "spender_committee_org_type"?: unknown[]; "sort_null_only"?: boolean; "recipient_committee_id"?: unknown[]; "min_amount"?: string; "max_date"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_b/{sub_id}/", { params });
}
/**
Schedule C shows all loans, endorsements and loan guarantees a committee
receives or makes.
The committee continues to report the loan until it is repaid.
*/
getschedulesScheduleC(params: { "api_key": string; "min_incurred_date"?: string; "candidate_name"?: unknown[]; "max_amount"?: string; "max_image_number"?: string; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "line_number"?: string; "max_incurred_date"?: string; "per_page"?: number; "last_index"?: number; "loan_source_name"?: unknown[]; "page"?: number; "sort"?: string; "max_payment_to_date"?: number; "min_payment_to_date"?: number; "committee_id"?: unknown[]; "min_image_number"?: string; "sort_null_only"?: boolean; "image_number"?: unknown[]; "min_amount"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_c/", { params });
}
/**
Schedule C shows all loans, endorsements and loan guarantees a committee
receives or makes.
The committee continues to report the loan until it is repaid.
*/
getschedulesScheduleCSubId(params: { "api_key": string; "sub_id": string; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_null_only"?: boolean; "sort_hide_null"?: boolean; "sort"?: string; "page"?: number }): Promise<any> {
return this._request("GET", "/schedules/schedule_c/{sub_id}/", { params });
}
/**
Schedule D, it shows debts and obligations owed to or by the committee that are
required to be disclosed.
*/
getschedulesScheduleD(params: { "api_key": string; "creditor_debtor_name"?: unknown[]; "max_image_number"?: string; "sort_nulls_last"?: boolean; "max_amount_outstanding_beginning"?: number; "sort_hide_null"?: boolean; "min_payment_period"?: number; "max_amount_incurred"?: number; "nature_of_debt"?: string; "per_page"?: number; "max_amount_outstanding_close"?: number; "candidate_id"?: unknown[]; "page"?: number; "min_date"?: string; "committee_id"?: unknown[]; "min_amount_outstanding_close"?: number; "max_payment_period"?: number; "min_image_number"?: string; "min_amount_incurred"?: number; "sort_null_only"?: boolean; "image_number"?: unknown[]; "sort"?: string; "min_amount_outstanding_beginning"?: number; "max_date"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_d/", { params });
}
/**
Schedule D, it shows debts and obligations owed to or by the committee that are
required to be disclosed.
*/
getschedulesScheduleDSubId(params: { "api_key": string; "sub_id": string; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_null_only"?: boolean; "sort_hide_null"?: boolean; "sort"?: string; "page"?: number }): Promise<any> {
return this._request("GET", "/schedules/schedule_d/{sub_id}/", { params });
}
/**
Schedule E covers the line item expenditures for independent expenditures. For example, if a super PAC
bought ads on TV to oppose a federal candidate, each ad purchase would be recorded here with
the expenditure amount, name and id of the candidate, and whether the ad supported or opposed the candidate.
An independent expenditure is an expenditure for a communication "expressly advocating the election or
defeat of a clearly identified candidate that is not made in cooperation, consultation, or concert with,
or at the request or suggestion of, a candidate, a candidate’s authorized committee, or their agents, or
a political party or its agents."
Aggregates by candidate do not include 24 and 48 hour reports. This ensures we don't double count expenditures
and the totals are more accurate. You can still find the information from 24 and 48 hour reports in
`/schedule/schedule_e/`.
Due to the large quantity of Schedule E filings, this endpoint is not paginated by
page number. Instead, you can request the next page of results by adding the values in
the `last_indexes` object from `pagination` to the URL of your last request. For
example, when sorting by `expenditure_amount`, you might receive a page of
results with the following pagination information:
```
"pagination": {
"count": 152623,
"last_indexes": {
"last_index": "3023037",
"last_expenditure_amount": -17348.5
},
"per_page": 20,
"pages": 7632
}
}
```
To fetch the next page of sorted results, append `last_index=3023037` and
`last_expenditure_amount=` to the URL. We strongly advise paging through
these results by using the sort indices (defaults to sort by disbursement date,
e.g. `last_disbursement_date`), otherwise some resources may be unintentionally
filtered out. This resource uses keyset pagination to improve query performance
and these indices are required to properly page through this large dataset.
Note: because the Schedule E data includes many records, counts for
large result sets are approximate; you will want to page through the records until no records are returned.
*/
getschedulesScheduleE(params: { "api_key": string; "max_dissemination_date"?: string; "sort_hide_null"?: boolean; "payee_name"?: unknown[]; "q_spender"?: unknown[]; "per_page"?: number; "last_index"?: number; "min_dissemination_date"?: string; "candidate_office_state"?: unknown[]; "filing_form"?: unknown[]; "sort_null_only"?: boolean; "max_amount"?: string; "max_image_number"?: string; "min_filing_date"?: string; "cycle"?: unknown[]; "sort_nulls_last"?: boolean; "support_oppose_indicator"?: unknown[]; "candidate_office"?: unknown[]; "is_notice"?: unknown[]; "line_number"?: string; "last_expenditure_amount"?: number; "last_expenditure_date"?: string; "candidate_id"?: unknown[]; "last_office_total_ytd"?: number; "last_support_oppose_indicator"?: string; "min_date"?: string; "candidate_party"?: unknown[]; "committee_id"?: unknown[]; "min_image_number"?: string; "max_filing_date"?: string; "candidate_office_district"?: unknown[]; "min_amount"?: string; "image_number"?: unknown[]; "sort"?: string; "max_date"?: string; "most_recent"?: boolean }): Promise<any> {
return this._request("GET", "/schedules/schedule_e/", { params });
}
/**
Schedule E receipts aggregated by recipient candidate. To avoid double
counting, memoed items are not included.
*/
getschedulesScheduleEByCandidate(params: { "api_key": string; "office"?: string; "candidate_id"?: unknown[]; "cycle"?: unknown[]; "district"?: string; "state"?: string; "page"?: number; "support_oppose"?: string; "election_full"?: boolean; "committee_id"?: unknown[]; "sort_hide_null"?: boolean; "sort_nulls_last"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_e/by_candidate/", { params });
}
/**
Efiling endpoints provide real-time campaign finance data received from electronic filers. Efiling endpoints only contain the most recent four months of data and don't contain the processed and coded data that you can find on other endpoints.
*/
getschedulesScheduleEEfile(params: { "api_key": string; "spender_name"?: unknown[]; "min_expenditure_date"?: string; "sort_nulls_last"?: boolean; "max_dissemination_date"?: string; "support_oppose_indicator"?: unknown[]; "sort_hide_null"?: boolean; "candidate_office"?: string; "is_notice"?: boolean; "payee_name"?: unknown[]; "per_page"?: number; "candidate_search"?: unknown[]; "max_expenditure_amount"?: number; "min_dissemination_date"?: string; "min_filed_date"?: string; "candidate_id"?: unknown[]; "candidate_office_state"?: unknown[]; "max_filed_date"?: string; "page"?: number; "min_expenditure_amount"?: number; "committee_id"?: unknown[]; "candidate_party"?: unknown[]; "max_expenditure_date"?: string; "filing_form"?: unknown[]; "sort_null_only"?: boolean; "candidate_office_district"?: unknown[]; "image_number"?: unknown[]; "sort"?: string; "most_recent"?: boolean }): Promise<any> {
return this._request("GET", "/schedules/schedule_e/efile/", { params });
}
/**
Total independent expenditure on supported or opposed candidates by cycle or candidate election year.
*/
getschedulesScheduleETotalsByCandidate(params: { "api_key": string; "candidate_id"?: unknown[]; "sort_nulls_last"?: boolean; "page"?: number; "cycle"?: unknown[]; "sort_hide_null"?: boolean; "election_full"?: boolean; "sort_null_only"?: boolean; "per_page"?: number; "sort"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_e/totals/by_candidate/", { params });
}
/**
Schedule F, it shows all special expenditures a national or state party committee
makes in connection with the general election campaigns of federal candidates.
These coordinated party expenditures do not count against the contribution limits but are subject to other limits,
these limits are detailed in Chapter 7 of the FEC Campaign Guide for Political Party Committees.
*/
getschedulesScheduleF(params: { "api_key": string; "max_amount"?: string; "max_image_number"?: string; "cycle"?: unknown[]; "sort_nulls_last"?: boolean; "sort_hide_null"?: boolean; "line_number"?: string; "payee_name"?: unknown[]; "per_page"?: number; "candidate_id"?: unknown[]; "page"?: number; "min_date"?: string; "committee_id"?: unknown[]; "min_amount"?: string; "min_image_number"?: string; "sort_null_only"?: boolean; "image_number"?: unknown[]; "sort"?: string; "max_date"?: string }): Promise<any> {
return this._request("GET", "/schedules/schedule_f/", { params });
}
/**
Schedule F, it shows all special expenditures a national or state party committee
makes in connection with the general election campaigns of federal candidates.
These coordinated party expenditures do not count against the contribution limits but are subject to other limits,
these limits are detailed in Chapter 7 of the FEC Campaign Guide for Political Party Committees.
*/
getschedulesScheduleFSubId(params: { "api_key": string; "sub_id": string; "per_page"?: number; "page"?: number }): Promise<any> {
return this._request("GET", "/schedules/schedule_f/{sub_id}/", { params });
}
/**
State laws and procedures govern elections for state or local offices as well as
how candidates appear on election ballots.
Contact the appropriate state election office for more information.
*/
getstateElectionOffice(params: { "state": string; "api_key": string; "sort_null_only"?: boolean; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_hide_null"?: boolean; "sort"?: string; "page"?: number }): Promise<any> {
return this._request("GET", "/state-election-office/", { params });
}
/**
Provides cumulative receipt totals by entity type, over a two year cycle. Totals are adjusted to avoid double counting.
This is [the sql](https://github.com/fecgov/openFEC/blob/develop/data/migrations/V41__large_aggregates.sql) that creates these calculations.
*/
gettotalsByEntity(params: { "cycle": number; "api_key": string; "sort_nulls_last"?: boolean; "per_page"?: number; "sort_null_only"?: boolean; "sort_hide_null"?: boolean; "sort"?: string; "page"?: number }): Promise<any> {
return this._request("GET", "/totals/by_entity/", { params });
}
/**
This endpoint provides information about a committee's Form 3, Form 3X, or Form 3P financial reports,
which are aggregated by two-year period. We refer to two-year periods as a `cycle`.
The cycle is named after the even-numbered year and includes the year before it. To obtain
totals from 2013 and 2014, you would use 2014. In odd-numbered years, the current cycle
is the next year — for example, in 2015, the current cycle is 2016.
For presidential and Senate candidates, multiple two-year cycles exist between elections.
*/
gettotalsEntityType(params: { "api_key": string; "entity_type": string; "max_first_f1_date"?: string; "min_receipts"?: string; "cycle"?: unknown[]; "filing_frequency"?: unknown[]; "max_receipts"?: string; "sort_hide_null"?: boolean; "sort_nulls_last"?: boolean; "min_last_debts_owed_by_committee"?: string; "max_last_cash_on_hand_end_period"?: string; "treasurer_name"?: unknown[]; "sponsor_candidate_id"?: unknown[]; "per_page"?: number; "max_disbursements"?: string; "committee_state"?: unknown[]; "committee_type"?: unknown[]; "page"?: number; "max_last_debts_owed_by_committee"?: string; "committee_id"?: unknown[]; "committee_designation"?: unknown[]; "sort_null_only"?: boolean; "min_first_f1_date"?: string; "organization_type"?: unknown[]; "sort"?: string; "min_disbursements"?: string; "min_last_cash_on_hand_end_period"?: string }): Promise<any> {
return this._request("GET", "/totals/{entity_type}/", { params });
}
}
export default OpenFEC;
No reviews yet. Be the first to rate this API.
Yes. OpenFEC uses apiKey authentication, so you bring your own key from the provider. You store it once on OmniStream and the proxy injects it into every call, so your code only ever sends your Omni key.
Explore U.S. campaign finance data from the Federal Election Commission: candidates, committees, filings, and spending. It exposes 91 endpoints over GET, including GET /audit-case/, GET /audit-category/, GET /audit-primary-category/.
Install the OmniStream SDK for your language and call OpenFEC through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for OpenFEC itself, and OpenFEC's own rate limits still apply to your provider key.
Google Civic Information API: Provides polling places, early vote locations, contest data, election officials, and government representatives for U.S. residential addresses.
This lists the options for the primary categories available in the /audit-search/ endpoint.
Combines the election and reporting dates with Commission meetings, conferences, outreach, Advisory Opinions, rules, litigation dates and other events into one calendar. State and report type filtering is no longer available.
Returns CSV or ICS for downloading directly into calendar applications like Google, Outlook or other applications. Combines the election and reporting dates with Commission meetings, conferences, outreach, Advisory Opinions, rules, litigation dates and other events into one calendar. State filtering now applies to elections, reports and reporting periods. Presidential pre-primary report due dates are not shown on even years. Filers generally opt to file monthly rather than submit over 50 pre-primary election reports. All reporting deadlines are available at /reporting-dates/ for reference. This is [the sql function](https://github.com/fecgov/openFEC/blob/develop/data/migrations/V40__omnibus_dates.sql) that creates the calendar.
This endpoint is useful for finding detailed information about a particular candidate. Use the `candidate_id` to find the most recent information about that candidate.
This endpoint is useful for finding detailed information about a particular committee or filer. Use the `committee_id` to find the most recent information about the committee.
Explore a filer's characteristics over time. This can be particularly useful if the committees change treasurers, designation, or `committee_type`.
Explore a filer's characteristics over time. This can be particularly useful if the committees change treasurers, designation, or `committee_type`.
All official records and reports filed by or delivered to the FEC. Note: because the filings data includes many records, counts for large result sets are approximate; you will want to page through the records until no records are returned.
Find out a candidate's characteristics over time. This is particularly useful if the candidate runs for the same office in different districts or you want to know more about a candidate's previous races. This information is organized by `candidate_id`, so it won't help you find a candidate who ran for different offices over time; candidates get a new ID for each office.
Find out a candidate's characteristics over time. This is particularly useful if the candidate runs for the same office in different districts or you want to know more about a candidate's previous races. This information is organized by `candidate_id`, so it won't help you find a candidate who ran for different offices over time; candidates get a new ID for each office.
This endpoint provides information about a committee's Form 3, Form 3X, or Form 3P financial reports, which are aggregated by two-year period. We refer to two-year periods as a `cycle`. The cycle is named after the even-numbered year and includes the year before it. To obtain totals from 2013 and 2014, you would use 2014. In odd-numbered years, the current cycle is the next year — for example, in 2015, the current cycle is 2016. For presidential and Senate candidates, multiple two-year cycles exist between elections.
Fetch basic information about candidates, and use parameters to filter results to the candidates you're looking for. Each result reflects a unique FEC candidate ID. That ID is particular to the candidate for a particular office sought. If a candidate runs for the same office multiple times, the ID stays the same. If the same person runs for another office — for example, a House candidate runs for a Senate office — that candidate will get a unique ID for each office.
Fetch basic information about candidates and their principal committees. Each result reflects a unique FEC candidate ID. That ID is assigned to the candidate for a particular office sought. If a candidate runs for the same office over time, that ID stays the same. If the same person runs for multiple offices — for example, a House candidate runs for a Senate office — that candidate will get a unique ID for each office. The candidate endpoints primarily use data from FEC registration [Form 1](https://www.fec.gov/pdf/forms/fecfrm1.pdf) for committee information and [Form 2](https://www.fec.gov/pdf/forms/fecfrm2.pdf) for candidate information.
Aggregated candidate receipts and disbursements grouped by cycle.
Candidate total receipts and disbursements aggregated by `aggregate_by`.
Aggregated candidate receipts and disbursements grouped by office by cycle.
Aggregated candidate receipts and disbursements grouped by office by party by cycle.
This endpoint is useful for finding detailed information about a particular committee or filer. Use the `committee_id` to find the most recent information about the committee.
This endpoint is useful for finding detailed information about a particular candidate. Use the `candidate_id` to find the most recent information about that candidate.
Find out a candidate's characteristics over time. This is particularly useful if the candidate runs for the same office in different districts or you want to know more about a candidate's previous races. This information is organized by `candidate_id`, so it won't help you find a candidate who ran for different offices over time; candidates get a new ID for each office.
Find out a candidate's characteristics over time. This is particularly useful if the candidate runs for the same office in different districts or you want to know more about a candidate's previous races. This information is organized by `candidate_id`, so it won't help you find a candidate who ran for different offices over time; candidates get a new ID for each office.
All official records and reports filed by or delivered to the FEC. Note: because the filings data includes many records, counts for large result sets are approximate; you will want to page through the records until no records are returned.
Explore a filer's characteristics over time. This can be particularly useful if the committees change treasurers, designation, or `committee_type`.
Explore a filer's characteristics over time. This can be particularly useful if the committees change treasurers, designation, or `committee_type`.
Each report represents the summary information from Form 3, Form 3X and Form 3P. These reports have key statistics that illuminate the financial status of a given committee. Things like cash on hand, debts owed by committee, total receipts, and total disbursements are especially helpful for understanding a committee's financial dealings. By default, this endpoint includes both amended and final versions of each report. To restrict to only the final versions of each report, use `is_amended=false`; to retrieve only reports that have been amended, use `is_amended=true`. Several different reporting structures exist, depending on the type of organization that submits financial information. To see an example of these reporting requirements, look at the summary and detailed summary pages of Form 3, Form 3X, and Form 3P. DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly label these fields while conveying clear meaning to ensure accessibility for all users.
This endpoint provides information about a committee's Form 3, Form 3X, or Form 3P financial reports, which are aggregated by two-year period. We refer to two-year periods as a `cycle`. The cycle is named after the even-numbered year and includes the year before it. To obtain totals from 2013 and 2014, you would use 2014. In odd-numbered years, the current cycle is the next year — for example, in 2015, the current cycle is 2016. For presidential and Senate candidates, multiple two-year cycles exist between elections.
Fetch basic information about committees and filers. Use parameters to filter for particular characteristics.
52 U.S.C. 30118 allows "communications by a corporation to its stockholders and executive or administrative personnel and their families or by a labor organization to its members and their families on any subject," including the express advocacy of the election or defeat of any Federal candidate. The costs of such communications must be reported to the Federal Election Commission under certain circumstances.
Communication cost aggregated by candidate ID and committee ID.
Communication cost aggregated by candidate ID and committee ID.
Total communications costs aggregated across committees on supported or opposed candidates by cycle or candidate election year.
Basic information about electronic files coming into the FEC, posted as they are received.
Key financial data reported periodically by committees as they are reported. This feed includes summary information from the the House F3 reports, the presidential F3p reports and the PAC and party F3x reports. Generally, committees file reports on a quarterly or monthly basis, but some must also submit a report 12 days before primary elections. Therefore, during the primary season, the period covered by this file may be different for different committees. These totals also incorporate any changes made by committees, if any report covering the period is amended. DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly label these fields while conveying clear meaning to ensure accessibility for all users.
Key financial data reported periodically by committees as they are reported. This feed includes summary information from the the House F3 reports, the presidential F3p reports and the PAC and party F3x reports. Generally, committees file reports on a quarterly or monthly basis, but some must also submit a report 12 days before primary elections. Therefore, during the primary season, the period covered by this file may be different for different committees. These totals also incorporate any changes made by committees, if any report covering the period is amended. DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly label these fields while conveying clear meaning to ensure accessibility for all users.
Key financial data reported periodically by committees as they are reported. This feed includes summary information from the the House F3 reports, the presidential F3p reports and the PAC and party F3x reports. Generally, committees file reports on a quarterly or monthly basis, but some must also submit a report 12 days before primary elections. Therefore, during the primary season, the period covered by this file may be different for different committees. These totals also incorporate any changes made by committees, if any report covering the period is amended. DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly label these fields while conveying clear meaning to ensure accessibility for all users.
FEC election dates since 1995.
An electioneering communication is any broadcast, cable or satellite communication that fulfills each of the following conditions: _The communication refers to a clearly identified federal candidate._ _The communication is publicly distributed by a television station, radio station, cable television system or satellite system for a fee._ _The communication is distributed within 60 days prior to a general election or 30 days prior to a primary election to federal office._
Electioneering communications costs aggregates
Electioneering costs aggregated by candidate
Total electioneering communications spent on candidates by cycle or candidate election year
Look at the top-level financial information for all candidates running for the same office. Choose a 2-year cycle, and `house`, `senate` or `presidential`. If you are looking for a Senate seat, you will need to select the state using a two-letter abbreviation. House races require state and a two-digit district number. Since this endpoint reflects financial information, it will only have candidates once they file financial reporting forms. Query the `/candidates` endpoint to retrieve an-up-to-date list of all the candidates that filed to run for a particular seat.
List elections by cycle, office, state, and district.
List elections by cycle, office, state, and district.
All official records and reports filed by or delivered to the FEC. Note: because the filings data includes many records, counts for large result sets are approximate; you will want to page through the records until no records are returned.
Search legal documents by document type, or across all document types using keywords, parameter values and ranges.
Search for candidates or committees by name. If you're looking for information on a particular person or group, using a name to find the `candidate_id` or `committee_id` on this endpoint can be a helpful first step.
Search for candidates or committees by name. If you're looking for information on a particular person or group, using a name to find the `candidate_id` or `committee_id` on this endpoint can be a helpful first step.
Search for candidates or committees by name. If you're looking for information on a particular person or group, using a name to find the `candidate_id` or `committee_id` on this endpoint can be a helpful first step.
Search for candidates or committees by name. If you're looking for information on a particular person or group, using a name to find the `candidate_id` or `committee_id` on this endpoint can be a helpful first step.
The Operations log contains details of each report loaded into the database. It is primarily used as status check to determine when all of the data processes, from initial entry through review are complete.
Net receipts per candidate. Filter with `contributor_state='US'` for national totals
Contribution receipts by size per candidate. Filter by candidate_id, election_year and/or size
Contribution receipts by state per candidate. Filter by candidate_id and/or election_year
Coverage end date per candidate. Filter by candidate_id and/or election_year
Financial summary per candidate. Filter by candidate_id and/or election_year
Use this endpoint to look up the RAD Analyst for a committee. The mission of the Reports Analysis Division (RAD) is to ensure that campaigns and political committees file timely and accurate reports that fully disclose their financial activities. RAD is responsible for reviewing statements and financial reports filed by political committees participating in federal elections, providing assistance and guidance to the committees to properly file their reports, and for taking appropriate action to ensure compliance with the Federal Election Campaign Act (FECA).
FEC election dates since 1995.
Each report represents the summary information from Form 3, Form 3X and Form 3P. These reports have key statistics that illuminate the financial status of a given committee. Things like cash on hand, debts owed by committee, total receipts, and total disbursements are especially helpful for understanding a committee's financial dealings. By default, this endpoint includes both amended and final versions of each report. To restrict to only the final versions of each report, use `is_amended=false`; to retrieve only reports that have been amended, use `is_amended=true`. Several different reporting structures exist, depending on the type of organization that submits financial information. To see an example of these reporting requirements, look at the summary and detailed summary pages of Form 3, Form 3X, and Form 3P. DISCLAIMER: The field labels contained within this resource are subject to change. We are attempting to succinctly label these fields while conveying clear meaning to ensure accessibility for all users.
This description is for both `/schedules/schedule_a/` and `/schedules/schedule_a/{sub_id}/`. This endpoint provides itemized receipts. Schedule A records describe itemized receipts, including contributions from individuals. If you are interested in contributions from an individual, use the `/schedules/schedule_a/` endpoint. For a more complete description of all Schedule A records visit [About receipts data](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/about-receipts-data/). If you are interested in our "is_individual" methodology visit our [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology/). The `/schedules/schedule_a/` endpoint is not paginated by page number. This endpoint uses keyset pagination to improve query performance and these indices are required to properly page through this large dataset. To request the next page, you should append the values found in the `last_indexes` object from pagination to the URL of your last request as additional parameters. For example, when sorting by `contribution_receipt_date`, you might receive a page of results with the two scenarios of following pagination information: case #1: ``` pagination: { pages: 2152643, per_page: 20, count: 43052850, last_indexes: { last_index: "230880619", last_contribution_receipt_date: "2014-01-01" } } ``` <br/> case #2 (results which include contribution_receipt_date = NULL): ``` pagination: { pages: 2152644, per_page: 20, count: 43052850, last_indexes: { last_index: "230880639", sort_null_only: True } } ``` To fetch the next page of sorted results, append `last_index=230880619` and `last_contribution_receipt_date=2014-01-01` to the URL and when reaching `contribution_receipt_date=NULL`, append `last_index=230880639` and `sort_null_only=True`. We strongly advise paging through these results using sort indices. The default sort is acending by `contribution_receipt_date` (`deprecated`, will be descending). If you do not page using sort indices, some transactions may be unintentionally filtered out. Calls to `/schedules/schedule_a/` may return many records. For large result sets, the record counts found in the pagination object are approximate; you will need to page through the records until no records are returned. To avoid throwing the "out of range" exception on the last page, one recommandation is to use total count and `per_page` to control the traverse loop of results. The `/schedules/schedule_a/{sub_id}/` endpoint returns a single transaction, but it does include a pagination object class. Please ignore the information in that object class.
This endpoint provides itemized individual contributions received by a committee, aggregated by the contributor’s employer name. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
This endpoint provides itemized individual contributions received by a committee, aggregated by the contributor’s occupation. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
This endpoint provides individual contributions received by a committee, aggregated by size: ``` - $200 and under - $200.01 - $499.99 - $500 - $999.99 - $1000 - $1999.99 - $2000 + ``` The $200.00 and under category includes contributions of $200 or less combined with unitemized individual contributions.
This endpoint provides itemized individual contributions received by a committee, aggregated by size of contribution and candidate. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
This endpoint provides itemized individual contributions received by a committee, aggregated by the contributor’s state. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
This endpoint provides itemized individual contributions received by a committee, aggregated by contributor’s state and candidate. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
Itemized individual contributions aggregated by contributor’s state, candidate, committee type and cycle. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
This endpoint provides itemized individual contributions received by a committee, aggregated by contributor’s state, committee type and cycle. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
This endpoint provides itemized individual contributions received by a committee, aggregated by the contributor’s ZIP code. If you are interested in our “is_individual” methodology, review the [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology). Unitemized individual contributions are not included.
Efiling endpoints provide real-time campaign finance data received from electronic filers. Efiling endpoints only contain the most recent four months of data and don't contain the processed and coded data that you can find on other endpoints.
This description is for both `/schedules/schedule_a/` and `/schedules/schedule_a/{sub_id}/`. This endpoint provides itemized receipts. Schedule A records describe itemized receipts, including contributions from individuals. If you are interested in contributions from an individual, use the `/schedules/schedule_a/` endpoint. For a more complete description of all Schedule A records visit [About receipts data](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/about-receipts-data/). If you are interested in our "is_individual" methodology visit our [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology/). The `/schedules/schedule_a/` endpoint is not paginated by page number. This endpoint uses keyset pagination to improve query performance and these indices are required to properly page through this large dataset. To request the next page, you should append the values found in the `last_indexes` object from pagination to the URL of your last request as additional parameters. For example, when sorting by `contribution_receipt_date`, you might receive a page of results with the two scenarios of following pagination information: case #1: ``` pagination: { pages: 2152643, per_page: 20, count: 43052850, last_indexes: { last_index: "230880619", last_contribution_receipt_date: "2014-01-01" } } ``` <br/> case #2 (results which include contribution_receipt_date = NULL): ``` pagination: { pages: 2152644, per_page: 20, count: 43052850, last_indexes: { last_index: "230880639", sort_null_only: True } } ``` To fetch the next page of sorted results, append `last_index=230880619` and `last_contribution_receipt_date=2014-01-01` to the URL and when reaching `contribution_receipt_date=NULL`, append `last_index=230880639` and `sort_null_only=True`. We strongly advise paging through these results using sort indices. The default sort is acending by `contribution_receipt_date` (`deprecated`, will be descending). If you do not page using sort indices, some transactions may be unintentionally filtered out. Calls to `/schedules/schedule_a/` may return many records. For large result sets, the record counts found in the pagination object are approximate; you will need to page through the records until no records are returned. To avoid throwing the "out of range" exception on the last page, one recommandation is to use total count and `per_page` to control the traverse loop of results. The `/schedules/schedule_a/{sub_id}/` endpoint returns a single transaction, but it does include a pagination object class. Please ignore the information in that object class.
Schedule B filings describe itemized disbursements. This data explains how committees and other filers spend their money. These figures are reported as part of forms F3, F3X and F3P. The data is divided in two-year periods, called `two_year_transaction_period`, which is derived from the `report_year` submitted of the corresponding form. If no value is supplied, the results will default to the most recent two-year period that is named after the ending, even-numbered year. Due to the large quantity of Schedule B filings, this endpoint is not paginated by page number. Instead, you can request the next page of results by adding the values in the `last_indexes` object from `pagination` to the URL of your last request. For example, when sorting by `disbursement_date`, you might receive a page of results with the following pagination information: ``` pagination: { pages: 965191, per_page: 20, count: 19303814, last_indexes: { last_index: "230906248", last_disbursement_date: "2014-07-04" } } ``` To fetch the next page of sorted results, append `last_index=230906248` and `last_disbursement_date=2014-07-04` to the URL. We strongly advise paging through these results by using the sort indices (defaults to sort by disbursement date, e.g. `last_disbursement_date`), otherwise some resources may be unintentionally filtered out. This resource uses keyset pagination to improve query performance and these indices are required to properly page through this large dataset. Note: because the Schedule B data includes many records, counts for large result sets are approximate; you will want to page through the records until no records are returned.
Schedule B disbursements aggregated by disbursement purpose category. To avoid double counting, memoed items are not included. Purpose is a combination of transaction codes, category codes and disbursement description. Inspect the `disbursement_purpose` sql function within the migrations for more details.
Schedule B disbursements aggregated by recipient name. To avoid double counting, memoed items are not included.
Schedule B disbursements aggregated by recipient committee ID, if applicable. To avoid double counting, memoed items are not included.
Efiling endpoints provide real-time campaign finance data received from electronic filers. Efiling endpoints only contain the most recent four months of data and don't contain the processed and coded data that you can find on other endpoints.
Schedule B filings describe itemized disbursements. This data explains how committees and other filers spend their money. These figures are reported as part of forms F3, F3X and F3P. The data is divided in two-year periods, called `two_year_transaction_period`, which is derived from the `report_year` submitted of the corresponding form. If no value is supplied, the results will default to the most recent two-year period that is named after the ending, even-numbered year. Due to the large quantity of Schedule B filings, this endpoint is not paginated by page number. Instead, you can request the next page of results by adding the values in the `last_indexes` object from `pagination` to the URL of your last request. For example, when sorting by `disbursement_date`, you might receive a page of results with the following pagination information: ``` pagination: { pages: 965191, per_page: 20, count: 19303814, last_indexes: { last_index: "230906248", last_disbursement_date: "2014-07-04" } } ``` To fetch the next page of sorted results, append `last_index=230906248` and `last_disbursement_date=2014-07-04` to the URL. We strongly advise paging through these results by using the sort indices (defaults to sort by disbursement date, e.g. `last_disbursement_date`), otherwise some resources may be unintentionally filtered out. This resource uses keyset pagination to improve query performance and these indices are required to properly page through this large dataset. Note: because the Schedule B data includes many records, counts for large result sets are approximate; you will want to page through the records until no records are returned.
Schedule C shows all loans, endorsements and loan guarantees a committee receives or makes. The committee continues to report the loan until it is repaid.
Schedule C shows all loans, endorsements and loan guarantees a committee receives or makes. The committee continues to report the loan until it is repaid.
Schedule D, it shows debts and obligations owed to or by the committee that are required to be disclosed.
Schedule D, it shows debts and obligations owed to or by the committee that are required to be disclosed.
Schedule E covers the line item expenditures for independent expenditures. For example, if a super PAC bought ads on TV to oppose a federal candidate, each ad purchase would be recorded here with the expenditure amount, name and id of the candidate, and whether the ad supported or opposed the candidate. An independent expenditure is an expenditure for a communication "expressly advocating the election or defeat of a clearly identified candidate that is not made in cooperation, consultation, or concert with, or at the request or suggestion of, a candidate, a candidate’s authorized committee, or their agents, or a political party or its agents." Aggregates by candidate do not include 24 and 48 hour reports. This ensures we don't double count expenditures and the totals are more accurate. You can still find the information from 24 and 48 hour reports in `/schedule/schedule_e/`. Due to the large quantity of Schedule E filings, this endpoint is not paginated by page number. Instead, you can request the next page of results by adding the values in the `last_indexes` object from `pagination` to the URL of your last request. For example, when sorting by `expenditure_amount`, you might receive a page of results with the following pagination information: ``` "pagination": { "count": 152623, "last_indexes": { "last_index": "3023037", "last_expenditure_amount": -17348.5 }, "per_page": 20, "pages": 7632 } } ``` To fetch the next page of sorted results, append `last_index=3023037` and `last_expenditure_amount=` to the URL. We strongly advise paging through these results by using the sort indices (defaults to sort by disbursement date, e.g. `last_disbursement_date`), otherwise some resources may be unintentionally filtered out. This resource uses keyset pagination to improve query performance and these indices are required to properly page through this large dataset. Note: because the Schedule E data includes many records, counts for large result sets are approximate; you will want to page through the records until no records are returned.
Schedule E receipts aggregated by recipient candidate. To avoid double counting, memoed items are not included.
Efiling endpoints provide real-time campaign finance data received from electronic filers. Efiling endpoints only contain the most recent four months of data and don't contain the processed and coded data that you can find on other endpoints.
Total independent expenditure on supported or opposed candidates by cycle or candidate election year.
Schedule F, it shows all special expenditures a national or state party committee makes in connection with the general election campaigns of federal candidates. These coordinated party expenditures do not count against the contribution limits but are subject to other limits, these limits are detailed in Chapter 7 of the FEC Campaign Guide for Political Party Committees.
Schedule F, it shows all special expenditures a national or state party committee makes in connection with the general election campaigns of federal candidates. These coordinated party expenditures do not count against the contribution limits but are subject to other limits, these limits are detailed in Chapter 7 of the FEC Campaign Guide for Political Party Committees.
State laws and procedures govern elections for state or local offices as well as how candidates appear on election ballots. Contact the appropriate state election office for more information.
Provides cumulative receipt totals by entity type, over a two year cycle. Totals are adjusted to avoid double counting. This is [the sql](https://github.com/fecgov/openFEC/blob/develop/data/migrations/V41__large_aggregates.sql) that creates these calculations.
This endpoint provides information about a committee's Form 3, Form 3X, or Form 3P financial reports, which are aggregated by two-year period. We refer to two-year periods as a `cycle`. The cycle is named after the even-numbered year and includes the year before it. To obtain totals from 2013 and 2014, you would use 2014. In odd-numbered years, the current cycle is the next year — for example, in 2015, the current cycle is 2016. For presidential and Senate candidates, multiple two-year cycles exist between elections.