Instant API key
Sign up and your live and test keys are waiting in the dashboard. No approval queue.
Company master data, directors, charges, filings and extracted financials for every company registered in India — clean JSON, one API key, transparent pricing.
curl https://api.filesure.in/v1/companies/L74110KA2013PLC096530 \ -H "Authorization: Bearer fsk_live_••••"
import requests r = requests.get( "https://api.filesure.in/v1/companies/" + cin, headers={"Authorization": f"Bearer {KEY}"})
const res = await fetch( `https://api.filesure.in/v1/companies/${cin}`, { headers: { Authorization: `Bearer ${KEY}` } })
{ "data": { "cin": "L74110KA2013PLC096530", "company": "SWIGGY LIMITED", "masterData": { "companyData": { "companyStatus": "Active", "whetherListedOrNot": "Listed", "dateOfIncorporation": "09/12/2013", "authorisedCapital": "250000000000", "paidupCapital": "22390000000" }, "directorData": [ … 6 directors ], "indexChargesData": [] } }, "meta": { "priceChargedPaisa": 150 } }
Trusted by teams building on Indian company data
The Catalog
Six endpoint families, one consistent JSON envelope. Query by CIN or DIN and get verified registry data back in milliseconds.
GET /v1/companies/:cin
Master data: CIN, status, registered address, capital, category.
View docsarrow_forwardGET /v1/directors/:din
Director profile by DIN and the companies they're tied to.
View docsarrow_forwardGET /v1/companies/:cin/charges
Open and satisfied charges with lender and amount detail.
View docsarrow_forwardGET /v1/companies/:cin/filings
Every document a company has filed — list, filter, download.
View docsarrow_forwardGET /v1/companies/:cin/extractions
Structured data from MGT-7, PAS-3, AOC-4 and charge forms.
View docsarrow_forwardPOST /v1/companies/:cin/unlock
Unlock a company to trigger a fresh MCA pull and open its documents.
View docsarrow_forwardYour Control Panel
Your developer dashboard
Coverage & Freshness
Every record traces back to the Ministry of Corporate Affairs — no scraped intermediaries.
Force a fresh registry pull for any company the moment you need the latest state.
The Difference
Most company-data vendors make you talk to sales before you see a single response. Here's the whole journey — no gatekeeping.
Sign up and your live and test keys are waiting in the dashboard. No approval queue.
GET /v1/companies/:cin { "name": "SWIGGY LIMITED", "status": "Active" }
Your test key hits live registry records, so what you build is what you ship.
Every endpoint's per-call price is on the rate card before you write a line of code.
Top up a prepaid wallet and spend only on successful calls — billed to the paisa. Failed calls are never charged.
From first signup to production traffic is four steps — and no human in the loop.
Use Cases
Underwrite with live charges and financials pulled straight from the registry.
Verify any counterparty before you onboard — directors, status, and history.
Watch a portfolio for new filings and charges as they hit the MCA.
Bulk company and director intelligence for analytics and enrichment.
Pricing
Every endpoint has a published price. Prepaid wallet, billed to the paisa. See exactly what each call costs before you write a line of code.
See the full rate cardGET /v1/companies/:cinGET /v1/directors/:dinPOST /v1/companies/:cin/unlockGET .../filings/:id/downloadTrust & Reliability
Every field traces back to the Ministry of Corporate Affairs.
Force a fresh registry pull whenever you need the latest.
TLS in transit, encrypted at rest. Keys you control.
GST-registered and GST-invoiced for every recharge.
Test against live registry records before you spend a paisa.
Developer Experience
boltOpenAPI 3.0 · ScalarGenerated from a hand-authored OpenAPI 3.0 spec and rendered with Scalar — one source of truth that stays in lock-step with the live API. Search every endpoint, read 117 real examples, and fire a request right from the page.
/v1/companies/{cin}The full MCA master-data packet — registration, type, capital, status, addresses, directors and charges — surfaced exactly as the MCA returns them.
Path parameters
cinstring21-char CIN, 6-char FCIN or 8-char LLPINrequiredQuery parameters
idTypeenumcin · fcin · llpin — auto-detect when omittedResponses
curl 'https://api.filesure.in/v1/companies/U74999HR2015FTC056386?idType=cin' \ --header 'x-api-key: YOUR_SECRET_TOKEN'
const res = await fetch( `https://api.filesure.in/v1/companies/${cin}`, { headers: { "x-api-key": KEY } }) const { data } = await res.json()
import requests r = requests.get( f"https://api.filesure.in/v1/companies/{cin}", headers={"x-api-key": KEY}) data = r.json()["data"]
import { request } from "undici" const { body } = await request( `https://api.filesure.in/v1/companies/${cin}`, { headers: { "x-api-key": KEY } })
req, _ := http.NewRequest("GET", "https://api.filesure.in/v1/companies/"+cin, nil) req.Header.Set("x-api-key", key) res, _ := http.DefaultClient.Do(req)
$ch = curl_init("https://api.filesure.in/v1/companies/$cin"); curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-api-key: $key"]); $res = curl_exec($ch);
require "net/http" uri = URI("https://api.filesure.in/v1/companies/#{cin}") req = Net::HTTP::Get.new(uri) req["x-api-key"] = key
var http = new HttpClient(); http.DefaultRequestHeaders.Add("x-api-key", key); var res = await http.GetStringAsync( $"https://api.filesure.in/v1/companies/{cin}");
{ "data": { "cin": "U74999HR2015FTC056386", "company": "CARS24 SERVICES PRIVATE LIMITED", "cinHistory": [], "nameHistory": [], "masterData": { "companyData": { "companyName": "CARS24 SERVICES PRIVATE LIMITED", "companyType": "Company limited by Shares", "classOfCompany": "Private", "dateOfIncorporation": "02/02/2015", "authorisedCapital": 100000000, "paidupCapital": 76934000, "companyStatus": "Active" } } }, "meta": { "priceChargedPaisa": 150 } }
FAQ
fsk_test_…) call the same endpoints against a fixed whitelist of sample CINs and DINs at zero cost, so you can build and verify your integration end to end without spending a paisa. Live keys (fsk_live_…) query the full registry and bill from your wallet — same code, just swap the key.402 until you top up — there is no overdraft or post-paid mode. Recharge, balance, and per-call costs are all in your dashboard.{ data, meta } envelope on success and { error, meta } on failure, with machine-readable error codes you can switch on. Every response carries an X-Request-ID header — quote it when you contact support and we can trace the exact call. List endpoints use offset pagination via ?page= and ?limit= (default 50, max 200). Full error-code table in the docs.Self-serve signup, a sandbox on real data, and pricing you can read before you commit.