Indian market data, end of day, one clean API.
NSE index closes with P/E, P/B and yield, every stock's day with delivery percent, FII/DII flows, futures and options, corporate actions, IPOs and rupee exchange rates. Plain JSON, the same key as the Mutual Fund API.
No card needed. Try the live demo on the right first, or open the explorer. Both use a shared demo key, so no sign-up either.
Loading…Loading…
What is in it
Four groups of end-of-day data, behind one key and one response format.
Indices and stocks
Every NSE index with open, high, low, close, P/E, P/B and dividend yield. Each stock's day with volume, trades and delivery quantity and percent, plus ranked movers.
Flows and large deals
FII and DII cash-market buy, sell and net, participant-wise open interest, and bulk and block deals with client, side, quantity and price.
Futures and options
Futures per expiry with settlement, open interest and its change. Options summed per underlying and expiry: call and put open interest, volume and put/call ratios.
Corporate events
Dividends, splits, bonus, rights and buybacks by ex-date, board meetings and results dates, and IPOs with price band, subscription and listing date.
Currency
Rupees for one unit of USD, EUR, GBP, JPY and ten more currencies, daily since 2020, from ECB reference rates.
One key, same rules
The key for the Mutual Fund API works here, with the same envelope, errors and limits: 120 requests a minute and a monthly quota. See pricing.
Call it from anywhere
One header, x-api-key. Every response uses the same envelope: status, statusCode, message, data.
curl -H "x-api-key: YOUR_KEY" \ "https://fin.ejiapi.com/api/market/indices/Nifty%2050/history?start=2026-10-01"
import requests
r = requests.get(
"https://fin.ejiapi.com/api/market/indices/Nifty 50/history",
params={"start": "2026-10-01"},
headers={"x-api-key": "YOUR_KEY"},
timeout=30,
)
for day in r.json()["data"]:
print(day["date"], day["close"], day["pe"], day["pb"])
const url = "https://fin.ejiapi.com/api/market/equity/movers?by=deliveryPct&limit=10";
const res = await fetch(url, { headers: { "x-api-key": "YOUR_KEY" } });
const { data } = await res.json();
data.forEach((s) => console.log(s.symbol, s.deliveryPct, s.changePct));
Where the data comes from
No black boxes. Each group has a named public source, and the status page shows how fresh each one is.
| Data | Source | History held |
|---|---|---|
| Indices, stocks, participant open interest | NSE end-of-day files | From the first load; deeper history is added by dated files |
| Futures and options | NSE F&O bhavcopy | Options are kept as per-expiry totals, not per strike |
| FII/DII flows, bulk and block deals | NSE, newest session only | Starts the day this API first stored it |
| Corporate actions, results dates, IPOs | NSE announcements | Actions for one year; IPO list back to 2012 |
| Currency | ECB reference rates, not RBI/FBIL | Daily since 2020 |
Questions
Do I need a key to try it?
/api/market/coverage) is open to everyone. Everything else needs your own key.