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

  1. Confirm your FMP plan includes real-time quotes (free keys often get empty arrays here)
  2. Read the per-symbol warnings to identify which tickers failed; test a known-good ticker like AAPL alone
  3. Refresh the symbol list (delisted tickers never return quotes)
  4. 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

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


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