{"record":{"id":"382212ab7a5d75ce","repo":"OpenBB-finance/OpenBB","slug":"no-transcript-found-for-query-symbol-in-year-q","errorCode":null,"errorMessage":"No transcript found for {query.symbol} in {year} Q{quarter}. \n Latest available transcript is {df_dates.iloc[0].fiscalYear} Q{df_dates.iloc[0].quarter}.","messagePattern":"No transcript found for (.+?) in (.+?) Q(.+?)\\. \n Latest available transcript is (.+?) Q(.+?)\\.","errorType":"exception","errorClass":"OpenBBError","httpStatus":null,"severity":"error","filePath":"openbb_platform/providers/fmp/openbb_fmp/models/earnings_call_transcript.py","lineNumber":139,"sourceCode":"        if (\n            query.quarter\n            and query.quarter\n            not in df_dates.query(\"fiscalYear == @year\").quarter.values\n        ):\n            warnings.warn(\n                f\"Quarter {query.quarter} not found in available transcripts for {query.symbol} in {year}.\"\n                + f\" Using latest quarter q{df_dates.query('fiscalYear == @year').iloc[0].quarter} instead.\"\n            )\n\n        url = (\n            \"https://financialmodelingprep.com/stable/earning-call-transcript?symbol=\"\n            + f\"{query.symbol.upper()}&year={year}&quarter={quarter}&apikey={api_key}\"\n        )\n\n        try:\n            return await get_data_one(url, **kwargs)\n        except ValueError as e:\n            raise OpenBBError(\n                f\"No transcript found for {query.symbol} in {year} Q{quarter}\"\n                f\". \\n Latest available transcript is {df_dates.iloc[0].fiscalYear} Q{df_dates.iloc[0].quarter}.\"\n            ) from e\n\n    @staticmethod\n    def transform_data(\n        query: FMPEarningsCallTranscriptQueryParams, data: dict, **kwargs: Any\n    ) -> FMPEarningsCallTranscriptData:\n        \"\"\"Return the transformed data.\"\"\"\n        if not data:\n            raise OpenBBError(\n                ValueError(\n                    f\"No data found for {query.symbol} for year {query.year} and period {query.quarter}.\"\n                )\n            )\n        transcript = data.get(\"content\", \"\")\n\n        output_lines: list = []","sourceCodeStart":121,"sourceCodeEnd":157,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/fmp/openbb_fmp/models/earnings_call_transcript.py#L121-L157","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Use the latest period named in the error message itself (it tells you the most recent available fiscalYear and quarter)","Remember FMP keys on fiscal year/quarter, not calendar dates - adjust for companies with non-calendar fiscal years","If year is omitted the code defaults to the latest fiscal year; omit quarter too to auto-pick the latest available quarter","Catch OpenBBError and retry once with the latest period parsed from the message"],"exampleFix":"# before\nres = obb.equity.earnings_transcript(symbol='AAPL', year=2026, quarter=3, provider='fmp')  # not yet published\n\n# after\nres = obb.equity.earnings_transcript(symbol='AAPL', year=2025, quarter=2, provider='fmp')  # latest available","handlingStrategy":"fallback","validationCode":"null","typeGuard":"null","tryCatchPattern":"from openbb_core.provider.utils.errors import OpenBBError\nimport re\ntry:\n    t = await obb.equity.earnings_transcript.async_(symbol=sym, year=y, quarter=q, provider='fmp')\nexcept OpenBBError as e:\n    m = re.search(r'Latest available transcript is (\\d+) Q(\\d+)', str(e))\n    if m:\n        y, q = map(int, m.groups())\n        t = await obb.equity.earnings_transcript.async_(symbol=sym, year=y, quarter=q, provider='fmp')\n    else:\n        raise","preventionTips":["Omit year/quarter to default to the latest transcript when recency matters more than a specific period","Account for fiscal-vs-calendar year offsets per company","Parse the 'Latest available' hint from the message for automatic fallback"],"tags":["fmp","earnings-transcript","not-found","fiscal-period"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}