{"record":{"id":"7a1910b52c705233","repo":"OpenBB-finance/OpenBB","slug":"no-tickers-found-for-the-supplied-parameters-try","errorCode":null,"errorMessage":"No tickers found for the supplied parameters. Try relaxing the constraints.","messagePattern":"No tickers found for the supplied parameters\\. Try relaxing the constraints\\.","errorType":"exception","errorClass":"EmptyDataError","httpStatus":null,"severity":"warning","filePath":"openbb_platform/providers/finviz/openbb_finviz/models/equity_screener.py","lineNumber":719,"sourceCode":"\n            if not filters_dict and query.signal is None:\n                screen.set_filter(signal=d_signals[\"top_gainers\"])\n                warn(\n                    \"No filters or signal provided. Defaulting to 'top_gainers' signal.\"\n                    + \" Use the preset, 'all_stocks', to explicitly return every stock on Finviz.\"\n                    + \" Returning 10K symbols can take several minutes.\"\n                )\n\n            df_screen = screen.screener_view(\n                order=sort_by,\n                limit=limit if limit else 100000,\n                ascend=ascend,\n                sleep_sec=sleep,\n                verbose=0,\n            )\n\n        if df_screen is None or df_screen.empty:\n            raise EmptyDataError(\n                \"No tickers found for the supplied parameters. Try relaxing the constraints.\"\n            )\n\n        df_screen.columns = [val.strip(\"\\n\") for val in df_screen.columns]\n        # Commas in the company name can cause issues with delimiters.\n        if \"Company\" in df_screen.columns:\n            df_screen[\"Company\"] = df_screen[\"Company\"].str.replace(\",\", \"\")\n\n        return df_screen.convert_dtypes().replace({nan: None}).to_dict(orient=\"records\")\n\n    @staticmethod\n    def transform_data(\n        query: FinvizEquityScreenerQueryParams,\n        data: list[dict],\n        **kwargs: Any,\n    ) -> list[FinvizEquityScreenerData]:\n        \"\"\"Transform data.\"\"\"\n        return [FinvizEquityScreenerData.model_validate(d) for d in data]","sourceCodeStart":701,"sourceCodeEnd":737,"githubUrl":"https://github.com/OpenBB-finance/OpenBB/blob/3e071fcc2cd9f891cac6040ae60296dba76dab46/openbb_platform/providers/finviz/openbb_finviz/models/equity_screener.py#L701-L737","documentation":"After running the Finviz screener, the resulting DataFrame is None or empty, so the fetcher raises EmptyDataError advising relaxed constraints. The screen executed but matched zero tickers (or finvizfinance returned nothing), which is an expected empty-result condition rather than a bug.","triggerScenarios":"Stacking multiple restrictive filters (e.g. tiny market cap + high dividend + strong signal); a preset whose combined filters are unsatisfiable; pagination/limit interactions returning an empty frame; signal-based screens whose window has no matches.","commonSituations":"Optimization loops that auto-generate filter combinations, many of which are unsatisfiable; presets tuned in a different market regime.","solutions":["Remove or loosen filters one at a time until results appear","Prefer range buckets over tight thresholds where Finviz only offers buckets","Catch EmptyDataError and treat the screen as 'no matches' in automated pipelines"],"exampleFix":"# before\nq = FinvizEquityScreenerQueryParams(preset=\"ultra_narrow\")  # 0 matches -> EmptyDataError\n\n# after\nfrom openbb_core.provider.abstract.fetcher import EmptyDataError\ntry:\n    res = await obb.equity.screener(provider=\"finviz\", preset=\"ultra_narrow\")\nexcept EmptyDataError:\n    res = await obb.equity.screener(provider=\"finviz\", preset=\"broader_preset\")","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"from openbb_core.provider.abstract.errors import EmptyDataError\n\ntry:\n    rows = await FinvizEquityScreenerFetcher.transform_query(...)  # fetch stage\nexcept EmptyDataError:\n    rows = []  # screen matched nothing; relax constraints or move on","preventionTips":["Prefer one or two broad filters over stacking many narrow ones","In automated screen generation, treat EmptyDataError as a skip, not a crash","Test preset viability with a small limit before full runs"],"tags":["openbb","finviz","empty-data","screener"],"backgroundTag":null,"analyzedSha":"3e071fcc2cd9f891cac6040ae60296dba76dab46","analyzedAt":"2026-08-14T23:40:48.960Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}