OpenBB-finance/OpenBB · warning · EmptyDataError
No results were found. -> {query.symbol}
Error message
No results were found. -> {query.symbol} What it means
EmptyDataError raised in IntrinioForwardEbitdaEstimatesFetcher on the multi-symbol path: after asyncio.gather of get_one(symbol) for each symbol, none appended to 'results' (each miss only emitted a warning 'Symbol Error: No data found for <symbol>'). The message lists the full requested symbol string.
Source
Thrown at openbb_platform/providers/intrinio/openbb_intrinio/models/forward_ebitda_estimates.py:130
url = f"{BASE_URL}&identifier={symbol}"
url = url + f"&{query_str}" if query_str else url
data = await amake_request(
url, response_callback=response_callback, **kwargs
)
consensus = (
data.get("ebitda_consensus")
if isinstance(data, dict) and "ebitda_consensus" in data
else []
)
if not data or not consensus:
warn(f"Symbol Error: No data found for {symbol}")
if consensus:
results.extend(consensus)
if symbols:
await asyncio.gather(*[get_one(symbol) for symbol in symbols])
if not results:
raise EmptyDataError(f"No results were found. -> {query.symbol}")
return results
async def fetch_callback(response, session):
"""Use callback for pagination."""
data = await response.json()
error = data.get("error", None)
if error:
message = data.get("message", "")
if "api key" in message.lower():
raise UnauthorizedError(
f"Unauthorized Intrinio request -> {message}"
)
raise OpenBBError(f"Error: {error} -> {message}")
estimates = data.get("ebitda_consensus", []) # type: ignore
if estimates and len(estimates) > 0:
results.extend(estimates)
while data.get("next_page"): # type: ignoreView on GitHub (pinned to 3e071fcc2c)
Solutions
- Check warnings output — each missed symbol is individually named there
- Use symbols with analyst coverage (large caps like AAPL, MSFT) — verify coverage via obb.equity.estimates endpoints or Intrinio's docs
- Catch EmptyDataError and mark these symbols as 'no coverage' in your pipeline instead of retrying
Defensive patterns
Strategy: try-catch
Validate before calling
LARGE_CAPS_WITH_COVERAGE = {"AAPL", "MSFT", "GOOGL"} # seed empirically
def has_estimates_coverage(symbol: str) -> bool:
return symbol.upper() in LARGE_CAPS_WITH_COVERAGE Type guard
from openbb_core.provider.utils.errors import EmptyDataError
Try / catch
import warnings
from openbb_core.provider.utils.errors import EmptyDataError
with warnings.catch_warnings(record=True) as caught:
warnings.simplefilter("always")
try:
res = await obb.equity.estimates.ebitda(provider="intrinio", symbol=syms)
except EmptyDataError:
missing = [str(w.message) for w in caught] # names each uncovered symbol
mark_uncovered(missing) Prevention
- Record warnings — per-symbol misses are only warnings
- Track which symbols lack analyst coverage instead of retrying them
- Batch with at least one known-covered symbol when testing
When it happens
Trigger: Requesting forward EBITDA consensus for symbols that Intrinio's analyst-estimates product has no coverage for — typical for small/micro caps, non-US listings, or tickers where 'ebitda_consensus' is absent from the response dict. Only fires when ALL requested symbols missed (per-symbol misses just warn).
Common situations: Screeners feeding micro-cap tickers into estimates endpoints; tickers formatted for other vendors (dots/suffixes) that Intrinio doesn't resolve; warnings suppressed so the individual 'Symbol Error' notices were never seen.
Related errors
- The request was successful but was returned empty.
- The request was successful but was returned empty.
- There were no results found for any of the given symbols. ->
- The request was successful but was returned empty.
- The request was successful but was returned empty.
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/65cc6812407fe806.
Report an issue: GitHub.