OpenBB-finance/OpenBB · warning · EmptyDataError

Unknown error while transforming the data.

Error message

Unknown error while transforming the data.

What it means

Raised by FMPRevenueBusinessLineFetch.transform_data when the API returned rows but none of them produced a valid business-line revenue entry, leaving `results` empty. The loop skips every item because each segment value is None or the segment dict has no business-line keys. It is an EmptyDataError, so the OpenBB router surfaces it as 'no data' rather than a crash.

Source

Thrown at openbb_platform/providers/fmp/openbb_fmp/models/revenue_business_line.py:97

            for business_line, revenue_value in segment.items():
                if revenue_value is not None:
                    revenue = int(revenue_value) if revenue_value is not None else None
                    if revenue is not None:
                        results.append(
                            FMPRevenueBusinessLineData.model_validate(
                                {
                                    "period_ending": period_ending,
                                    "fiscal_year": fiscal_year,
                                    "fiscal_period": fiscal_period,
                                    "business_line": business_line.strip(),
                                    "revenue": revenue,
                                }
                            )
                        )

        if not results:
            raise EmptyDataError("Unknown error while transforming the data.")

        return sorted(results, key=lambda x: (x.period_ending or "", x.revenue or 0))

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Verify the symbol actually has segment data by hitting FMP's revenue-product-segment endpoint directly in a browser with the same api_key
  2. Try a different provider for the same router endpoint (e.g. openbb.economy.revenue_business_line(..., provider='fmp') vs the default) to confirm it is FMP-specific
  3. Remove date/period filters so the full available history is requested
  4. Check whether the FMP subscription tier includes the revenue segments endpoint (a related premium message would otherwise appear from response_callback)

Example fix

# before
res = await obb.economy.revenue_business_line(symbol='TSLA', provider='fmp').await_to_list()

# after - guard against empty segment coverage
from openbb_core.provider.utils.errors import EmptyDataError
try:
    res = await obb.economy.revenue_business_line(symbol='TSLA', provider='fmp').await_to_list()
except EmptyDataError:
    res = await obb.economy.revenue_business_line(symbol='TSLA', provider='polygon').await_to_list()
Defensive patterns

Strategy: try-catch

Validate before calling

import requests
resp = requests.get(f"https://financialmodelingprep.com/api/v4/revenue-product-segmentation?symbol={symbol}&period=annual&structure=flat&apikey={key}")
rows = resp.json()
has_segments = bool(rows) and any(any(v is not None for v in r.get('data', {}).values()) for r in rows)

Type guard

def has_business_line_rows(data: list[dict]) -> bool:
    return any(
        any(v is not None for v in item.get("data", {}).values())
        for item in data
    )

Try / catch

from openbb_core.provider.utils.errors import EmptyDataError
try:
    rows = await obb.economy.revenue_business_line(symbol=symbol, provider='fmp').await_to_list()
except EmptyDataError:
    rows = []  # or switch provider / skip symbol

Prevention

When it happens

Trigger: Calling openbb.economy.revenue_business_line(symbol=...) via FMP where the company's revenue-per-segment endpoint returns periods whose 'data' dict is empty or whose segment values are all null; also when the symbol trades on an exchange where FMP does not provide segment reporting.

Common situations: Small/micro-cap or non-US symbols with no segment disclosure in FMP; free-tier API keys that receive the HTTP 200 but with limited historical depth so older periods come back as nulls; querying a period range FMP does not cover for that company.

Related errors


AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14). Data as JSON: /api/errors/4677917ee4732ad0. Report an issue: GitHub.