OpenBB-finance/OpenBB · error · OpenBBError

No transcript found for {query.symbol} in {year} Q{quarter}.

Error message

No transcript found for {query.symbol} in {year} Q{quarter}. 
 Latest available transcript is {df_dates.iloc[0].fiscalYear} Q{df_dates.iloc[0].quarter}.

What it means

Raised as OpenBBError in FMPEarningsCallTranscript.a_url: the URL for the requested year/quarter was built and get_data_one was called, but FMP returned no record, so get_data_one raised ValueError and the provider re-raised with context naming the latest available fiscalYear/quarter for that symbol.

Source

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

        if (
            query.quarter
            and query.quarter
            not in df_dates.query("fiscalYear == @year").quarter.values
        ):
            warnings.warn(
                f"Quarter {query.quarter} not found in available transcripts for {query.symbol} in {year}."
                + f" Using latest quarter q{df_dates.query('fiscalYear == @year').iloc[0].quarter} instead."
            )

        url = (
            "https://financialmodelingprep.com/stable/earning-call-transcript?symbol="
            + f"{query.symbol.upper()}&year={year}&quarter={quarter}&apikey={api_key}"
        )

        try:
            return await get_data_one(url, **kwargs)
        except ValueError as e:
            raise OpenBBError(
                f"No transcript found for {query.symbol} in {year} Q{quarter}"
                f". \n Latest available transcript is {df_dates.iloc[0].fiscalYear} Q{df_dates.iloc[0].quarter}."
            ) from e

    @staticmethod
    def transform_data(
        query: FMPEarningsCallTranscriptQueryParams, data: dict, **kwargs: Any
    ) -> FMPEarningsCallTranscriptData:
        """Return the transformed data."""
        if not data:
            raise OpenBBError(
                ValueError(
                    f"No data found for {query.symbol} for year {query.year} and period {query.quarter}."
                )
            )
        transcript = data.get("content", "")

        output_lines: list = []

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Use the latest period named in the error message itself (it tells you the most recent available fiscalYear and quarter)
  2. Remember FMP keys on fiscal year/quarter, not calendar dates - adjust for companies with non-calendar fiscal years
  3. If year is omitted the code defaults to the latest fiscal year; omit quarter too to auto-pick the latest available quarter
  4. Catch OpenBBError and retry once with the latest period parsed from the message

Example fix

# before
res = obb.equity.earnings_transcript(symbol='AAPL', year=2026, quarter=3, provider='fmp')  # not yet published

# after
res = obb.equity.earnings_transcript(symbol='AAPL', year=2025, quarter=2, provider='fmp')  # latest available
Defensive patterns

Strategy: fallback

Validate before calling

null

Type guard

null

Try / catch

from openbb_core.provider.utils.errors import OpenBBError
import re
try:
    t = await obb.equity.earnings_transcript.async_(symbol=sym, year=y, quarter=q, provider='fmp')
except OpenBBError as e:
    m = re.search(r'Latest available transcript is (\d+) Q(\d+)', str(e))
    if m:
        y, q = map(int, m.groups())
        t = await obb.equity.earnings_transcript.async_(symbol=sym, year=y, quarter=q, provider='fmp')
    else:
        raise

Prevention

When it happens

Trigger: Requesting obb.equity.earnings_transcript(symbol=X, year=Y, quarter=Q) where that exact fiscal period has no transcript yet - typically the current/upcoming quarter before the call happens, or a period older than FMP's transcript archive.

Common situations: Asking for the newest quarter before the earnings call occurred, assuming calendar quarters equal fiscal quarters (offset fiscal years), or asking for periods predating FMP's coverage.

Related errors


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