OpenBB-finance/OpenBB · warning · EmptyDataError

The request was returned empty.

Error message

The request was returned empty.

What it means

Standard OpenBB EmptyDataError from the Intrinio IPO calendar fetcher's transform step: the HTTP call succeeded (possibly 200 with an empty 'initial_public_offerings' array) but there are no rows to validate, so the framework surfaces 'empty data' to the caller instead of returning a silently empty DataFrame.

Source

Thrown at openbb_platform/providers/intrinio/openbb_intrinio/models/calendar_ipo.py:191

    ) -> list[dict]:
        """Return the raw data from the Intrinio endpoint."""
        api_key = credentials.get("intrinio_api_key") if credentials else ""

        base_url = "https://api-v2.intrinio.com/companies/ipos"
        query_str = get_querystring(query.model_dump(by_alias=True), [])
        url = f"{base_url}?{query_str}&api_key={api_key}"

        data = await get_data_one(url, **kwargs)

        return data.get("initial_public_offerings", [])

    @staticmethod
    def transform_data(
        query: IntrinioCalendarIpoQueryParams, data: list[dict], **kwargs: Any
    ) -> list[IntrinioCalendarIpoData]:
        """Return the transformed data."""
        if not data:
            raise EmptyDataError("The request was returned empty.")
        return [IntrinioCalendarIpoData.model_validate(d) for d in data]

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Widen the start_date/end_date window to include trading days with actual IPO activity.
  2. Treat EmptyDataError as an expected 'no events' outcome: catch it and return an empty frame in your application.
  3. Verify your Intrinio subscription covers IPO calendar data (some plans return empty rather than 403).
  4. Cross-check with another provider (e.g. Nasdaq) to confirm the window truly has no IPOs.

Example fix

# before
res = obb.equity.calendar.ipo(provider='intrinio', start_date='2024-01-01', end_date='2024-01-02')
# after
from openbb_core.provider.abstract.fetcher import EmptyDataError
try:
    res = obb.equity.calendar.ipo(provider='intrinio', start_date='2024-01-01', end_date='2024-01-31')
except EmptyDataError:
    res = None
Defensive patterns

Strategy: try-catch

Validate before calling

# Sanity-check the window before calling: IPOs cluster on trading days
from datetime import date, timedelta
if (end_date - start_date).days < 1:
    widen_window()  # single-day/narrow windows frequently have no IPOs

Try / catch

from openbb_core.provider.abstract.fetcher import EmptyDataError
try:
    res = obb.equity.calendar.ipo(provider='intrinio', start_date=s, end_date=e)
except EmptyDataError:
    res = None  # no IPOs in window - not an error condition

Prevention

When it happens

Trigger: Querying obb.equity.calendar.ipo(provider='intrinio') with date filters (start_date/end_date) that contain no IPO events, or a market/period with no scheduled offerings; data.get('initial_public_offerings') returns [] and transform_data raises.

Common situations: Weekends/holiday windows with no IPOs; very narrow date ranges; future dates beyond the calendar horizon; symbols/filters valid but unpopulated; also occurs when the API key lacks plan access and Intrinio returns an empty payload instead of an error.

Related errors


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