TradingView APItradingview.com ↗
Access real-time forex quotes, OHLC, bid/ask spreads, RSI, MACD, pivot points, and moving averages for any currency pair via the TradingView API.
What is the TradingView API?
This API exposes 3 endpoints that return live forex data sourced from TradingView, covering price quotes, technical indicators, and multi-pair scans. The get_quote endpoint alone surfaces over 20 response fields — including bid, ask, spread, RSI, ATX, MACD, and 8 performance-period metrics. The get_technicals endpoint adds full pivot point tables and 14+ moving average values, while scan_forex lets you query an entire watchlist in one call.
curl -X GET 'https://api.parse.bot/scraper/21b5deee-809e-4588-ab98-32b8cc954e33/get_quote?symbol=EURUSD&exchange=FX' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace tradingview-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: TradingView Forex Data API — scan pairs, drill into quotes & technicals."""
from parse_apis.tradingview_forex_data_api import TradingView, Exchange, PairNotFound
client = TradingView()
# Scan multiple forex pairs for a quick market overview.
for pair in client.pairsummaries.scan(symbols="EURUSD,GBPUSD,USDJPY", exchange=Exchange.FX, limit=5):
print(pair.symbol, pair.close, pair.recommendation, pair.rsi)
# Fetch a full quote for one pair, then access nested price and indicator data.
quote = client.quotes.get(symbol="EURUSD")
print(quote.symbol, quote.price.close, quote.price.spread, quote.indicators.rsi)
print(quote.technicals_summary.overall, quote.technicals_summary.scores.overall)
print(quote.performance.weekly, quote.performance.monthly)
# Drill into full technical analysis from the quote instance.
ta = quote.technicals()
print(ta.oscillators.rsi, ta.oscillators.macd, ta.oscillators.cci)
print(ta.moving_averages.ema_20, ta.moving_averages.sma_200)
print(ta.pivot_points.classic.r1, ta.pivot_points.classic.s1)
# Handle a pair that doesn't exist.
try:
client.quotes.get(symbol="XYZABC")
except PairNotFound as exc:
print(f"Not found: {exc.symbol}")
print("exercised: pairsummaries.scan / quotes.get / quote.technicals / PairNotFound")Get a comprehensive real-time forex quote including current price, OHLC, bid/ask spread, volume, change, technical summary, key indicators, and performance metrics. Returns a single Quote resource for the specified forex pair. The technicals_summary provides a quick Buy/Sell/Neutral signal; use get_technicals for a full breakdown.
| Param | Type | Description |
|---|---|---|
| symbol | string | Forex pair symbol (e.g., EURUSD, GBPUSD, USDJPY, AUDUSD, USDCAD, NZDUSD, EURGBP, EURJPY) |
| exchange | string | Exchange/data source (FX, OANDA, FX_IDC) |
{
"type": "object",
"fields": {
"price": "object - {close, open, high, low, bid, ask, spread}",
"change": "object - {change_percent, change_abs}",
"symbol": "string - Full ticker (e.g., FX:EURUSD)",
"volume": "integer - Trading volume",
"indicators": "object - {rsi, stoch_k, stoch_d, macd, macd_signal, atr, volatility_daily}",
"description": "string - Pair description (e.g., Euro vs. US Dollar)",
"performance": "object - {weekly, monthly, three_months, six_months, ytd, yearly, five_years, all_time}",
"average_volume_10d": "number - 10-day average volume",
"technicals_summary": "object - {overall, moving_averages, oscillators, scores: {overall, moving_averages, oscillators}}"
},
"sample": {
"data": {
"type": "forex",
"price": {
"ask": 1.15465,
"bid": 1.15463,
"low": 1.15256,
"high": 1.15559,
"open": 1.15354,
"close": 1.15468,
"spread": 0.00002
},
"change": {
"change_abs": 0.00115,
"change_percent": 0.0997
},
"symbol": "FX:EURUSD",
"volume": 55531,
"currency": "USD",
"exchange": "FX",
"indicators": {
"atr": 0.00562,
"rsi": 38.69,
"macd": -0.00364,
"stoch_d": 18.96,
"stoch_k": 22.55,
"macd_signal": -0.00282,
"volatility_daily": 0.263
},
"description": "Euro vs. US Dollar",
"performance": {
"ytd": -1.632,
"weekly": -0.435,
"yearly": 1.109,
"monthly": -2.006,
"all_time": 115.1,
"five_years": -4.635,
"six_months": -1.625,
"three_months": 0.309
},
"average_volume_10d": 149523.3,
"technicals_summary": {
"scores": {
"overall": -0.49,
"oscillators": -0.18,
"moving_averages": -0.8
},
"overall": "Sell",
"oscillators": "Sell",
"moving_averages": "Strong Sell"
}
},
"status": "success"
}
}About the TradingView API
Endpoints and What They Return
The get_quote endpoint accepts a symbol parameter (e.g., EURUSD, GBPUSD) and an optional exchange value (FX, OANDA, or FX_IDC). It returns a price object containing close, open, high, low, bid, ask, and spread, alongside a change object with both change_percent and change_abs. The indicators object covers rsi, stoch_k, stoch_d, macd, macd_signal, atr, and volatility_daily. A performance object breaks down returns across eight time horizons: weekly, monthly, three months, six months, YTD, yearly, five years, and all-time.
Technical Analysis Depth
The get_technicals endpoint returns the same symbol and close fields but goes deeper on analysis. The oscillators object includes cci, adx, adx_plus_di, adx_minus_di, awesome_oscillator, and momentum in addition to the standard RSI and MACD values. The moving_averages object covers EMA and SMA at 10, 20, 30, 50, 100, and 200 periods, plus hull_ma_9, vwma, and Ichimoku values. The pivot_points object provides both Classic and Fibonacci levels — r3, r2, r1, pivot, s1, s2, s3 — for each method. A recommendation object returns overall, moving_averages, and oscillators signals with numeric scores.
Scanning Multiple Pairs
The scan_forex endpoint accepts a comma-separated symbols string (e.g., EURUSD,GBPUSD,USDJPY) and returns a pairs array with per-pair fields including close, open, high, low, bid, ask, change_percent, change_abs, and volume. A total integer confirms how many pairs were returned. This makes it practical to build a live dashboard or run cross-pair comparisons without issuing multiple sequential requests.
The TradingView API is a managed, monitored endpoint for tradingview.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tradingview.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official tradingview.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display a live forex ticker board showing bid, ask, spread, and daily change for a watchlist via
scan_forex - Trigger alerts when RSI or MACD crosses a threshold using values from
get_quote'sindicatorsobject - Build a pivot-level chart overlay using Classic and Fibonacci pivot points from
get_technicals - Compare EMA and SMA values across 6 time periods to identify trend direction for a given pair
- Track medium- and long-term performance using the 8-period
performanceobject fromget_quote - Aggregate oscillator and moving-average recommendation scores to rank pairs by technical signal strength
- Monitor 10-day average volume alongside current volume to detect unusual activity on a currency pair
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does TradingView have an official developer API?+
What does the `technicals_summary` object in `get_quote` contain versus the `recommendation` object in `get_technicals`?+
overall, moving_averages, and oscillators signal labels along with a scores sub-object containing numeric values for each. The difference is scope: get_quote bundles this summary alongside price and performance data in a single call, while get_technicals pairs the recommendation with the full underlying indicator values — all oscillators, all moving averages, and pivot points — so you can see what drove the signal.Which exchanges or data sources are supported?+
exchange parameter currently accepts FX, OANDA, and FX_IDC. Not all pairs are available on all three sources, so if a symbol returns no data on one exchange, switching to another may resolve it.Does the API cover cryptocurrency or equity pairs from TradingView?+
symbol and exchange parameters are designed around currency pairs like EURUSD or USDJPY. Crypto tokens, stocks, indices, and futures are not covered. You can fork this API on Parse and revise it to add endpoints targeting those asset classes.