OpenBB-finance/OpenBB · warning · EmptyDataError

No results were found with the query supplied. -> {query.que

Error message

No results were found with the query supplied. -> {query.query} Hint: Names and descriptions are not searchable from Intrinio, try 3-letter symbols.

What it means

Raised in IntrinioCurrencyPairsFetcher.transform_data after the full pairs DataFrame was filtered by query.query and zero rows matched. The pandas filter does a case-insensitive substring match on code, base_currency, and quote_currency only — names and descriptions are not in this dataset, hence the hint in the message.

Source

Thrown at openbb_platform/providers/intrinio/openbb_intrinio/models/currency_pairs.py:83

    @staticmethod
    def transform_data(
        query: IntrinioCurrencyPairsQueryParams, data: list[dict], **kwargs: Any
    ) -> list[IntrinioCurrencyPairsData]:
        """Return the transformed data."""
        # pylint: disable=import-outside-toplevel
        from pandas import DataFrame

        if not data:
            raise EmptyDataError("The request was returned empty.")
        df = DataFrame(data)
        if query.query:
            df = df[
                df["code"].str.contains(query.query, case=False)
                | df["base_currency"].str.contains(query.query, case=False)
                | df["quote_currency"].str.contains(query.query, case=False)
            ]
        if len(df) == 0:
            raise EmptyDataError(
                f"No results were found with the query supplied. -> {query.query}"
                + " Hint: Names and descriptions are not searchable from Intrinio, try 3-letter symbols."
            )
        return [
            IntrinioCurrencyPairsData.model_validate(d)
            for d in df.to_dict(orient="records")
        ]

View on GitHub (pinned to 3e071fcc2c)

Solutions

  1. Use 3-letter currency codes: query='eur' or query='usd'
  2. Search the base or quote currency code, not the pair word ('eur/usd' works via code substring, 'euro dollar' does not)
  3. Drop the query parameter and filter the returned DataFrame yourself on any column, including names, client-side

Example fix

# before
df = obb.currency.currency_pairs(provider="intrinio", query="euro dollar").to_df()

# after
df = obb.currency.currency_pairs(provider="intrinio").to_df()
df = df[df["base_currency"].str.contains("Euro", case=False) | df["quote_currency"].str.contains("Euro", case=False)]
Defensive patterns

Strategy: validation

Validate before calling

import re

CURRENCY_CODE = re.compile(r"^[A-Za-z]{3}$")

def searchable_currency_query(q: str) -> bool:
    """Only 3-letter ISO codes reliably match code/base/quote columns."""
    return bool(CURRENCY_CODE.match(q))

Try / catch

from openbb_core.provider.utils.errors import EmptyDataError

try:
    df = obb.currency.currency_pairs(provider="intrinio", query=q).to_df()
except EmptyDataError:
    df = obb.currency.currency_pairs(provider="intrinio").to_df()
    df = df[df.apply(lambda r: q.lower() in str(r.to_dict()).lower(), axis=1)]  # client-side filter

Prevention

When it happens

Trigger: Calling currency.currency_pairs(provider='intrinio', query='...') with a search string that matches no code/base/quote currency: full words like 'dollar' or 'yen', plural forms, or typos. Only 3-letter ISO codes (e.g. 'eur', 'usd', 'jpy') and their combinations match reliably.

Common situations: Users wiring a free-text search box straight into the query param; searching by currency name ('Euro') instead of code ('EUR'); assuming the filter searches the display name as some other providers do.

Related errors


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