Use cases · for developers matching messy company names
Search Indian companies by name with an API
Last updated 11 November 2026 · by Venu Gopal Reddy Muvva, founder
Call GET /api/v1/companies/enrich?name=<name>, optionally with &state=<state>, to get the best single match with a confidence score and up to three alternatives. Or POST /api/v1/companies/search with "q" to list every company whose name, legal name, alias, website domain, CIN or NSE symbol contains your text. Enrich costs 1 credit on a match and nothing otherwise; search costs 0.01 credits a result. Set min_confidence so a weak match comes back as no match instead of the wrong company.
Steps in IndianFirmData
1. Clean the name you have
Pass the name as the user typed it; the API normalises case, punctuation and common suffixes such as Pvt Ltd. Add the state if you know it: a matching state raises the score, a different one lowers it a lot.
2. Enrich for one best match
GET /api/v1/companies/enrich?name=Tata%20Consultancy%20Services&state=Maharashtra returns match.method (name), match.confidence, match.alternatives and the full company record.
3. Set a confidence floor
Add &min_confidence=0.9 for automatic decisions. Below the floor the API returns match: null with reason below_min_confidence and costs nothing; show the alternatives to a person instead.
4. Search when you want a list
POST /api/v1/companies/search with {"q": "zoho", "limit": 25} for a contains-match across names, aliases, domains, CINs and NSE symbols, combined with any filters such as state or listing_status.
curl
# One best match, with alternatives (1 credit on a match, 0 otherwise)
curl "https://indianfirmdata.com/api/v1/companies/enrich?name=Infosys&state=Karnataka&min_confidence=0.9" \
-H "Authorization: Bearer $IFD_API_KEY"
# Every company whose name, alias, domain, CIN or NSE symbol contains the text (0.01 credits a result)
curl -X POST "https://indianfirmdata.com/api/v1/companies/search" \
-H "Authorization: Bearer $IFD_API_KEY" -H "content-type: application/json" \
-d '{"q": "infosys", "filters": {"listing_status": "listed"}, "limit": 10}'Python
from indianfirmdata import IndianFirmData
ifd = IndianFirmData()
res = ifd.enrich(name="Infosys Ltd", state="Karnataka", min_confidence=0.9)["data"]
if res["match"]:
print(res["company"]["name"], res["company"]["cin"], res["match"]["confidence"])
else:
print("No confident match:", res["reason"], res["best_confidence"])How the score works
The score is the best name similarity between your text and the company's display name, legal name and known aliases, nudged up when the state matches and when more independent sources agree on the record, and pushed down by 0.15 when the state is different. An exact identifier always beats a name: if you have a CIN, LEI, ISIN, NSE symbol or website, send that instead: the match confidence is 0.95 to 0.99 (0.85 when only a parent domain matches).
When IndianFirmData is not the right tool
If the company is a small unlisted private company, it may not be in the index yet, because the full MCA master is not loaded. Name search also cannot tell two genuinely identical names apart without a state or an ID; ask for the CIN in that case.
Questions
Does a name search cost anything when nothing matches?
No. Enrich charges 1 credit only on a match. Search charges 0.01 credits per result returned, so an empty result costs nothing.
Can I search by a director's name?
There is a person_name filter on public business roles we hold, mostly from Wikidata. It is not an MCA director (DIN) search.
Can my AI agent do this?
Yes. The MCP tools enrich_company and search_companies take the same name, state and q parameters.
Try it on a company you know.
Start free — 3 months on usRelated: Enrich sign-ups by website · Python client · Find companies by state and industry · IndianFirmData vs Crustdata · Pricing