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 download its documents for a year. Check freshness for free, refresh the record from MCA for ₹1, fetch new filings for ₹150.
View docsarrow_forwardAI tools
FileSure is an MCP connector as well as an API, so an assistant can call it directly instead of you writing code against it. Connect it once to Claude, Cursor, Codex or ChatGPT and ask about any Indian company in plain language. Answers come from the same register data, at the same rates, as the API.
A test key is waiting on your dashboard at sign-up. It works on the sample companies with nothing charged.
https://api.filesure.in/mcp
Claude Code, Cursor and Codex take the key in a header; claude.ai and Claude Desktop sign in with your FileSure account.
The assistant picks the right calls, reads the filings and answers in your own words, with sources attached.
find_companySwiggy Limited, CIN L74110KA2013PLC096530get_companyCompany record, including its directorslist_filingsFilings for this financial yearSwiggy Limited has nine current directors on its register, and six filings this financial year. Two of them carry financial statements you can read as extractions.
Tool names and marks are the trademarks of their owners and are shown here to indicate compatibility only. FileSure is not affiliated with, endorsed or sponsored by them.
Your 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.GET /v1/companies/:cin/freshness (free) tells you how old our record is and whether any filing is missing a PDF; POST /v1/companies/:cin/update (₹1) re-reads the record and filing list from the MCA right now; and POST /v1/companies/:cin/documents/fetch (₹150) downloads the filings an unlocked company is missing. We do not cache API responses — every call returns live data. You're free to cache on your side; the response includes the timestamp so you always know what you're holding.{ 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.