OpenBB-finance/OpenBB · warning · EmptyDataError

The request was successful but was returned empty.

Error message

The request was successful but was returned empty.

What it means

EmptyDataError raised at the end of the bulk path of IntrinioForwardEbitdaEstimatesFetcher: the paginated request(s) completed without error but 'results' accumulated no ebitda_consensus records, so the fetcher raises before transform.

Source

Thrown at openbb_platform/providers/intrinio/openbb_intrinio/models/forward_ebitda_estimates.py:166

                while data.get("next_page"):  # type: ignore
                    next_page = data["next_page"]  # type: ignore
                    next_url = f"{url}&next_page={next_page}"
                    data = await amake_request(next_url, session=session, **kwargs)
                    consensus = (
                        data.get("ebitda_consensus")
                        if isinstance(data, dict) and "ebitda_consensus" in data
                        else []
                    )
                    if consensus:
                        results.extend(consensus)  # type: ignore
            return results

        url = f"{BASE_URL}&{query_str}" if query_str else BASE_URL

        results = await amake_request(url, response_callback=fetch_callback, **kwargs)  # type: ignore

        if not results:
            raise EmptyDataError("The request was successful but was returned empty.")

        return results

    @staticmethod
    def transform_data(
        query: IntrinioForwardEbitdaEstimatesQueryParams,
        data: list[dict],
        **kwargs: Any,
    ) -> list[IntrinioForwardEbitdaEstimatesData]:
        """Transform the raw data into the standard format."""
        if not data:
            raise EmptyDataError()
        results: list[IntrinioForwardEbitdaEstimatesData] = []
        fiscal_period = None
        if query.fiscal_period is not None:
            fiscal_period = "fy" if query.fiscal_period == "annual" else "fq"
        for item in data:
            estimate_count = item.get("estimate_count")

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Relax or remove query filters so more securities are covered
  2. Switch to per-symbol requests for the specific tickers you need (that path warns per symbol instead)
  3. Confirm plan coverage for analyst estimates data
Defensive patterns

Strategy: try-catch

Validate before calling

def bulk_query_has_scope(symbols_of_interest: list[str]) -> bool:
    # bulk mode returns empty when filters match no covered securities
    return bool(symbols_of_interest)

Type guard

from openbb_core.provider.utils.errors import EmptyDataError

Try / catch

from openbb_core.provider.utils.errors import EmptyDataError

try:
    res = await obb.equity.estimates.ebitda(provider="intrinio")
except EmptyDataError:
    # fall back to per-symbol mode, which warns per symbol instead
    res = await obb.equity.estimates.ebitda(provider="intrinio", symbol=",".join(syms))

Prevention

When it happens

Trigger: The consensus endpoint returns valid JSON with an empty (or absent) 'ebitda_consensus' list on the first page — e.g. filter parameters matching no securities, or the account having estimates coverage for nothing the query selects. Distinct from per-symbol mode, which raises error 675 instead.

Common situations: Query-wide filters (dates, universes) that match no covered companies; calling the bulk mode expecting broad coverage on a limited plan; first-page empty while later pagination would have had data (not traversed because the loop is gated on estimates being non-empty).

Related errors


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