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
- Verify the symbol actually has segment data by hitting FMP's revenue-product-segment endpoint directly in a browser with the same api_key
- 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
- Remove date/period filters so the full available history is requested
- 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
- Pre-check the FMP segmentation endpoint for non-null segment values before querying
- Build multi-provider fallback chains for segment data
- Treat EmptyDataError as expected for symbols without segment disclosure rather than a failure
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
- The request was returned empty.
- Unknown error while transforming the data.
- No data returned for the given symbols.
- The request was returned empty.
- No data found for the given query -> {query.model_dump()}
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/4677917ee4732ad0.
Report an issue: GitHub.