OpenBB-finance/OpenBB · error · OpenBBError
{messages}
Error message
{messages} What it means
OpenBBError raised when every requested symbol produced a soft-failure message ('Symbol not found' or 'No data found for symbol') and none produced rows. The per-symbol messages collected during gather are aggregated into a single OpenBBError whose payload is the message list, so a multi-symbol market-cap request fails loudly instead of returning an empty frame.
Source
Thrown at openbb_platform/providers/intrinio/openbb_intrinio/models/historical_market_cap.py:131
)
if not response:
msg = f"No data found for symbol: {symbol}"
messages.append(msg)
if response.get("historical_data"):
data = response.get("historical_data", {})
result = [
{"symbol": symbol, **item} for item in data if item.get("value")
]
results.extend(result)
return
await asyncio.gather(*[get_one(symbol) for symbol in symbols])
if messages and not results:
raise OpenBBError(messages)
if messages and results:
for message in messages:
warn(message)
if not results:
raise EmptyDataError("The response was returned empty.")
return results
@staticmethod
def transform_data(
query: IntrinioHistoricalMarketCapQueryParams, data: list[dict], **kwargs: Any
) -> list[IntrinioHistoricalMarketCapData]:
"""Return the transformed data."""
return [
IntrinioHistoricalMarketCapData.model_validate(d)
for d in sorted(data, key=lambda x: x["date"])View on GitHub (pinned to 3e071fcc2c)
Solutions
- Check the messages list inside the error - it names each failing symbol and why.
- Validate each ticker with a quote/profile call before requesting market cap.
- Retry with only the symbols that resolve.
- For partial failures, request symbols individually and skip the ones that warn.
Example fix
# before
res = obb.equity.fundamental.market_cap(symbol='FOO,BAR', provider='intrinio')
# after - per-symbol isolation so good symbols survive
frames = []
for s in ['FOO', 'BAR']:
try:
frames.append(obb.equity.fundamental.market_cap(symbol=s, provider='intrinio').to_df())
except Exception as e:
print(f'skip {s}: {e}') Defensive patterns
Strategy: try-catch
Validate before calling
# validate symbols exist before the batch call
valid = []
for s in symbols:
try:
obb.equity.price.quote(symbol=s, provider='intrinio')
valid.append(s)
except Exception:
pass Try / catch
from openbb_core.provider.exceptions import OpenBBError
try:
res = obb.equity.fundamental.market_cap(symbol=','.join(syms), provider='intrinio')
except OpenBBError as e:
bad = [m for m in str(e) if 'not found' in m] # inspect messages list
good = [s for s in syms if s not in bad]
if good:
res = obb.equity.fundamental.market_cap(symbol=','.join(good), provider='intrinio') Prevention
- Never batch unvalidated tickers into market-cap calls
- Read the aggregated message list to identify bad symbols
- Call symbols individually when partial results matter
When it happens
Trigger: equity/fundamental/market_cap(symbol='BAD1,BAD2', provider='intrinio') where each get_one hits 'Cannot look up this item/identifier combination' (mapped to 'Symbol not found: X') or returns an empty dict ('No data found for symbol: X'), so messages is non-empty and results is empty.
Common situations: Misspelled or delisted tickers in a batch; symbols not in Intrinio's universe; wrong asset class (crypto/forex ticker) passed to an equity endpoint; date range with no published market cap values.
Related errors
- There were no results found for any of the given symbols. ->
- Unexpected response format, expected a dictionary, got {resp
- The response was returned empty.
- Unsupported file format. Please use .json or .env files.
- Failed to get Jupyter URL
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/767c4f23432f2b29.
Report an issue: GitHub.