US Senate Filings API

Lobbying disclosure filings (LD-1, LD-2, LD-203)

OpenAPI Specification

us-senate-filings-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: US Senate Lobbying Disclosure Act (LDA) Clients Filings 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)
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
components:
  schemas:
    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
    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
    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'
    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
    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
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Token-based auth. Format: ''Token YOUR_API_KEY'''