OpenBB-finance/OpenBB · warning · EmptyDataError
No data found for the given symbols.
Error message
No data found for the given symbols.
What it means
Raised as EmptyDataError by FMPEquityQuote.a_url: quotes are fetched per symbol; each missing symbol only warns ('Symbol Error: No data found for X'). The error is raised only when the aggregated results list is empty, i.e. every requested symbol returned no quote rows.
Source
Thrown at openbb_platform/providers/fmp/openbb_fmp/models/equity_quote.py:112
base_url = "https://financialmodelingprep.com/stable/quote?"
symbols = query.symbol.split(",")
results: list = []
async def get_one(symbol):
"""Get data for one symbol."""
url = f"{base_url}symbol={symbol}&apikey={api_key}"
result = await amake_request(
url, response_callback=response_callback, **kwargs
)
if not result or len(result) == 0:
warnings.warn(f"Symbol Error: No data found for {symbol}")
if result and len(result) > 0:
results.extend(result)
await asyncio.gather(*[get_one(s) for s in symbols])
if not results:
raise EmptyDataError("No data found for the given symbols.")
return sorted(
results,
key=(lambda item: (symbols.index(item.get("symbol", len(symbols))))),
)
@staticmethod
def transform_data(
query: FMPEquityQuoteQueryParams, data: list[dict], **kwargs: Any
) -> list[FMPEquityQuoteData]:
"""Return the transformed data."""
return [FMPEquityQuoteData.model_validate(d) for d in data]
View on GitHub (pinned to 3e071fcc2c)
Solutions
- Confirm your FMP plan includes real-time quotes (free keys often get empty arrays here)
- Read the per-symbol warnings to identify which tickers failed; test a known-good ticker like AAPL alone
- Refresh the symbol list (delisted tickers never return quotes)
- Catch EmptyDataError and skip or fall back to another provider for the batch
Example fix
# before
quotes = obb.equity.quote(symbol='XYZPDQ', provider='fmp')
# after
from openbb_core.provider.utils.errors import EmptyDataError
try:
quotes = obb.equity.quote(symbol='AAPL,MSFT', provider='fmp')
except EmptyDataError:
quotes = obb.equity.quote(symbol='AAPL,MSFT', provider='yfinance') Defensive patterns
Strategy: try-catch
Validate before calling
# probe plan capability once with a liquid ticker
probe = obb.equity.quote(symbol='AAPL', provider='fmp').results
if not probe:
raise RuntimeError('FMP key/plan returns no quotes; check subscription tier') Type guard
null
Try / catch
from openbb_core.provider.utils.errors import EmptyDataError
try:
quotes = await obb.equity.quote.async_(symbol=','.join(symbols), provider='fmp')
except EmptyDataError:
quotes = await obb.equity.quote.async_(symbol=','.join(symbols), provider='yfinance') Prevention
- Confirm the FMP plan includes real-time quotes before relying on this endpoint
- Prune delisted tickers from watchlists periodically
- Use a fallback provider chain for quote data
When it happens
Trigger: Calling obb.equity.quote(symbol=...) where all symbols are unknown/delisted on FMP, or the API key/plan returns empty for every per-symbol request.
Common situations: Real-time quote endpoints requiring a paid FMP tier while the key is free-tier (each call returns empty, not an error), bulk symbol lists with stale tickers, market data feed outages.
Related errors
- No data returned from FMP for the given query.
- No data found for the given symbols.
- No data found for the given symbols.
- No data returned for the given symbols.
- The request was returned empty.
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/3e86cf80b9239250.
Report an issue: GitHub.