{"record":{"id":"f5fe606f46ce5055","repo":"OpenBB-finance/OpenBB","slug":"symbol-query-symbol-not-found-in-available-trans","errorCode":null,"errorMessage":"Symbol {query.symbol} not found in available transcripts.\n Available symbols include: {', '.join(sorted(avail_df['symbol'].unique().tolist()))}","messagePattern":"Symbol (.+?) not found in available transcripts\\.\n Available symbols include: (.+?)","errorType":"exception","errorClass":"OpenBBError","httpStatus":null,"severity":"error","filePath":"openbb_platform/providers/fmp/openbb_fmp/models/earnings_call_transcript.py","lineNumber":98,"sourceCode":"        **kwargs: Any,\n    ) -> dict:\n        \"\"\"Return the raw data from the FMP endpoint.\"\"\"\n        # pylint: disable=import-outside-toplevel\n        import warnings  # noqa\n        from openbb_fmp.utils.helpers import (\n            get_available_transcript_symbols,\n            get_data_one,\n            get_transcript_dates_for_symbol,\n        )\n        from pandas import DataFrame\n\n        api_key = credentials.get(\"fmp_api_key\") if credentials else \"\"\n\n        available_symbols = get_available_transcript_symbols(api_key=api_key)\n        avail_df = DataFrame(available_symbols)\n\n        if query.symbol.upper() not in avail_df[\"symbol\"].values:\n            raise OpenBBError(\n                ValueError(\n                    f\"Symbol {query.symbol} not found in available transcripts.\"\n                    + f\"\\n Available symbols include: {', '.join(sorted(avail_df['symbol'].unique().tolist()))}\"\n                )\n            )\n        symbol_transcripts = get_transcript_dates_for_symbol(\n            query.symbol.upper(), api_key=api_key\n        )\n\n        df_dates = DataFrame(symbol_transcripts).sort_values(by=\"date\", ascending=False)\n        year = df_dates.iloc[0].fiscalYear\n\n        if query.year and query.year not in df_dates.fiscalYear.values:\n            warnings.warn(\n                f\"Year {query.year} not found in available transcripts for {query.symbol}.\"\n                + f\" Using latest year {year} instead.\"\n            )\n","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/fmp/openbb_fmp/models/earnings_call_transcript.py#L80-L116","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Read the error message: it literally lists every valid symbol - pick the correct one from it","Check the share class (e.g. use GOOG or GOOGL exactly as FMP lists it) and current official ticker","Verify the symbol exists via obb.equity.profile before requesting a transcript","Catch OpenBBError and branch on 'not found in available transcripts' to give a targeted message"],"exampleFix":"# before\nres = obb.equity.earnings_transcript(symbol='GOOGLE', provider='fmp')  # invalid share class\n\n# after\nres = obb.equity.earnings_transcript(symbol='GOOGL', provider='fmp')","handlingStrategy":"validation","validationCode":"# Validate the symbol exists before requesting a transcript\nprofile = obb.equity.profile(symbol=sym, provider='fmp').results\nif not profile:\n    raise ValueError(f'{sym} unknown to FMP; check ticker/share class')","typeGuard":"null","tryCatchPattern":"from openbb_core.provider.utils.errors import OpenBBError\ntry:\n    t = await obb.equity.earnings_transcript.async_(symbol=sym, provider='fmp')\nexcept OpenBBError as e:\n    if 'not found in available transcripts' in str(e):\n        # e lists all valid symbols; surface or fuzzy-match one\n        raise ValueError(f'{sym} has no transcripts on FMP') from e\n    raise","preventionTips":["Canonicalize share-class tickers (GOOG/GOOGL/BF.B) against FMP's symbol list","Cache the available-transcripts symbol list; it changes rarely","Handle ticker renames by mapping old tickers to current ones before calls"],"tags":["fmp","symbol-not-found","earnings-transcript","validation"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}