To access real-time (streaming) data instead of delayed data, you must pass authenticated session cookies to .get_scanner_data(cookies=...).
Option 1: Using rookiepy (Recommended)
rookiepy can automatically extract cookies from your local browser session.
pip install rookiepy- Load cookies:
import rookiepy
cookies = rookiepy.to_cookiejar(rookiepy.chrome(['.tradingview.com']))
- Pass to query:
Query().get_scanner_data(cookies=cookies)
- Log in to TradingView.
- Open Developer Tools (
Ctrl + Shift + I) -> Application tab. - Navigate to
Storage > Cookies > https://www.tradingview.com/. - Copy the value of
sessionid. - Pass as a dictionary:
cookies = {'sessionid': '<your-session-id>'}
Query().get_scanner_data(cookies=cookies)
Option 3: Authenticate via API
Note: This method is prone to CAPTCHA and account flagging due to login frequency restrictions.
from http.cookiejar import CookieJar
import requests
from tradingview_screener import Query
def authenticate(username: str, password: str) -> CookieJar:
session = requests.Session()
r = session.post(
'https://www.tradingview.com/accounts/signin/',
headers={'User-Agent': 'Mozilla/5.0', 'Referer': 'https://www.tradingview.com'},
data={'username': username, 'password': password, 'remember': 'on'},
timeout=60,
)
r.raise_for_status()
if r.json().get('error'):
raise Exception(f'Failed to authenticate: \n{r.json()}')
return session.cookies
cookies = authenticate('<your-username>', '<your-password>')
Query().get_scanner_data(cookies=cookies)