financialfilings-com Financial Data API

Standardized income statement, balance sheet and cash flow data, and the dictionary of line items.

Operations 2

GET /line-item-definitions/ List Line Item Definitions #
GET /line-item-definitions/{code}/ Retrieve Line Item Definition #

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-financial-data-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-financial-data-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: FinancialFilings Financial Data 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: Financial Data
  description: Standardized income statement, balance sheet and cash flow data, and the dictionary of line items.
paths:
  /line-item-definitions/:
    get:
      operationId: line_item_definitions_list
      description: '**Cost:** 1 credit per request.


        ---

        Every line item a financial statement can contain. `depth` and `parent_code` give the statement hierarchy.


        `templates` lists the company types a line item fits (`industrial`, `bank`, `insurer`); filter with `?template=bank`. Industrial-only items still appear for banks and insurers, but mean something different there.


        Some codes come only from a filing''s XBRL (`goodwill`, `consolidated_net_income`, `total_debt_incl_leases`, `debt_to_equity` and 30 others), so a filing without XBRL never has them.'
      summary: List Line Item Definitions
      parameters:
      - in: query
        name: depth
        schema:
          type: integer
        description: Filter by hierarchy depth (0 = top-level, 1 = component, 2 = sub-component).
      - 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
      - in: query
        name: parent_code
        schema:
          type: string
        description: Filter by parent line item code (e.g. 'gross_profit' returns its children).
      - name: search
        required: false
        in: query
        description: A search term.
        schema:
          type: string
      - in: query
        name: statement_type
        schema:
          type: string
          enum:
          - BS
          - CFS
          - IS
          - SUP
        description: 'Filter by statement type (IS, BS, CFS, SUP).


          * `IS` - Income Statement

          * `BS` - Balance Sheet

          * `CFS` - Cash Flow Statement

          * `SUP` - Supplemental / Ratio'
      - in: query
        name: template
        schema:
          type: string
          enum:
          - bank
          - industrial
          - insurer
        description: 'Filter to the line items meaningful for a KPI template (industrial, bank, insurer).


          * `industrial` - industrial

          * `bank` - bank

          * `insurer` - insurer'
      tags:
      - Financial Data
      security:
      - ApiKeyAuth: []
      - CognitoJWT: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedLineItemDefinitionList'
              examples:
                Success:
                  value:
                    count: 123
                    next: http://api.example.org/accounts/?page=4
                    previous: http://api.example.org/accounts/?page=2
                    results:
                    - - code: revenue
                        name: Total Revenue
                        statement_type: IS
                        statement_type_display: Income Statement
                        depth: 0
                        parent_code: null
                        sort_order: 10
                        category: ''
                        description: ''
                        aliases: []
                        templates:
                        - industrial
          description: ''
        '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/
  /line-item-definitions/{code}/:
    get:
      operationId: line_item_definitions_retrieve
      description: '**Cost:** 1 credit per request.


        ---

        One line item definition by its code.'
      summary: Retrieve Line Item Definition
      parameters:
      - in: path
        name: code
        schema:
          type: string
          pattern: ^[^/]+$
        required: true
      tags:
      - Financial Data
      security:
      - ApiKeyAuth: []
      - CognitoJWT: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LineItemDefinition'
              examples:
                Success:
                  value:
                    code: revenue
                    name: Total Revenue
                    statement_type: IS
                    statement_type_display: Income Statement
                    depth: 0
                    parent_code: null
                    sort_order: 10
                    category: ''
                    description: ''
                    aliases: []
                    templates:
                    - industrial
          description: ''
        '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:
    PaginatedLineItemDefinitionList:
      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/LineItemDefinition'
    LineItemDefinition:
      type: object
      properties:
        code:
          type: string
          description: Stable machine code, e.g. `revenue`, `total_assets`. A code is never renamed; a retired code is replaced by a new one and drops out of this list.
          maxLength: 80
        name:
          type: string
          description: Human display name, e.g. 'Total Revenue'.
          maxLength: 200
        statement_type:
          $ref: '#/components/schemas/StatementTypeEnum'
        statement_type_display:
          type: string
          description: Human-readable statement type.
        depth:
          type: integer
          maximum: 32767
          minimum: 0
          description: 'Hierarchy depth: 0 = top-level total/heading, 1 = component of a parent, 2 = sub-component.'
        parent_code:
          type:
          - string
          - 'null'
          description: Code of the parent line item in the hierarchy, or null for top-level items.
        sort_order:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Display order within (statement_type, category).
        category:
          type: string
          description: Optional grouping within a statement (e.g. 'Operating Expenses').
          maxLength: 80
        description:
          type: string
          description: Definition of the line item.
        aliases:
          type: array
          items:
            type: string
          readOnly: true
          description: Alternative labels this line item may appear under in source filings.
        templates:
          type: array
          items:
            type: string
          readOnly: true
          description: 'KPI templates this line item is meaningful for: `industrial`, `bank`, `insurer`. Industrial-only items (gross profit, current assets, ...) are still served for banks and insurers but do not mean the same thing there. A company''s template is the `template` field of its financials.'
      required:
      - aliases
      - code
      - name
      - statement_type
      - statement_type_display
      - templates
    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
    StatementTypeEnum:
      enum:
      - IS
      - BS
      - CFS
      - SUP
      type: string
      description: '* `IS` - Income Statement

        * `BS` - Balance Sheet

        * `CFS` - Cash Flow Statement

        * `SUP` - Supplemental / Ratio'
    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
  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`.'