OpenBB-finance/OpenBB · warning · EmptyDataError

The request was returned empty.

Error message

The request was returned empty.

What it means

BenzingaCompanyNewsFetcher.a_fetch_data (company_news.py:177) gathers pages concurrently with asyncio.gather; if after all page callbacks `results` is still empty it raises EmptyDataError("The request was returned empty."). Empty means the filters matched no news, or every page errored into the caught OpenBBError/Unauthorized path without aborting. UnauthorizedError, when it occurs, is re-raised as-is upstream of this.

Source

Thrown at openbb_platform/providers/benzinga/openbb_benzinga/models/company_news.py:177

        results: list = []

        async def get_one(url):
            """Get data for one url."""
            try:
                response = await amake_request(
                    url,
                    response_callback=response_callback,
                    **kwargs,
                )
                if response:
                    results.extend(response)
            except (OpenBBError, UnauthorizedError) as e:
                raise e from e

        await asyncio.gather(*[get_one(url) for url in urls])

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

        return sorted(
            results, key=lambda x: x.get("created"), reverse=query.order == "desc"
        )[: query.limit if query.limit else len(results)]

    @staticmethod
    def transform_data(
        query: BenzingaCompanyNewsQueryParams,
        data: list[dict],
        **kwargs: Any,
    ) -> list[BenzingaCompanyNewsData]:
        """Transform data."""
        return [BenzingaCompanyNewsData.model_validate(item) for item in data]

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Catch EmptyDataError and return an empty news list to the UI.
  2. Widen date range and confirm tickers; test the same query on a liquid name like AAPL.
  3. Check credential health — sustained emptiness across all tickers suggests an auth problem rather than coverage.
  4. Page-size sanity: keep a reasonable `size` and iterate `page` rather than one huge filtered request.

Example fix

# before
res = obbject.news.world.query(provider="benzinga", date="2026-08-01")

# after
from openbb_core.provider.standard_models.errors import EmptyDataError
try:
    res = obbject.news.world.query(provider="benzinga", date="2026-08-01")
except EmptyDataError:
    res = []  # no coverage for that window
Defensive patterns

Strategy: try-catch

Validate before calling

if not (query.symbols and query.start_date <= query.end_date):
    raise ValueError("invalid company-news filter window")
# coverage probe on a liquid name
probe = await obbject.news.company(symbol="AAPL", provider="benzinga", limit=1)

Try / catch

from openbb_core.provider.standard_models.errors import EmptyDataError
try:
    results = await fetcher.a_fetch_data(query, credentials)
except EmptyDataError:
    results = []  # no news matched the filters

Prevention

When it happens

Trigger: Querying company news for tickers/date ranges with no coverage, size=0-style degenerate filters, or a date range entirely outside Benzinga's archive for those symbols.

Common situations: Weekend/holiday windows, pre-IPO or delisted tickers, non-US symbols Benzinga news doesn't tag, and typo'd date parameters producing empty windows.

Related errors


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