financialfilings-com Sources API

The original sources of filings.

Operations 2

GET /sources/ List Data Sources #
GET /sources/{id}/ Retrieve Data Source #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/financialfilings-com:financialfilings-com-sources-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

financialfilings-com-sources-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FinancialFilings Sources API
  version: 1.4.0
  description: 'Filings and company data for listed companies across the G20 and Europe. Send your API key in the `X-API-Key` header on every request. New here? Start with the quickstart.


    **Credits.** Every call costs credits, and each endpoint below shows its price. `X-Credits-Charged` on the response says what a call cost, and `GET /usage/` shows the month so far. A free account gets a monthly allowance. Webhooks are an Enterprise feature. Pricing: https://financialfilings.com/developers/


    **Rate limits.** Responses carry `X-RateLimit-Burst-Limit` (a rate such as `50/second`), `X-RateLimit-Monthly-Limit`, `X-RateLimit-Monthly-Remaining` and `X-RateLimit-Monthly-Unit` (`requests` or `credits`). All four are strings and can be non-numeric (for example `Unlimited`); the last two are left out when they don''t apply.'
  termsOfService: https://financialfilings.com/api-terms/
  contact:
    name: API Support
    url: https://financialfilings.com/
    email: api@financialfilings.com
servers:
- url: https://api.financialreports.eu
  description: Production API Gateway
tags:
- name: Sources
  description: The original sources of filings.
paths:
  /sources/:
    get:
      operationId: sources_list
      description: '**Cost:** 1 credit per request.


        ---

        Retrieve a paginated list of all available data sources.'
      summary: List Data Sources
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      tags:
      - Sources
      security:
      - ApiKeyAuth: []
      - CognitoJWT: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedSourceList'
              examples:
                Success:
                  value:
                    count: 123
                    next: http://api.example.org/accounts/?page=4
                    previous: http://api.example.org/accounts/?page=2
                    results:
                    - - id: 38
                        name: Official Filing Authority - DE
                        url: null
                        description: Official regulatory authority covering DE.
                        has_named_speakers: null
          description: Success
        '403':
          description: Missing or invalid API key, or the plan does not include this endpoint.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                MissingCredentials:
                  summary: No X-API-Key header
                  value:
                    detail: Authentication credentials were not provided.
                    type: authentication_required
                    resolution: 'Send your API key in the X-API-Key request header, e.g. curl -H "X-API-Key: <your key>" https://api.financialreports.eu/filings/ . A browser address bar never sends this header. No key yet? Get a free one at https://financialfilings.com/accounts/api-dashboard/ .'
                    dashboard_url: https://financialfilings.com/accounts/api-dashboard/
                InvalidKey:
                  summary: Unknown or inactive API key
                  value:
                    detail: Invalid or inactive API key.
                PlanDoesNotPermit:
                  summary: Plan does not include this endpoint
                  value:
                    detail: Your current plan does not permit access. Requires a plan that includes **structured financials**.
        '429':
          description: Rate limit, plan quota or spend cap reached.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
              examples:
                BurstLimit:
                  summary: Too many requests per minute
                  value:
                    error: Too Many Requests
                    detail: Request was throttled. Expected available in 12 seconds.
                    retry_after_seconds: 12
                    scope: burst
                    type: burst_limit_exceeded
                    message: 'Rate limit reached: 120 requests per minute.'
                    resolution: 'Retry after 12 seconds (Retry-After header). Pay-as-you-go raises this to 50/sec: https://financialfilings.com/accounts/payg/'
                    rate_limit: 120/minute
                    payg_url: https://financialfilings.com/accounts/payg/
  /sources/{id}/:
    get:
      operationId: sources_retrieve
      description: '**Cost:** 1 credit per request.


        ---

        Retrieve details for a specific data source by its ID.'
      summary: Retrieve Data Source
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this source.
        required: true
      tags:
      - Sources
      security:
      - ApiKeyAuth: []
      - CognitoJWT: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Source'
              examples:
                Success:
                  value:
                    id: 38
                    name: Official Filing Authority - DE
                    url: null
                    description: Official regulatory authority covering DE.
                    has_named_speakers: null
          description: Success
        '403':
          description: Missing or invalid API key, or the plan does not include this endpoint.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetail'
              examples:
                MissingCredentials:
                  summary: No X-API-Key header
                  value:
                    detail: Authentication credentials were not provided.
                    type: authentication_required
                    resolution: 'Send your API key in the X-API-Key request header, e.g. curl -H "X-API-Key: <your key>" https://api.financialreports.eu/filings/ . A browser address bar never sends this header. No key yet? Get a free one at https://financialfilings.com/accounts/api-dashboard/ .'
                    dashboard_url: https://financialfilings.com/accounts/api-dashboard/
                InvalidKey:
                  summary: Unknown or inactive API key
                  value:
                    detail: Invalid or inactive API key.
                PlanDoesNotPermit:
                  summary: Plan does not include this endpoint
                  value:
                    detail: Your current plan does not permit access. Requires a plan that includes **structured financials**.
        '429':
          description: Rate limit, plan quota or spend cap reached.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
              examples:
                BurstLimit:
                  summary: Too many requests per minute
                  value:
                    error: Too Many Requests
                    detail: Request was throttled. Expected available in 12 seconds.
                    retry_after_seconds: 12
                    scope: burst
                    type: burst_limit_exceeded
                    message: 'Rate limit reached: 120 requests per minute.'
                    resolution: 'Retry after 12 seconds (Retry-After header). Pay-as-you-go raises this to 50/sec: https://financialfilings.com/accounts/payg/'
                    rate_limit: 120/minute
                    payg_url: https://financialfilings.com/accounts/payg/
components:
  schemas:
    RateLimitError:
      type: object
      description: Body of a 429 response. The `Retry-After` header carries the same wait as `retry_after_seconds`. Only `detail` is always present.
      properties:
        detail:
          type: string
          description: A human-readable message describing the error.
        error:
          type: string
          description: Always `Too Many Requests`.
        retry_after_seconds:
          type:
          - integer
          - 'null'
          description: Seconds until the request may be retried, when known.
        scope:
          type:
          - string
          - 'null'
          description: Which limit was hit, e.g. `burst`, `quota` or `payg_velocity`.
        type:
          type: string
          description: Machine-readable error code, e.g. `burst_limit_exceeded`, `quota_limit_exceeded`, `daily_spend_cap_reached` or `monthly_spend_ceiling_reached`.
        message:
          type: string
          description: A human-readable explanation of the limit.
        resolution:
          type: string
          description: A human-readable hint on what to do next.
        upgrade_url:
          type: string
          description: 'Where to upgrade: the pay-as-you-go card page for free accounts, else the plans page (quota errors).'
        limit:
          type: integer
          description: The plan allowance that was used up (quota errors).
        interval:
          type: string
          description: '`monthly` or `annual` (quota errors).'
        resets_on:
          type: string
          format: date
          description: UTC date the allowance resets (quota errors).
        rate_limit:
          type: string
          description: The per-minute limit that refused the request, e.g. `120/minute` (burst errors).
        payg_url:
          type: string
          description: Where to enable pay-as-you-go (quota and burst errors, when it applies).
        dashboard_url:
          type: string
          description: Where to see current spend (spend-cap and spend-ceiling errors).
        contact_url:
          type: string
          description: Where to ask for a higher limit (spend-cap and spend-ceiling errors).
      required:
      - detail
    Source:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: Unique identifier for the source. Filter filings with `?source=<id>`.
        name:
          type: string
          readOnly: true
          description: 'Generic label identifying the regional authority for this data source. Not unique: several sources can share a label, so use `id` to tell them apart.'
        url:
          type:
          - string
          - 'null'
          format: uri
          readOnly: true
          description: Homepage URL for the data source, when available.
        description:
          type: string
          readOnly: true
          description: Description of the data source.
        has_named_speakers:
          type:
          - boolean
          - 'null'
          readOnly: true
          description: 'True if this source''s call transcripts are confirmed to name each speaker (name, title, affiliation), false if they are confirmed to use generic labels such as ''Speaker 1'', null if not yet measured. Treat null as unknown, not as false: an unmeasured source is not the same claim as a confirmed-generic one. Not meaningful for sources without transcripts.'
      required:
      - description
      - has_named_speakers
      - id
      - name
      - url
    ErrorDetail:
      type: object
      properties:
        detail:
          type: string
          description: A human-readable message describing the error.
        type:
          type: string
          description: Machine-readable error code, e.g. `authentication_required`. Present on some errors only.
        resolution:
          type: string
          description: A human-readable hint on how to fix the request. Present on some errors only.
        error_type:
          type: string
          description: Machine-readable error code on validation errors. Present on some errors only.
      required:
      - detail
    PaginatedSourceList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
          description: 'Total matching results. Exact for cheap queries, an estimate on broad or expensive ones. Do not use it to decide when to stop: follow `next` until it is null.'
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/Source'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: 'Server-to-server API key authentication. Provide your key in the `X-API-Key` request header. Keys can be generated and rotated from your account dashboard: https://financialfilings.com/profile/'
    CognitoJWT:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'AWS Cognito-issued JWT access token. Provide the token in the `Authorization` header as: `Authorization: Bearer <access_token>`. Tokens are issued via the Cognito hosted UI or the OAuth2 authorization code flow at `https://auth.financialreports.eu`.'