openapi: 3.0.1 info: title: US Senate Lobbying Disclosure Act (LDA) API description: >- The Senate Lobbying Disclosure Act (LDA) REST API provides public access to lobbying filings, registrations, quarterly activity reports (LD-2), and semi-annual contribution reports (LD-203). An optional API key increases the rate limit from 15 to 120 requests per minute. version: "1.0" contact: name: Senate Office of Public Records email: lobby@sec.senate.gov url: https://lda.senate.gov/api/ servers: - url: https://lda.senate.gov/api/v1 security: - ApiKeyAuth: [] - {} tags: - name: Filings description: Lobbying disclosure filings (LD-1, LD-2, LD-203) - name: Registrants description: Lobbying firm and self-employed lobbyist registrations - name: Clients description: Clients on whose behalf lobbying is conducted - name: Lobbyists description: Individual lobbyist records - name: Contributions description: Semi-annual campaign contribution reports (LD-203) - name: Constants description: Reference data — filing types, issue codes, government entities, etc. paths: /filings/: get: tags: - Filings operationId: listFilings summary: List Lobbying Disclosure Filings description: >- Returns a paginated list of lobbying disclosure filings. Supports filtering by filing type, year, period, registrant, and client. parameters: - name: filing_type in: query description: >- Filing type code (e.g., LD1=Registration, LD2=Quarterly Report, MM=Mid-Year Report) schema: type: string - name: filing_year in: query description: Year of the filing schema: type: integer - name: filing_period in: query description: Filing period (e.g., first_quarter, second_quarter, mid_year, year_end) schema: type: string - name: registrant_id in: query description: Filter by registrant ID schema: type: integer - name: client_id in: query description: Filter by client ID schema: type: integer - name: registrant_name in: query description: Filter by registrant name (partial match) schema: type: string - name: client_name in: query description: Filter by client name (partial match) schema: type: string - name: lobbyist_name in: query description: Filter by lobbyist name schema: type: string - name: issue_code in: query description: Filter by lobbying issue code (e.g., TAX, HCR, DEF) schema: type: string - name: dt_posted in: query description: Filter by date posted (ISO 8601 date) schema: type: string format: date - name: page in: query description: Page number for pagination schema: type: integer default: 1 - name: limit in: query description: Number of results per page (default 25, max 25) schema: type: integer default: 25 - name: format in: query description: Response format schema: type: string enum: [json, xml] default: json responses: '200': description: Paginated list of filings content: application/json: schema: $ref: '#/components/schemas/FilingListResponse' '401': description: Unauthorized '429': description: Rate limit exceeded /filings/{filing_uuid}/: get: tags: - Filings operationId: getFiling summary: Get Lobbying Filing by UUID description: Retrieve a specific lobbying disclosure filing by its UUID. parameters: - name: filing_uuid in: path required: true description: Unique identifier (UUID) of the filing schema: type: string format: uuid - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Filing details content: application/json: schema: $ref: '#/components/schemas/Filing' '404': description: Filing not found /registrants/: get: tags: - Registrants operationId: listRegistrants summary: List Lobbying Registrants description: Returns a paginated list of lobbying registrants (firms and individuals). parameters: - name: name in: query description: Filter by registrant name (partial match) schema: type: string - name: page in: query schema: type: integer default: 1 - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Paginated list of registrants content: application/json: schema: $ref: '#/components/schemas/RegistrantListResponse' /registrants/{id}/: get: tags: - Registrants operationId: getRegistrant summary: Get Registrant by ID description: Retrieve a specific lobbying registrant by ID. parameters: - name: id in: path required: true description: Registrant ID schema: type: integer - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Registrant details content: application/json: schema: $ref: '#/components/schemas/Registrant' '404': description: Not found /clients/: get: tags: - Clients operationId: listClients summary: List Lobbying Clients description: Returns a paginated list of clients on whose behalf lobbying is conducted. parameters: - name: name in: query description: Filter by client name (partial match) schema: type: string - name: page in: query schema: type: integer default: 1 - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Paginated list of clients content: application/json: schema: $ref: '#/components/schemas/ClientListResponse' /clients/{id}/: get: tags: - Clients operationId: getClient summary: Get Client by ID description: Retrieve a specific lobbying client by ID. parameters: - name: id in: path required: true description: Client ID schema: type: integer - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Client details content: application/json: schema: $ref: '#/components/schemas/Client' '404': description: Not found /lobbyists/: get: tags: - Lobbyists operationId: listLobbyists summary: List Lobbyists description: Returns a paginated list of individual lobbyist records. parameters: - name: name in: query description: Filter by lobbyist name (partial match) schema: type: string - name: page in: query schema: type: integer default: 1 - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Paginated list of lobbyists content: application/json: schema: $ref: '#/components/schemas/LobbyistListResponse' /lobbyists/{id}/: get: tags: - Lobbyists operationId: getLobbyist summary: Get Lobbyist by ID description: Retrieve a specific lobbyist record by ID. parameters: - name: id in: path required: true description: Lobbyist ID schema: type: integer - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Lobbyist details content: application/json: schema: $ref: '#/components/schemas/Lobbyist' '404': description: Not found /contributions/: get: tags: - Contributions operationId: listContributions summary: List Contribution Reports (LD-203) description: Returns a paginated list of semi-annual campaign contribution reports. parameters: - name: registrant_name in: query description: Filter by registrant name schema: type: string - name: filing_year in: query schema: type: integer - name: filing_period in: query schema: type: string - name: page in: query schema: type: integer default: 1 - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Paginated list of contribution reports content: application/json: schema: type: object /constants/filing/filingtypes/: get: tags: - Constants operationId: getFilingTypes summary: Get Filing Type Codes description: Returns all LDA filing type codes and their descriptions. parameters: - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Filing type codes content: application/json: schema: type: array items: type: object /constants/filing/lobbyingactivityissues/: get: tags: - Constants operationId: getLobbyingIssues summary: Get Lobbying Activity Issue Codes description: Returns all issue area codes used to categorize lobbying activities. parameters: - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Issue codes list content: application/json: schema: type: array items: type: object /constants/filing/governmententities/: get: tags: - Constants operationId: getGovernmentEntities summary: Get Government Entity Codes description: Returns all government entity codes for lobbied agencies and bodies. parameters: - name: format in: query schema: type: string enum: [json] default: json responses: '200': description: Government entity codes content: application/json: schema: type: array items: type: object /constants/general/countries/: get: tags: - Constants operationId: getCountries summary: Get Country Codes description: Returns country code reference data. security: [] responses: '200': description: Country codes content: application/json: schema: type: array items: type: object /constants/general/states/: get: tags: - Constants operationId: getStates summary: Get US State Codes description: Returns US state code reference data. security: [] responses: '200': description: State codes content: application/json: schema: type: array items: type: object components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization description: "Token-based auth. Format: 'Token YOUR_API_KEY'" schemas: FilingListResponse: type: object properties: count: type: integer description: Total number of matching filings next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Filing' Filing: type: object description: A lobbying disclosure filing (LD-1, LD-2, or LD-203) properties: url: type: string format: uri filing_uuid: type: string format: uuid description: Unique identifier for this filing filing_type: type: string description: Filing type code (LD1, LD2, MM, etc.) filing_type_display: type: string description: Human-readable filing type filing_year: type: integer filing_period: type: string filing_period_display: type: string filing_document_url: type: string format: uri description: URL to the PDF version of the filing income: type: number nullable: true description: Reported lobbying income (for lobbying firms) expenses: type: number nullable: true description: Reported lobbying expenses (for self-employed lobbyists) dt_posted: type: string format: date-time registrant: $ref: '#/components/schemas/Registrant' client: $ref: '#/components/schemas/Client' lobbying_activities: type: array items: $ref: '#/components/schemas/LobbyingActivity' RegistrantListResponse: type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Registrant' Registrant: type: object description: A lobbying firm or self-employed lobbyist registration properties: id: type: integer url: type: string format: uri house_registrant_id: type: integer name: type: string description: Name of the lobbying firm or individual description: type: string nullable: true address_1: type: string nullable: true city: type: string nullable: true state: type: string nullable: true zip: type: string nullable: true country: type: string contact_name: type: string contact_telephone: type: string dt_updated: type: string format: date-time ClientListResponse: type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Client' Client: type: object description: A client on whose behalf lobbying activities are conducted properties: id: type: integer url: type: string format: uri client_id: type: integer name: type: string description: Name of the client organization general_description: type: string nullable: true client_government_entity: type: boolean nullable: true state: type: string nullable: true country: type: string effective_date: type: string format: date LobbyistListResponse: type: object properties: count: type: integer next: type: string format: uri nullable: true previous: type: string format: uri nullable: true results: type: array items: $ref: '#/components/schemas/Lobbyist' Lobbyist: type: object description: An individual lobbyist properties: id: type: integer url: type: string format: uri prefix: type: string nullable: true first_name: type: string last_name: type: string suffix: type: string nullable: true covered_position: type: string nullable: true description: Former government position if covered official is_active_lobbyist: type: boolean LobbyingActivity: type: object description: A lobbying activity record within a filing properties: general_issue_code: type: string description: Issue area code (e.g., TAX, HCR, DEF) general_issue_code_display: type: string description: type: string nullable: true description: Specific issues lobbied on government_entities: type: array items: type: object properties: name: type: string description: Government bodies lobbied lobbyists: type: array items: type: object properties: lobbyist: $ref: '#/components/schemas/Lobbyist' is_new: type: boolean