I mapped India's public financial data endpoints so you don't have to

I mapped India's public financial data endpoints so you don't have to

3
calendar_today agoschedule3 min read
— Originally published at dev.to

Indian financial market data can cost companies lakhs of rupees every year.

But a lot of the underlying data is already publicly available.

The expensive part isn't always the data itself. It's figuring out where it lives and how to reliably consume it.

If you've ever tried building something around Indian financial data, you've probably encountered the same problems: undocumented endpoints, APIs with strange headers, inconsistent file formats, identifier changes, historical gaps, and datasets spread across different public sources.

I've spent a lot of time digging through those problems.

So instead of keeping the findings in a pile of scripts and notes, I mapped the endpoints I could find and open-sourced them.

What's in the repository?

The repository currently documents public endpoints covering several areas of Indian financial data.

Mutual fund NAV data

Around 14,000 mutual fund schemes with more than 18 years of NAV history.

There are also parameterized APIs for retrieving historical NAV timelines.

Expense ratios

Daily Total Expense Ratio (TER) data, broken down across the available regulatory expense components.

NSE index data

Historical valuation metrics including:

  • PE
  • PB
  • Dividend yield

The dataset covers 140+ NSE indices.

There's also historical Total Return Index (TRI) data for Nifty indices.

Industry AUM

Industry-wide mutual fund AUM statistics going back to 2009.

Corporate shareholding

Corporate shareholding data sourced from public iXBRL disclosures.

The goal isn't to build another financial-data product.

It's to make the underlying discovery work easier for developers building things on top of public data.

The interesting part: the data has traps

Finding an endpoint is only the beginning.

While mapping these sources, I ran into several things that could quietly cause problems in production.

Historical discontinuities

Some datasets have historical discontinuities around April 2019.

If you're building a long-term time series, you can't blindly assume that the data behaves consistently across the entire history.

Files that lie about their format

Some files claim to be one format while actually containing data in another.

That can be particularly annoying when you're writing automated ingestion pipelines that trust file extensions or content types.

Fund identifiers aren't always stable

Mergers, rebranding and other changes can make fund identifier mappings surprisingly messy.

If you're maintaining historical data, you need to account for those relationships rather than treating every identifier as permanently immutable.

The one-header problem

Here's one of my favorite examples.

There's a public corporate shareholding endpoint that appears to reject automated requests.

You might assume there's authentication, some elaborate anti-bot mechanism, or another access restriction involved.

In one case, the problem was simply the Origin header.

Remove it and the request works.

That's it.

One HTTP header was the difference between "this endpoint doesn't work" and getting the data immediately.

Why I open-sourced this

I've had to spend hours figuring out things that probably shouldn't take hours to figure out.

And I know I'm not the only developer doing it.

Someone building a portfolio tracker shouldn't have to spend days reverse-engineering network requests just to discover where historical data comes from.

Someone building a quantitative research tool shouldn't have to rediscover the same identifier mappings.

Someone building a fintech prototype shouldn't have to start from zero because the documentation around a public endpoint is scattered or nonexistent.

So I decided to put the findings in one place.

The repository is MIT licensed, so you can use it as a starting point for projects involving:

  • Indian fintech
  • Wealth management
  • Quantitative research
  • Portfolio tracking
  • Market analytics
  • Financial data pipelines

There are probably still gaps.

That's intentional.

I mapped what I could find, documented the behavior I encountered, and would rather have other developers extend it than keep trying to maintain a private collection of scripts.

One less thing to reverse-engineer

The data was public.

The documentation wasn't.

That's the problem I'm trying to solve with this repository.

If you're building something around Indian financial data, hopefully this saves you a few days of digging through network requests and figuring out why an otherwise perfectly reasonable API request gets rejected because of one header.

Repository: https://github.com/satwikbasu

If you know of other undocumented Indian market-data endpoints, PRs and contributions are very welcome.

🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

I Wrote a Script to Fix Audible's Unreadable PDF Filenames

snapsynapseverified - Apr 20

The Zero-Net-Loss Fleet & The Mercenary Squad: A Live AI Economy

DEVPlank - Aug 4

The Sovereign Vault — A Comprehensive Guide to Protocol-Driven AI

Ken W. Algerverified - Jun 4

Your AI Agent Skills Have a Version Control Problem

snapsynapseverified - Apr 22

5 Things This Playwright SQL Fixture Does So You Don't Have To

vitalicset - Apr 13
chevron_left
153 Points3 Badges
2Posts
0Comments
debugging systems and myself, one bug at a time

Related Jobs

View all jobs →

Commenters (This Week)

2 comments
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!