Market Data & Web Scraping
Beginner
Fetch Intraday 1-Min & 5-Min Historical OHLCV Candles via Upstox API v2 in Python
Download historical and same-day intraday 1-minute and 30-minute candlestick data into a Pandas DataFrame using Upstox REST API v2 in Python.
#requests#pandas
Problem Statement
Upstox API v2 provides free historical candle endpoints without requiring a paid market data add-on, making it ideal for live intraday indicator warm-up.
Formula / Core Logic
Calls GET https://api.upstox.com/v2/historical-candle/{instrument_key}/{interval}/{to_date}/{from_date} and reverses the array into chronological order.
Installation
pip install requests pandas
upstox-api-v2-historical-intraday-candle-fetcher-python.py
import requests
import pandas as pd
def fetch_upstox_candles(instrument_key='NSE_INDEX|Nifty 50', interval='1minute', from_date='2026-10-25', to_date='2026-11-03'):
url = f'https://api.upstox.com/v2/historical-candle/{instrument_key}/{interval}/{to_date}/{from_date}'
headers = {'Accept': 'application/json'}
resp = requests.get(url, headers=headers, timeout=10).json()
candles = resp.get('data', {}).get('candles', [])
cols = ['Timestamp', 'Open', 'High', 'Low', 'Close', 'Volume', 'OI']
df = pd.DataFrame(candles, columns=cols)
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
return df.sort_values('Timestamp').reset_index(drop=True)
Get the Complete 100+ Python Quant & Automation Bundle
Instant lifetime access to all production-ready scripts, valuation models, and trading bots ($19).
Buy Full Bundle on Gumroad ($19) →Frequently Asked Questions
Q: Does the Upstox historical candle endpoint require an Authorization Bearer token?
The historical candle v2 endpoint is publicly accessible with just `Accept: application/json`, while intraday live order endpoints require `Authorization: Bearer