TradingView screener (stocks, crypto, forex)
TradingView's screener for a market: rows of any columns the screener knows, filtered and sorted. Defaults per market type: stocks (price, change, volume, relative volume, market cap, P/E, EPS, dividend yield, sector, industry, performance, rating), crypto and forex. Shortcut filters (exchange, sector, industry, type, market cap, price, volume, change, P/E) and a raw filter for anything else. total is the number of matches. Pass next_page back as page; null on the last page.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
market | string | Market: america (default), uk, india, germany, canada, japan, hongkong, australia, brazil, any other country name the screener uses, or crypto (pairs), coin (coins), forex, futures, bond, cfd. Example: america |
columns | string | Comma-separated columns, e.g. name,close,change,volume,market_cap_basic,price_earnings_ttm,RSI,Perf.Y (up to 80; unknown columns come back null). |
sort | string | Column to sort by (default market_cap_basic; crypto: 24h_vol|5; coin: market_cap_calc; forex: name). |
sort_dir | desc | asc | desc (default) or asc. |
exchange | string | Exchange, e.g. NASDAQ (comma-separated for several). |
sector | string | Sector, e.g. Technology Services, Finance, Health Technology. Example: Technology Services |
industry | string | Industry, e.g. Semiconductors. |
type | string | Instrument type, e.g. stock, fund, dr, spot, swap. |
min_market_cap | number | Minimum market cap. |
max_market_cap | number | Maximum market cap. |
min_price | number | Minimum price. |
max_price | number | Maximum price. |
min_volume | number | Minimum volume. |
min_change | number | Minimum change %. |
max_change | number | Maximum change %. |
min_pe | number | Minimum P/E. |
max_pe | number | Maximum P/E. |
filter | string | Extra conditions as a JSON array of {left, operation, right}, e.g. [{"left":"RSI","operation":"less","right":30}]. Operations: greater, egreater, less, eless, equal, nequal, in_range, not_in_range, match, crosses, crosses_above, crosses_below, above%, below%, has, has_none_of, empty, nempty. |
primary_only | boolean | Stocks: primary listings only (default true). |
page | integer | Page number (default 1). |
limit | integer | Rows per page, 1-200 (default 50). |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/tradingview/v1/screener?market=america" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/tradingview/v1/screener",
params={"market": "america"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/tradingview/v1/screener");
url.searchParams.set("market", "america");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).