OpenBB-finance/OpenBB · error · OpenBBError

Symbol {query.symbol} not found in available transcripts. A

Error message

Symbol {query.symbol} not found in available transcripts.
 Available symbols include: {', '.join(sorted(avail_df['symbol'].unique().tolist()))}

What it means

Raised as OpenBBError (wrapping ValueError) in FMPEarningsCallTranscript.a_url: before fetching, the provider downloads FMP's list of available transcript symbols and checks that query.symbol.upper() is in it. If not, it fails fast with the full sorted list of valid symbols embedded in the message.

Source

Thrown at openbb_platform/providers/fmp/openbb_fmp/models/earnings_call_transcript.py:98

        **kwargs: Any,
    ) -> dict:
        """Return the raw data from the FMP endpoint."""
        # pylint: disable=import-outside-toplevel
        import warnings  # noqa
        from openbb_fmp.utils.helpers import (
            get_available_transcript_symbols,
            get_data_one,
            get_transcript_dates_for_symbol,
        )
        from pandas import DataFrame

        api_key = credentials.get("fmp_api_key") if credentials else ""

        available_symbols = get_available_transcript_symbols(api_key=api_key)
        avail_df = DataFrame(available_symbols)

        if query.symbol.upper() not in avail_df["symbol"].values:
            raise OpenBBError(
                ValueError(
                    f"Symbol {query.symbol} not found in available transcripts."
                    + f"\n Available symbols include: {', '.join(sorted(avail_df['symbol'].unique().tolist()))}"
                )
            )
        symbol_transcripts = get_transcript_dates_for_symbol(
            query.symbol.upper(), api_key=api_key
        )

        df_dates = DataFrame(symbol_transcripts).sort_values(by="date", ascending=False)
        year = df_dates.iloc[0].fiscalYear

        if query.year and query.year not in df_dates.fiscalYear.values:
            warnings.warn(
                f"Year {query.year} not found in available transcripts for {query.symbol}."
                + f" Using latest year {year} instead."
            )

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Read the error message: it literally lists every valid symbol - pick the correct one from it
  2. Check the share class (e.g. use GOOG or GOOGL exactly as FMP lists it) and current official ticker
  3. Verify the symbol exists via obb.equity.profile before requesting a transcript
  4. Catch OpenBBError and branch on 'not found in available transcripts' to give a targeted message

Example fix

# before
res = obb.equity.earnings_transcript(symbol='GOOGLE', provider='fmp')  # invalid share class

# after
res = obb.equity.earnings_transcript(symbol='GOOGL', provider='fmp')
Defensive patterns

Strategy: validation

Validate before calling

# Validate the symbol exists before requesting a transcript
profile = obb.equity.profile(symbol=sym, provider='fmp').results
if not profile:
    raise ValueError(f'{sym} unknown to FMP; check ticker/share class')

Type guard

null

Try / catch

from openbb_core.provider.utils.errors import OpenBBError
try:
    t = await obb.equity.earnings_transcript.async_(symbol=sym, provider='fmp')
except OpenBBError as e:
    if 'not found in available transcripts' in str(e):
        # e lists all valid symbols; surface or fuzzy-match one
        raise ValueError(f'{sym} has no transcripts on FMP') from e
    raise

Prevention

When it happens

Trigger: Calling obb.equity.earnings_transcript(symbol=...) with a symbol that has no transcripts on FMP: delisted tickers, OTC symbols FMP does not cover, wrong share class (GOOGL vs GOOG), or a plain typo. The check is exact-match on the uppercased symbol.

Common situations: Delisted or recently IPO'd companies with no earnings call yet, ticker changes/renames not followed by the caller, share-class confusion, typos in dynamically-built symbol strings.

Related errors


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