TEJHQ
01Open · Markets · India

ADJUSTED PRICES.
NO SURVIVORSHIP BIAS.

TejHQ starts from the raw NSE and BSE bhavcopy and ships what nobody else gives away: closes back-adjusted for splits, bonuses and dividends, keyed by ISIN so a series survives renames and mergers, and a monthly liquid universe built point-in-time so delisted names stay in the months they qualified for. Parquet on HuggingFace every trading day, keyless API on top, MIT.

4,339
NSE symbols
6
Parquet trees
20:00
IST · Mon to Fri
MIT
Pipeline · API · site
EOD
Bhavcopy · CMTS
NSE+BSE
Equity · A · B · T · EQ · BE · BZ
PARQUET
Polars · DuckDB · Pandas
3 surfaces · 1 source1 shape
NSE · 2026-09-07
RELIANCE1,309.50-0.95%·TCS2,270.00-1.48%·HDFCBANK710.50-0.22%·INFY1,087.50-3.76%·ICICIBANK1,427.50+0.30%·SBIN1,005.90-1.00%·ITC263.50-0.23%·BHARTIARTL1,854.00+0.76%·LT3,999.00+0.88%·AXISBANK1,266.00-0.55%·MARUTI12,760.00+0.52%·ASIANPAINT2,500.90-1.04%·HINDUNILVR1,960.00-0.68%·BAJFINANCE1,060.00-0.05%·
RELIANCE1,309.50-0.95%·TCS2,270.00-1.48%·HDFCBANK710.50-0.22%·INFY1,087.50-3.76%·ICICIBANK1,427.50+0.30%·SBIN1,005.90-1.00%·ITC263.50-0.23%·BHARTIARTL1,854.00+0.76%·LT3,999.00+0.88%·AXISBANK1,266.00-0.55%·MARUTI12,760.00+0.52%·ASIANPAINT2,500.90-1.04%·HINDUNILVR1,960.00-0.68%·BAJFINANCE1,060.00-0.05%·
Cron 20:00 IST · Mon to Fri · data by ~20:30
Trading days
4,109
NSE since 2010-01-04 · BSE 532 since 2024-07-08
Parquet trees
6
bhavcopy → universe
Rows published
8,398,429
bhavcopy rows · NSE + BSE · to 2026-09-07
Symbols
4,339
NSE · every listing since 2010
02Live · Tape · Same-shape

Fourteen columns.
Zero surprises.

One row per (symbol, date). Hive-partitioned Parquet, zstd-compressed. Polars, DuckDB, Pandas: whichever you already use.

Why not scrape it yourself
sourceyou getyou do not
Kite Connect historicalBroker candles over an APINeeds a trading account. Terms restrict redistribution. No corporate actions, ISIN continuity or point-in-time universe.
nsepy, jugaad-dataRaw bhavcopy through a scraperNo corporate actions, adjustment, ISIN continuity or point-in-time universe. You own the breakage when the exchange changes its site.
TrueData and other vendorsCleaned feeds, support deskPer-seat and closed. You cannot redistribute what you pull.
TejHQRaw bhavcopy, actions, adjusted close with ISIN continuity, point-in-time universe. MIT, redistributable.Intraday. It is EOD only. Adjusted prices need a free key, universes need Pro.
RELIANCE.NS1,309.50-0.95%
125012741298132213461309.50
06-1007-1408-1109-07
OHLC · daily · NSE · 60 sessions to 2026-09-07 2.71%
# python · polars
import polars as pl
from huggingface_hub import hf_hub_download

p = hf_hub_download(
    "tejhq/indian-markets",
    "nse/year=2026/nse_2026.parquet",
    repo_type="dataset",
)

df = pl.read_parquet(p)
df.filter(
    (pl.col("date") == pl.date(2026, 9, 7))
    & pl.col("symbol").is_in(["RELIANCE", "TCS"])
).select("symbol", "close")
# RELIANCE 1309.5, TCS 2270.0
tejhq/indian-marketson huggingface →
nse · 2026-09-07 · 6 sample rows · %chg vs prev_close
symbolseriesisinclosevolume%chg
RELIANCEEQINE002A010181309.5010.2M-0.95%
TCSEQINE467B010292270.002.3M-1.48%
HDFCBANKEQINE040A01034710.5012.2M-0.22%
INFYEQINE009A010211087.507.7M-3.76%
ITCEQINE154A01025263.506.7M-0.23%
BHARTIARTLEQINE397D010241854.006.0M+0.76%
03Datasets · Six trees · One source

Not one dataset.
Six, joined by ISIN.

tej-bazaar, the open pipeline, publishes six parquet trees to HuggingFace every trading day. Each one composes with the next. Same partitions, same keys, same guarantees.

01 · tree

bhavcopy

core
nse/ · bse/.parquet

Raw end-of-day OHLCV straight from official SEBI CMTS bhavcopy. Cleaned, deduped, typed.

14 colsyear · rollup
02 · tree

actions

actions/<ex>_<YYYY>.parquet

Corporate actions classified - dividend, split, bonus, rights, buyback, demerger, merger.

11 colsyear · annual
03 · tree

prices_adjusted

prices_adjusted/<ex>_<YYYY>.parquet

Back-adjusted close. Reverse cumprod over splits, bonuses, dividends, per instrument chain across ISIN changes. Reconciled vs Yahoo.

16 colsyear · annual
04 · tree

symbol_history

symbol_history/<ex>.parquet

ISIN to symbol intervals. Resolves rename drift across post-merger or pre-split identifiers.

6 colsexchange · single
05 · tree

metrics

screener-grade
metrics/<ex>_<YYYY>.parquet

1d/5d/21d/63d/126d/252d/YTD returns, 52w hi/lo, 20d & 60d avg volume, 20d avg turnover.

13 colsyear · annual
06 · tree

universe

no survivorship bias
universe/<ex>_liquid.parquet

Monthly top-500 by trailing 63-day turnover, ranked with only data available on each rebalance date. Delisted names stay in the months they qualified for.

8 colsexchange · single
07 · planned

fundamentals

fundamentals/<ex>_<YYYY>.parquet

ISIN-keyed filings: revenue, EBITDA, EPS, net debt. Joins to every other tree on ISIN.

planned · not built yet · no date
03 · prices_adjusted · reconciliation

Adjusted close reconciles within ±1% of Yahoo Finance on 96.9% of 25,329 daily comparisons across 48 large NSE names. Forty-six of them sit at 99% or above. The two that do not are Yahoo disagreeing with the exchange: a bonus Yahoo dates five months early, and a demerger Yahoo scales for while NSE convention leaves it alone. Per-symbol report →

join key · isin · stable across renames + mergersbrowse on huggingface →
04Schema · 14 columns · 1 row per (symbol, date)

The shape your DataFrame
already speaks.

Same shape across NSE and BSE, every trading day, every symbol. ISIN-keyed, series-tagged, types locked. No guessing what last means in row 47,231.

identity
5 cols
price
6 cols
flow
3 cols
01
date
Trading date
Date
02
symbol
Ticker - RELIANCE, TCS
Utf8
03
series
EQ · BE · BZ · A · B · T
Utf8
04
isin
International Securities ID
Utf8
05
name
Full instrument name
Utf8
06
open
First traded price
Float64
07
high
Day's high
Float64
08
low
Day's low
Float64
09
close
Closing price
Float64
10
last
Last traded price
Float64
11
prev_close
Previous session close
Float64
12
volume
Total shares traded
Int64
13
turnover
Total value (₹)
Float64
14
trades
Number of trades executed
Int64
partitioned by · year · one rollup per exchangefull schema docs →
05Built for · who ships with TejHQ

Made for the
workflow you already have.

One dataset, four shapes of work. Pick yours - the snippet drops straight in.

01 · persona

Quants

Stop paying for stale tickers.

Build factor models on every NSE+BSE equity, not just NIFTY 50. Cross-sectional research, no licence chatter.

df.group_by("symbol")
  .agg(pl.col("close").pct_change())
02 · persona

Backtesters

Walk-forward without scraping.

One parquet per year, sorted by (symbol, date) - filter a date range, get exactly the universe that traded those days.

df.filter(pl.col("date")
  .is_between(D0, D1))
03 · persona

ML researchers

Same shape your model already eats.

Parquet → DataFrame → tensor. ISIN-keyed joins to fundamentals, news, alt data. No ETL boilerplate.

ds = HF.load("tejhq/indian-markets")
model.fit(ds.to_torch())
04 · persona

Dashboards

Ship a chart in an afternoon.

DuckDB-over-HTTP, no server. Streamlit, Observable, Grafana - whatever renders SQL, renders TejHQ.

SELECT date, close
FROM 'hf://.../**/*.parquet'
WHERE symbol = 'RELIANCE'
06Pricing · Free open data · Pay for the API

Data stays free.
The API pays for itself.

tej-bazaar parquet on HuggingFace, MIT, forever. Paid tiers fund the cron and the servers. Early customers are onboarded by hand: email us, we reply and switch your key the same day.

00 · tier

Open

₹0forever

The whole dataset. No signup.

Researchers · students · hackers

  • +All parquet trees on HuggingFace and R2
  • +Keyless API: OHLCV, snapshots, corp actions
  • +NSE since 2010, BSE since 2024-07
  • +Weekday cron at 20:00 IST, data by ~20:30
  • +MIT-licensed pipeline and API
Pull from HF
01 · tier

Free key

₹0per month

Sign in by email, get a key in a minute.

Solo quants · indie devs · students

  • +1,000 API calls / day, 300 / min
  • +/adjusted: split and dividend adjusted
  • +/symbols: symbol history by ISIN
  • +Usage in /v1/me, revoke any time
  • +No card, no password
Get a key
02 · tier

Pro

₹4,999per month

Built for the strategy you actually trade.

Active backtesters · prop traders · small RIAs

  • +500,000 API calls / day
  • +/universe: point-in-time liquid100 / 250 / 500
  • +/metrics, /batch, /resolve
  • +/screener: filter the market by any metric
  • +Email support, we reply
Email to upgrade
03 · tier

Team

₹24,999per month

Several people, one invoice.

Small funds · fintech teams · research desks

  • +Everything in Pro
  • +Up to 10 accounts on one bill
  • +Custom quotas per key
  • +Direct line to the people who run the cron
  • +Invoice in INR or USD
Email to set up
open tier · mit licence

If we stop,
run it yourself.

The pipeline is MIT and the source is the exchange's own bhavcopy. Nothing here depends on us staying in business: clone tej-bazaar, backfill from 2010-01-04, and the same parquet is on your own disk.

git clone https://github.com/tejhq/tej-bazaar && cd tej-bazaar
pip install -e .
tej-bazaar backfill --from 2010-01-04 --to $(date +%F) --exchange NSE
tej-bazaar backfill --from 2024-07-08 --to $(date +%F) --exchange BSE
04 · enterprise

Enterprise.

Funds, brokerages, exchanges, fintech infra. Talk to us about volume, white-label, on-prem mirrors, and custom data partnerships.

Talk to founders
  • +Custom volume · pay-as-you-go credits
  • +Dedicated R2 / S3 mirror · region of choice
  • +On-prem / VPC parquet sync · airgap option
  • +White-label SDKs · branded docs
  • +Direct line to data engineering
  • +Custom datasets · alt data partnerships
billing · manual for now · invoice in inr or usd · card and upi payment links on requeststartup credits? apply →
07Ecosystem · Surfaces · One source

One source.
Three ways in.

Bazaar ingests it. CLI fetches it. API serves it. Same schema, same partitions, same guarantees end-to-end.

01● Live

tej-bazaar

/ the pipeline

Bhavcopy + corp actions + back-adjusted close + symbol history + derived metrics + liquidity universe. Six parquet trees, one weekday cron, all on HuggingFace.

  • +NSE since 2010 · BSE since 2024-07
  • +6 parquet trees · ISIN-keyed
  • +Back-adjusted · ISIN continuity
  • +MIT · cron 20:00 IST
View pipeline
02● Live

tej-sdk

/ the clients

pip install tejhq or npm install tejhq. Same surface in Python and TypeScript, zero runtime dependencies, plain rows that drop straight into polars, pandas, or a chart.

  • +Python 3.9+ · stdlib only
  • +TypeScript · Node 18+ · Bun · Deno · browsers
  • +ohlcv · actions · adjusted · metrics · universe · batch · resolve
Get the SDK
03● Live

tej-api

/ the network

Hosted REST over the six trees. Keyless free tier served from the edge, free key for adjusted prices, Pro for universes, metrics, batch and resolve.

  • +REST · v1 · OpenAPI
  • +api.tejhq.dev · keyless tier
  • +Cloudflare edge + DuckDB origin
  • +Free key · Pro ₹4,999/mo
See pricing
same schema · 14 columns · isin-keyedgithub.com/tejhq →