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 `.