{"record":{"id":"0aea47fe11f27658","repo":"OpenBB-finance/OpenBB","slug":"the-request-was-successful-but-was-returned-empty-0aea47","errorCode":null,"errorMessage":"The request was successful but was returned empty.","messagePattern":"The request was successful but was returned empty\\.","errorType":"exception","errorClass":"EmptyDataError","httpStatus":null,"severity":"warning","filePath":"openbb_platform/providers/intrinio/openbb_intrinio/models/forward_eps_estimates.py","lineNumber":190,"sourceCode":"                    )\n                raise OpenBBError(f\"Error: {error} -> {message}\")\n\n            if data.get(\"estimates\") and len(data.get(\"estimates\")) > 0:  # type: ignore\n                results.extend(data.get(\"estimates\"))  # type: ignore\n                while data.get(\"next_page\"):  # type: ignore\n                    next_page = data[\"next_page\"]  # type: ignore\n                    next_url = f\"{url}&next_page={next_page}\"\n                    data = await amake_request(next_url, session=session, **kwargs)\n                    if \"estimates\" in data and len(data.get(\"estimates\")) > 0:  # type: ignore\n                        results.extend(data.get(\"estimates\"))  # type: ignore\n            return results\n\n        url = f\"{BASE_URL}&{query_str}&api_key={api_key}\"\n\n        results = await amake_request(url, response_callback=fetch_callback, **kwargs)  # type: ignore\n\n        if not results:\n            raise EmptyDataError(\"The request was successful but was returned empty.\")\n\n        return results\n\n    @staticmethod\n    def transform_data(\n        query: IntrinioForwardEpsEstimatesQueryParams,\n        data: list[dict],\n        **kwargs: Any,\n    ) -> list[IntrinioForwardEpsEstimatesData]:\n        \"\"\"Transform the raw data into the standard format.\"\"\"\n        symbols = query.symbol.split(\",\") if query.symbol else []\n        results: list[IntrinioForwardEpsEstimatesData] = []\n        for item in sorted(\n            data,\n            key=lambda item: (  # type: ignore\n                (\n                    symbols.index(item.get(\"symbol\")) if item.get(\"symbol\") in symbols else len(symbols),  # type: ignore\n                    item.get(\"date\"),","sourceCodeStart":172,"sourceCodeEnd":208,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/intrinio/openbb_intrinio/models/forward_eps_estimates.py#L172-L208","documentation":"EmptyDataError raised after a successful forward EPS estimates request when the callback and its pagination loop collected zero rows (empty 'estimates' list on every page). The HTTP exchange succeeded and no error body was returned, but there is no data to transform.","triggerScenarios":"equity/estimates/forward_eps with provider=intrinio for a symbol with no analyst EPS consensus at all, or where all pages return 'estimates': [] (or the key absent), so results stays empty.","commonSituations":"Thinly covered or OTC tickers with no forward EPS estimates; requesting estimates right after a symbol change before analysts migrate coverage; symbol valid but not in Intrinio's Zacks universe.","solutions":["Confirm the ticker has analyst coverage at all (news/analyst ratings endpoints).","Fall back to another provider for the same symbol (fmp, benzinga).","Test a known covered symbol like AAPL to verify the pipeline works.","If you batch symbols, catch EmptyDataError per symbol instead of failing the whole batch."],"exampleFix":"# before\n df = obb.equity.estimates.forward_eps(symbol='XYZ', provider='intrinio').to_df()\n\n# after\nfrom openbb_core.app.model.obbject import OBBject  # noqa\ntry:\n    df = obb.equity.estimates.forward_eps(symbol='XYZ', provider='intrinio').to_df()\nexcept Exception as e:\n    if 'returned empty' in str(e):\n        df = obb.equity.estimates.forward_eps(symbol='XYZ', provider='fmp').to_df()\n    else:\n        raise","handlingStrategy":"fallback","validationCode":"# cheap coverage probe: ratings/estimates count for the ticker\ntry:\n    has_coverage = bool(obb.equity.estimates.consensus(symbol=sym, provider='intrinio').results)\nexcept Exception:\n    has_coverage = False","typeGuard":null,"tryCatchPattern":"from openbb_core.provider.exceptions import EmptyDataError\ntry:\n    df = obb.equity.estimates.forward_eps(symbol=sym, provider='intrinio').to_df()\nexcept EmptyDataError:\n    df = obb.equity.estimates.forward_eps(symbol=sym, provider='fmp').to_df()","preventionTips":["Treat empty estimates as expected for thinly covered tickers","Wrap per-symbol loops in try/except instead of failing batches","Keep a secondary provider configured for estimates"],"tags":["intrinio","estimates","empty-data"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}