**Quick answer:** NSE ki official website aur direct API calls ko bot-block kar deti hai (HTTP 403). Lekin data free mein milta hai do tareeke se: (1) **nse-bse-mcp** npm package jo NSE ke cookie/session handling khud sambhalta hai, aur (2) **NSE F&O BhavCopy** archive (EOD option-chain history, bina key ke). Dono method maine Termux (Android) pe 19 Aug 2026 ko live verify kiye hain.
Agar aap retail trader hain jo apna alag data stack banana chahte hain — bina ₹5,000/month ki paid API ke — yeh article exactly wahi batata hai.
*Educational only — not SEBI-registered advisory. No trade recommendations.*
---
Aap `https://www.nseindia.com/api/option-chain-indices?symbol=NIFTY` ko curl ya Python se hit karte hain — aur **403 Forbidden** milta hai. Kyun?
NSE rate-limit + bot protection lagati hai:
Isliye zyadatar log paid data vendors (₹2,000–₹10,000/month) kharid lete hain. Lekin sach yeh hai: **NSE khud apna data free publish karti hai** — bas sahi endpoint pata hona chahiye.
### Methodology note (verifiability)
Sab code aur result is article mein **19 August 2026** ko Termux (Android 15, Python 3.13, Node v26) pe test kiya gaya. Live numbers:
---
`nse-bse-mcp` ek open-source npm package hai jo NSE ke session cookies khud manage karta hai — wahi cheez jo aapke direct curl ko 403 de rahi thi.
### Install (Termux / Linux / Mac)
npm install -g nse-bse-mcp
### Install (Windows — PowerShell)
npm install -g nse-bse-mcp
### Run as stdio MCP server (Python harness)
Ye package **stdio JSON-RPC** server hai — background daemon mat chalao, stdio se chalao:
import subprocess, json
p = subprocess.Popen(
["node", "/path/to/nse-bse-mcp/dist/stdio-server.js"],
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
# initialize, then call nse_filtered_option_chain / nse_compile_option_chain
Verified tools jo kaam karte hain:
**Reality check:** Live calls kabhi-kabhi NSE rate-limit ke wajah se slow/timeout ho sakte hain. Isliye production mein live ko "best-effort" rakhein.
---
Ye sabse bada dhoondh — **historical option chain bina paise ke**.
NSE har trading day ki F&O bhavcopy archive karti hai:
https://nsearchives.nseindia.com/content/fo/BhavCopy_NSE_FO_0_0_0_YYYYMMDD_F_0000.csv.zip
(Note: `www.nseindia.com` 404 deta hai — **sirf `nsearchives.nseindia.com` works**.)
### Fetch + parse (Python, Termux/Windows same)
import urllib.request, zipfile, csv, io
date = "20260818" # YYYYMMDD
url = f"https://nsearchives.nseindia.com/content/fo/BhavCopy_NSE_FO_0_0_0_{date}_F_0000.csv.zip"
req = urllib.request.Request(url, headers={
"User-Agent": "Mozilla/5.0",
"Referer": "https://www.nseindia.com/"})
data = urllib.request.urlopen(req, timeout=30).read()
z = zipfile.ZipFile(io.BytesIO(data))
rows = list(csv.DictReader(z.read(z.namelist()[0]).decode().splitlines()))
# Filter NIFTY, read StrkPric, OptnTp, OpnIntrst, ChngInOpnIntrst, UndrlygPric
Verified output (2026-08-18):
**Ye EOD (end-of-day) data hai** — intraday nahi. Agar intraday chahiye, broker WebSocket (Dhan) se khud record karna padega.
---
Free data mil gaya, ab ise apna **permanent dataset** banayein. Mai ek SQLite store banaya jisme har din auto-save hota hai:
CREATE TABLE market_raw (
ts_ist TEXT, source TEXT, symbol TEXT, expiry TEXT,
strike REAL, option_type TEXT, spot REAL,
oi REAL, change_oi REAL, iv REAL
);
Daily cron (16:00 IST) bhavcopy fetch karta hai → `market_raw` mein save karta hai. 120 din baad aapke paas **120 trading days ka clean option-chain history** ho jata hai.
### Similar-history prediction (honest version)
Is data se aap "similar past states" dhoondh sakte hain:
1. Aaj ka market state (PCR, spot-vs-maxpain, regime) vector banao
2. Past 120 days mein iske closest matches dhoondho (KNN)
3. Un matches ke **next-day return** dekho
Mera verified result (120 days, NIFTY):
⚠️ **Honest disclaimer:** Ye "edge" hai, par small hai. Ispe directly trade mat karo. Ye **research framework** hai — paper/shadow mode mein chalao, real orders alag permission se.
---
Bhai, sach bataun — market mein 95% retail waale ya toh paid API kharid lete hain ya phir WhatsApp groups join karke "signal" khareedte hain (zyadatar scam).
Asli trick yeh hai:
Mera engine 19 Aug tak 120 days collect kar chuka. Abhi NO_TRADE hi de raha kyunki edge clean nahi — par data accumulate hota rahega.
"Free + worry" wala gap yahi hai — main articles mein real gaps surface karta hoon (95% lose, leakage, scam AI groups, lying backtests) + free resources deta hoon.
---
Agar aapne abhi start kiya hai, yeh exact order follow karo:
**Step 1 — Environment (5 min)**
# Termux / Linux / Mac
npm install -g nse-bse-mcp
pip install beautifulsoup4
# Windows: same npm command in PowerShell, pip in CMD
**Step 2 — Pehla live data pull**
import subprocess, json
p = subprocess.Popen(["node","nse-bse-mcp/dist/stdio-server.js"],
stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)
# send initialize + tools/call nse_compile_option_chain {symbol:"NIFTY"}
Output milega: underlying, PCR, Max Pain, Max Call/Put OI. Verify karo number sahi hain.
**Step 3 — Pehla historical day**
# fetch BhavCopy_NSE_FO_0_0_0_20260818_F_0000.csv.zip
# parse NIFTY rows -> SQLite market_raw
**Step 4 — Daily automate**
Cron lagao jo har 16:00 IST bhavcopy fetch kare. 120 din baad aapke paas enough history hogi.
Poora engine code (`snapshot_recorder.py`, `feature_engine.py`, `signal_engine.py`) open-structure hai — modify karo apni zarurat ke hisaab se.
---
Mera banaya system 4 layers mein kaam karta hai:
MCP (live) + BhavCopy (EOD)
-> market_raw (immutable snapshots)
-> features_5m (PCR, regime, max_pain, walls)
-> KNN similar-search + walk-forward
-> Signal Gate (BUY / SELL / NO_TRADE)
Key principle: **MCP ek transport hai, aapka database nahi**. Durable intelligence aapke SQLite store + deterministic code mein rehti hai. MCP band bhi ho jaye (NSE endpoint change), aapka historical data safe rehta hai.
Signal gate strict hai:
Ye honest design hai — fake signals nahi generate karta.
---
| Mistake | Fix |
|---|---|
| Direct `nseindia.com/api/...` curl | Use nse-bse-mcp ya bhavcopy |
| `www.nseindia.com` bhavcopy URL | Use `nsearchives.nseindia.com` |
| Background daemon for stdio MCP | Run via stdio JSON-RPC |
| Expecting intraday from bhavcopy | EOD only; Dhan WS for intraday |
---
Maine apna engine 120 trading days tak chalaaya. Honest numbers:
| Metric | Value |
|---|---|
| Historical days | 120 |
| Similar states found (current market) | 39 |
| Next-day mean return | +0.10% |
| Next-day win rate | 52.6% |
| 5-day mean return | -0.02% |
| 5-day win rate | 40.5% |
| Latest signal | NO_TRADE (edge not clean) |
Ye dikhata hai: **data mil gaya, edge compute ho raha hai, par small hai**. Isliye gate NO_TRADE deta hai — fake signal nahi. Jab 200-300 days ho jayengi, cleaner edges milengi.
---
Is method ke boundary samjho:
1. **EOD only** — bhavcopy intraday nahi deta. Intraday ke liye Dhan WebSocket se khud record karo.
2. **NSE rate-limit** — live MCP calls kabhi timeout ho sakte hain. EOD bhavcopy reliable backbone hai.
3. **Small edge** — +0.10% next-day statistically mild hai. Options leveraged hain, cost-adjusted nahi hai abhi.
4. **No future guarantee** — historical edge ≠ future profit. Backtest ≠ live.
5. **Not financial advice** — research framework hai, trade order nahi.
---
| Source | Cost | What you get | Verdict |
|---|---|---|---|
| NSE BhavCopy (EOD) | Free | Full F&O OI history, daily | **Best free historical** |
| nse-bse-mcp | Free | Live chain + PCR | **Best free live** (rate-limited) |
| Dhan WebSocket | Free (broker) | Live tick data | Best for intraday record |
| TrueData / Sensibull | ₹2k-10k/mo | Per-minute OC history | Only if you need clean intraday |
| Paid API vendors | ₹2k+/mo | Convenience + support | Skip until you outgrow free |
**Bottom line:** Retail trader ke liye free stack (bhavcopy + MCP + Dhan) enough hai. Paid sirf tab jab intraday OC history mission-critical ho.
---
1. **Aaj hi start karo** — npm install + pehla bhavcopy fetch
2. **Daily cron lagao** — 16:00 IST auto-backfill
3. **120 din wait mat karo** — pehle 30 din bhi enough hai gate test ke liye
4. **Paper mode mein chalao** — real money se pehle 2-3 mahine observe karo
5. **Apna edge build karo** — PCR + OI change + regime combination tune karo
Mera engine abhi 120 days pe chal raha hai. Aage 200-300 days pe cleaner signals milengi.
---
**Problem: nse-bse-mcp 403 deta hai live call pe**
**Problem: BhavCopy download 404 deta hai**
**Problem: SQLite empty aa raha hai**
**Problem: Signal hamesha NO_TRADE de raha hai**
---
**Q: Kya NSE option chain sach mein free hai?**
Haan. NSE apna data free publish karti hai — live via MCP tools, historical via F&O BhavCopy archive. Paid vendors sirf convenience dete hain.
**Q: 403 error kyu aata hai direct API pe?**
NSE bot protection + rate-limiting lagati hai. Session cookie + proper headers chahiye — jo MCP packages khud handle kar deti hain.
**Q: Historical option chain free mein milegi?**
Haan, EOD (end-of-day) bhavcopy free hai. Intraday nahi — uske liye broker (Dhan) WebSocket se khud record karna padega.
**Q: Kya isse main directly trade kar sakta hoon?**
Nahi. Ye research framework hai. Edge small hai, options leveraged hain. Paper/shadow mode mein chalao, real orders alag permission se.
**Q: Mobile (Android/Termux) pe chalega?**
Haan. Maine Termux pe verify kiya — npm + Python dono work karte hain.
---
Related articles on our site cover PCR, option-chain OI reading, and Dhan WebSocket setup — linked below.
---
*Shakti Tiwari — Nifty Option Trader, XGBoost Expert. Educational only, not SEBI-registered advisory.*
*Free resources: trading journal, calculators, weekly report — WhatsApp 9169650895.*
*Books: Option Trading with AI (B0H9ZNTBPK) | The AI Opportunity (B0HBBFKDQF)*
---
**Related Articles (optiontradingwithai.in):**
**Connect:**
Also on Dev.to (primary): https://dev.to/shaktitiwari