OpenBB-finance/OpenBB · error · OpenBBError
Fetcher not found for model '{model_name}' in provider '{pro
Error message
Fetcher not found for model '{model_name}' in provider '{provider.name}'. What it means
OpenBBError from QueryExecutor.get_fetcher: the named provider exists in the registry, but its fetcher_dict has no entry for the requested model name - i.e. this provider does not implement the data model the command maps to. Every command/model combination is provider-specific, and coverage is not uniform across providers.
Source
Thrown at openbb_platform/core/openbb_core/provider/query_executor.py:31
"""Class to execute queries from providers."""
def __init__(self, registry: Registry | None = None) -> None:
"""Initialize the query executor."""
self.registry = registry or RegistryLoader.from_extensions()
def get_provider(self, provider_name: str) -> Provider:
"""Get a provider from the registry."""
name = provider_name.lower()
if name not in self.registry.providers:
raise OpenBBError(
f"Provider '{name}' not found in the registry.Available providers: {list(self.registry.providers.keys())}"
)
return self.registry.providers[name]
def get_fetcher(self, provider: Provider, model_name: str) -> type[Fetcher]:
"""Get a fetcher from a provider."""
if model_name not in provider.fetcher_dict:
raise OpenBBError(
f"Fetcher not found for model '{model_name}' in provider '{provider.name}'."
)
return provider.fetcher_dict[model_name]
@staticmethod
def filter_credentials(
credentials: dict[str, SecretStr] | None,
provider: Provider,
require_credentials: bool,
) -> dict[str, str]:
"""Filter credentials and check if they match provider requirements."""
filtered_credentials = {}
if provider.credentials:
if credentials is None:
credentials = {}
for c in provider.credentials:View on GitHub (pinned to 3e071fcc2c)
Solutions
- Call the command without provider= and let OpenBB pick an implementing provider
- Check coverage first: obb.coverage.providers / command-provider matrix in docs
- Upgrade the provider package - newer versions add fetchers for more models
- Remove the stale provider default for that command in openbb_settings.json
Example fix
# before
res = obb.crypto.price.historical('BTC-USD', provider='fmp')
# after
res = obb.crypto.price.historical('BTC-USD', provider='yfinance') Defensive patterns
Strategy: validation
Validate before calling
from openbb import obb
def provider_supports(command: str, provider: str) -> bool:
# coverage maps commands to providers that implement them
return provider.lower() in set(obb.coverage.providers) Type guard
def provider_implements(obb, command: str, provider: str) -> bool:
return provider.lower() in set(obb.coverage.providers) # refine via command-provider matrix in docs Try / catch
from openbb_core.app.model.abstract.error import OpenBBError
try:
res = obb.crypto.price.historical('BTC-USD', provider=p)
except OpenBBError as e:
if 'Fetcher not found' in str(e):
res = obb.crypto.price.historical('BTC-USD') # let OpenBB choose
else:
raise Prevention
- Omit provider= by default so the router picks an implementing provider
- Check the command-provider coverage matrix when adding new endpoints to scripts
- Upgrade provider packages when new standard models land in openbb-core
When it happens
Trigger: Calling a command the provider doesn't support: obb.crypto.price.historical('BTC-USD', provider='fmp') when FMP's fetcher dict lacks that model; requesting e.g. 'economy.gdp' from a provider that only covers markets. The router's provider list for the command normally excludes such providers, so this typically appears with explicit provider= or stale defaults.
Common situations: Forcing a provider on commands where it has no coverage; defaults file pinning a provider for a command after a schema/model rename; version mismatch where an older provider package lacks fetchers for newer standard models.
Related errors
- Provider fallback failed. [Providers] {msg}
- Provider '{name}' not found in the registry.Available provid
- Unsupported file format. Please use .json or .env files.
- Failed to get Jupyter URL
- Invalid extension type(s): {', '.join(invalid)}. Valid choic
AI-assisted analysis of OpenBB-finance/OpenBB@3e071fcc2c (2026-08-14).
Data as JSON: /api/errors/ff14c8f3215b9741.
Report an issue: GitHub.