I came across ISINs when I started to manage my finances in beancount, and realized I could specify all my trading in plain text transactions using ISINs as the identifier for the mutual fund - ended up writing a beancount plugin that fetched information from Kuvera using a user-supplied ISIN->KuveraID mapping.
However, that led me down a rabbit hole of ISINs, and I came out the other side with a small scraper that fetched all valid ISINs from the NSDL website.
The dataset and scraper code is here: https://github.com/captn3m0/india-isin-data. From all my research, I’m fairly confident that my README is most detailed and accurate description of ISIN code structures in India. You can browse the data online easily at https://flatgithub.com/captn3m0/india-isin-data
Each release is automatically tagged on GitHub, and a human-readable changelog is generated alongside: https://github.com/captn3m0/india-isin-data/releases
I don’t really have any use for this dataset. If anyone does think of one, I’d be happy to hear
There is some WIP to host the data on a lookup API as well (using Fly.io)
1 Like
Nice…
Such a professional (proper format, attribution, license, links) and sustainable (automation) effort.
Out of curiosity, how does this list compare to the list available at -
NSDL / Company Search / Securities with ISIN Codes.
For example, today’s list at the above page has 93,757 ISINs.
What’s missing in it compared to the one you have scraped together? (eg. expired/deleted ISINs?)
PS: Not sure if you are open to PRs yet.
Nevertheless, here’s one github.com/captn3m0/india-isin-data/pull/9
Somehow I’d never seen the CSV from the NSDL website . There are some differences however:
- The official CSV contains a few undocumented prefixes that I hadn’t seen before (INY, IN5-9) so that adds some 7k odd ISINs. These can be accounted for fairly easily.
- My dataset does include Expired/Blocked/Suspended ISINs, so that’s one important difference as you pointed out.
- The official CSV doesn’t include the majority of Government Securities (even active ones). For eg
IN4920200099
. My dataset has roughly 4.5k active Government Securities, so this might be an important difference for now.
- The official dataset does include pricing information, so it might be worth incorporating regardless.
Nevertheless, here’s one github.com/captn3m0/india-isin-data/pull/9
Thanks, merged
This is amazing. I was trying to look at ISIN data for structured / historic government debt levels and especially state governments, given how that data isn’t available in analysis / visualization friendly format. The idea was to get a realtime snapshot of post-poll-time stat that “X regime dumped so much loan on each of you”
1 Like
As a minor update, I went ahead and made a real API of the Mutual Fund data that I was using earlier for my finances: mf.captnemo.in ([Source]). Uses the Kuvera API and AMFI data, and updates automatically to get you NAV and other information.
Same response: https://mf.captnemo.in/nav/INF843K01FC8, https://mf.captnemo.in/kuvera/INF843K01FC8.
I’d seen some other public APIs for this, but nothing that used ISINs.