OpenBB-finance/OpenBB · warning · EmptyDataError

No tables were found for the release, {query.release_id}. Us

Error message

No tables were found for the release, {query.release_id}. Use `fred_search()` to list all release IDs.

Releases without tables will not return data, nor will this endpoint return individual line items.

Try a different 'element_id' and/or 'date'.

Exclude 'date' for the most recent observations.

Exclude 'element_id' to reveal the top-level element IDs.

Use `fred_series` for single series data.

What it means

Thrown by FredReleaseTableFetcher.transform_data (openbb_fred/models/release_table.py:255) when the extract step returned zero rows for the requested release table. It is an EmptyDataError, meaning the FRED release-table endpoint responded but contained no tables matching the release_id/element_id/date combination. FRED releases frequently have no table structure at all, and the geofred/release-table API never returns individual line items, only whole tables. The long message enumerates the remediations the provider authors suggest.

Source

Thrown at openbb_platform/providers/fred/openbb_fred/models/release_table.py:255

            # If no observation values are returned, we collect the unique element IDs for the user.
            elif res:
                for item in res:
                    if not any(r["element_id"] == item["element_id"] for r in results):
                        results.append(item)

        await asyncio.gather(*[get_one(URL) for URL in URLS])

        return results

    @staticmethod
    def transform_data(
        query: FredReleaseTableQueryParams,
        data: list[dict],
        **kwargs: Any,
    ) -> list[FredReleaseTableData]:
        """Transform data."""
        if not data:
            raise EmptyDataError(
                f"No tables were found for the release, {query.release_id}."
                + " Use `fred_search()` to list all release IDs."
                + "\n\nReleases without tables will not return data,"
                + " nor will this endpoint return individual line items."
                + "\n\nTry a different 'element_id' and/or 'date'."
                + "\n\nExclude 'date' for the most recent observations."
                + "\n\nExclude 'element_id' to reveal the top-level element IDs."
                + "\n\nUse `fred_series` for single series data."
            )

        return [
            FredReleaseTableData.model_validate(d)
            for d in sorted(
                data,
                key=lambda x: (
                    x.get("observation_date", float("inf")),
                    x.get("line", float("inf")),
                ),

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Re-run without 'element_id' to list the top-level element IDs for the release, then drill down.
  2. Re-run without 'date' to get the most recent published table.
  3. Verify the release_id actually exists and has tables using fred_search(search_type='release').
  4. If you need a single series rather than a table, switch to fred_series with the series ID.
  5. If you need one line item, fetch it as its own series via fred_series instead of this endpoint.

Example fix

# before
obb.economy.fred.release_table(release_id=86, element_id=12521, date='2023-01-01')

# after - discover valid element IDs first
top = obb.economy.fred.release_table(release_id=86)
print(top.to_df()['element_id'].unique())
obb.economy.fred.release_table(release_id=86, element_id=<valid_id>)
Defensive patterns

Strategy: try-catch

Validate before calling

results = obb.economy.fred.search(search_type='release')
valid_ids = set(results.to_df()['release_id'].astype(int))
if release_id not in valid_ids:
    raise ValueError(f'release_id {release_id} not known to FRED')

Type guard

def has_release_tables(df: 'pd.DataFrame') -> bool:
    """True if the release-table result actually contains rows."""
    return df is not None and not df.empty

Try / catch

from openbb_core.provider.utils.errors import EmptyDataError

try:
    table = obb.economy.fred.release_table(release_id=86, element_id=element_id)
except EmptyDataError:
    # retry once without narrowing filters to discover valid element IDs
    table = obb.economy.fred.release_table(release_id=86)

Prevention

When it happens

Trigger: Calling economy/fred release-table with a release_id that has no tables (e.g. many small regional releases); supplying an element_id that does not exist under the release; supplying a date on which the table has no observations; combining element_id with a date that filters out everything.

Common situations: Hardcoding a release_id discovered on the FRED website without checking it has tables; assuming element IDs nest arbitrarily; migrating from a direct FRED API script that hit /fred/release/tables and handled empty 'elements' itself.

Related errors


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