Skip to content

About

MCA21 company search, CIN parser & XBRL financials for Indian private companies — no API key needed

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mca-lookup

MCA21 company search and financial data for Indian private companies.

India's financial data gap: while US investors can look up any SEC-registered company's financials in seconds via EDGAR, Indian investors have no easy way to research private companies. mca-lookup bridges that gap using the MCA21 (Ministry of Corporate Affairs) portal.

pip install mca-lookup
mca-lookup search "Tata Motors"
mca-lookup info L28920MH1945PLC004520
mca-lookup cin L17110MH1973PLC019786

The Problem

  • ~15 lakh active companies in India are registered with MCA
  • Private companies (Pvt Ltd) file financial statements with MCA but there's no easy API
  • Investment bankers and analysts spend hours on Zauba Corp / Tofler / ROC search
  • CIN (Corporate Identity Number) contains structured info that most tools ignore

Features

  • Company search by name or CIN (Corporate Identity Number)
  • CIN parser — extract listing status, state, year, company type from a 21-char CIN
  • Director lookup — active directors with DIN, designation, appointment date
  • XBRL financial parser — parse MCA annual filing XBRL data (IN-GAAP + Ind AS)
  • No API key required — uses MCA21 public portal

Installation

pip install mca-lookup          # basic
pip install mca-lookup[rich]    # with colourful terminal output

CLI Usage

# Search by company name
mca-lookup search "Reliance Industries"
mca-lookup search "Zomato" --limit 5

# Full company profile by CIN
mca-lookup info L17110MH1973PLC019786

# Parse and validate a CIN
mca-lookup cin U72200TN2010PTC075219

CIN Output Example

╭─ CIN Analysis ─────────────────────────────────────╮
│ CIN: U72200TN2010PTC075219                          │
│ Listing: Unlisted                                    │
│ NIC Code: 72200  ·  State: Tamil Nadu (TN)          │
│ Year of Incorporation: 2010                         │
│ Company Type: Private Limited Company (PTC)         │
│ Serial No: 075219                                   │
╰─────────────────────────────────────────────────────╯

Python API

Search companies

from mca_lookup import MCAClient

client = MCAClient()

# Search by name
companies = client.search("Bajaj Finance")
for c in companies:
    print(c.cin, c.company_name, c.status)

# Lookup by CIN
info = client.get_company("L17110MH1973PLC019786")
print(f"{info.company_name}: ₹{info.paid_up_capital_cr:.0f} Cr paid-up capital")

Get directors

profile = client.get_profile("L17110MH1973PLC019786")
for d in profile.info.active_directors():
    print(f"{d.din}  {d.name}  {d.designation}")

Parse a CIN

from mca_lookup.cin import parse_cin, is_valid_cin, is_listed

cin = "L17110MH1973PLC019786"
print(is_valid_cin(cin))     # True
print(is_listed(cin))        # True (L prefix = Listed)

parsed = parse_cin(cin)
# {
#   "valid": True,
#   "listing": "Listed",
#   "nic_code": "17110",
#   "state_name": "Maharashtra",
#   "year_of_incorporation": 1973,
#   "company_type_name": "Public Limited Company",
#   ...
# }

Parse XBRL financials

from mca_lookup.xbrl import parse_xbrl_financials

with open("annual_filing.xml") as f:
    xbrl = f.read()

financials = parse_xbrl_financials(xbrl, cin="L17110MH1973PLC019786", fiscal_year="FY2024")
print(f"Revenue: ₹{financials.revenue_cr:,.0f} Cr")
print(f"PAT Margin: {financials.pat_margin:.1%}")
print(f"Debt/Equity: {financials.debt_to_equity:.2f}x")

Understanding CINs

Every Indian company has a 21-character CIN that encodes:

L  17110  MH  1973  PLC  019786
│   │      │    │     │     │
│   │      │    │     │     └── Serial number
│   │      │    │     └──────── Company type (PLC/PTC/OPC/NPL...)
│   │      │    └────────────── Year of incorporation
│   │      └─────────────────── State code (MH=Maharashtra, DL=Delhi...)
│   └────────────────────────── NIC industry code
└────────────────────────────── L=Listed, U=Unlisted, F=Foreign

Company Types

Code Meaning
PLC Public Limited Company
PTC Private Limited Company
OPC One Person Company
NPL Non-Profit (Section 8)
FLC Foreign Company
GOI Government of India entity

Data Sources & Limitations

MCA21 does not provide a public documented REST API. This library uses the same endpoints used by the MCA21 public portal (www.mca.gov.in), which:

  • May change without notice
  • Rate-limits excessive requests
  • Does not provide XBRL downloads directly via API (use the portal to download, then parse locally)

For production/commercial use, consider paid providers: Tofler, Zauba Corp, CDSL, BSE/NSE XBRL feeds.

Contributing

Contributions welcome — especially improvements to XBRL tag coverage, better sector classification, and LLP (Limited Liability Partnership) support.

License

MIT

About

MCA21 company search, CIN parser & XBRL financials for Indian private companies — no API key needed

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages