{"id":28406,"library":"tradingview-screener","title":"TradingView Screener","description":"A Python library for creating stock screeners using the TradingView API. Current version 3.2.0 supports Python >=3.9. Release cadence is irregular, with multiple feature releases in 2024-2025.","status":"active","version":"3.2.0","language":"python","source_language":"en","source_url":"https://github.com/shner-elmo/TradingView-Screener","tags":["tradingview","screener","stock","crypto","api"],"install":[{"cmd":"pip install tradingview-screener","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"Correct import since v1.x.","wrong":"","symbol":"Query","correct":"from tradingview_screener import Query"},{"note":"Old name was lowercase 'column', now capitalized 'Column'. 'col' alias also available.","wrong":"from tradingview_screener import column","symbol":"Column","correct":"from tradingview_screener import Column"},{"note":"Convenience alias for Column, added in v3.0.0.","wrong":"","symbol":"col","correct":"from tradingview_screener import col"},{"note":"Pre-configured screener factories available since v3.2.0.","wrong":"","symbol":"stocks","correct":"from tradingview_screener import stocks"}],"quickstart":{"code":"from tradingview_screener import Query, col\n\n# Create a query to scan US stocks with price > 100 and volume > 1M\nquery = Query()\nquery = query.select('name', 'close', 'volume', 'market_cap_basic')\nquery = query.where(\n    col('close').above(100),\n    col('volume').above(1_000_000)\n)\nquery = query.order_by('market_cap_basic', ascending=False)\n\ncount, df = query.get_scanner_data()\nprint(f\"Found {count} stocks\")\nprint(df.head())","lang":"python","description":"Basic usage: create a query, add filters with Column, scan and get DataFrame."},"warnings":[{"fix":"Use: from tradingview_screener import Column","message":"In v3.0.0, the import path for Column changed from 'tradingview_screener.column' to 'tradingview_screener.Column'. The lowercase 'column' is no longer valid.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Replace query.scan() with query.get_scanner_data()","message":"The 'scan()' method was deprecated in v2.x and removed in v3.0.0. Use 'get_scanner_data()' instead.","severity":"deprecated","affected_versions":">=3.0.0"},{"fix":"Add delays between queries or use a backoff strategy.","message":"API rate limits apply. Excessive requests may get your IP temporarily blocked. The library does not handle retries automatically.","severity":"gotcha","affected_versions":"all"},{"fix":"Use 'len(df)' for actual rows returned; 'count' is total available.","message":"The 'get_scanner_data()' returns a tuple (count, DataFrame). The count is the total number of results, which may differ from the length of the DataFrame if you set limit.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Run: pip install tradingview-screener","cause":"Library not installed. Common when using in a new environment.","error":"ModuleNotFoundError: No module named 'tradingview_screener'"},{"fix":"Use 'query.get_scanner_data()' instead.","cause":"The 'scan()' method was removed in v3.0.0.","error":"AttributeError: 'Query' object has no attribute 'scan'"},{"fix":"Use: from tradingview_screener import Column","cause":"The old lowercase 'column' name was removed in v3.0.0.","error":"ImportError: cannot import name 'column' from 'tradingview_screener'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}