India MCA Company Data Scraper - CIN, Directors & Charges avatar

India MCA Company Data Scraper - CIN, Directors & Charges

Pricing

from $2.00 / 1,000 results

Go to Apify Store
India MCA Company Data Scraper - CIN, Directors & Charges

India MCA Company Data Scraper - CIN, Directors & Charges

India company data scraper & API (MCA / CIN lookup): enrich any Indian company by CIN and export name, status, incorporation date, RoC, category, authorized & paid-up capital, address, email, directors with DIN & registered charges. India KYC, due-diligence & B2B lead data โ€” fast, no login.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

1

Bookmarked

128

Total users

19

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

India MCA Company Data Scraper ๐Ÿ‡ฎ๐Ÿ‡ณ โ€” CIN Lookup, Directors (DIN), Capital & Registered Charges

Apify Actor

Enrich any registered Indian company by its Corporate Identification Number (CIN) or discover 1,000+ Indian corporate profiles in minutes. This India MCA company scraper and CIN lookup API transforms a list of CINs (or seed companies) into structured, analysis-ready corporate records: company name, legal status, date of incorporation, Registrar of Companies (RoC), company class & category, listing status, authorized & paid-up capital, registered office address, official email, the full board of directors (with DIN & appointment dates), and registered secured charges.

Export your results in bulk to JSON, CSV, Excel (XLSX), XML, or via the Apify API for India KYB/KYC onboarding, commercial credit & risk underwriting, B2B lead enrichment, M&A due diligence, and vendor compliance.

๐Ÿ’ก Built for: KYB and compliance teams, B2B lenders and fintech underwriting platforms, Indian B2B sales and lead-generation teams, M&A and legal due-diligence analysts, credit bureaus, and data engineers maintaining Indian corporate intelligence pipelines.


โšก At a glance

FeatureDetails
Target registry dataIndian registered companies (Public, Private, OPC, Government, Listed & Unlisted) keyed by 21-character CIN
Lookup & discovery modesExact bulk CIN list enrichment (cins), automatic CIN extraction from URLs (companyUrls), or corporate-graph expansion up to maxItems: 1000+
Core firmographicscin, companyName, status, classOfCompany, category, subcategory, listingStatus, dateOfIncorporation, dateOfLastAGM, dateOfBalanceSheet, registrationNumber, rocCode, numberOfMembers
Financial & capital fieldsauthorizedCapital, paidUpCapital (in INR), chargesCount, openChargesCount
Contact & location fieldsemail (registered official corporate email), registeredAddress, otherAddress, pincode, description
Board of directors (directors[])Full signatory & director list: name, din (Director Identification Number), beginDate, status, updatedOn, plus directorsCount
Secured liabilities (charges[])Registered charges against company assets: amount, assets, dateOfCreation, dateOfModification, status (OPEN / CLOSED)
Scale & speedPure HTTP parallel architecture (maxConcurrency up to 15) โ€” enriches 500 companies in ~90 seconds and scales to 1,000+ companies (0 duplicates)
AuthenticationNone required โ€” no MCA portal captchas, no login, no API keys
Export & integrationsJSON, CSV, Excel, XML, RSS, Apify API, Google Sheets, Make, Zapier, n8n, Snowflake, BigQuery & webhooks

๐Ÿ“‹ Table of contents


๐Ÿ”Ž Why scrape India MCA company data?

Every company incorporated in India under the Ministry of Corporate Affairs (MCA) is assigned a unique 21-character Corporate Identification Number (CIN) โ€” such as L17110MH1973PLC019786 (Reliance Industries) or L22210MH1995PLC084781 (Tata Consultancy Services). Tied to that CIN is the company's statutory corporate record: its legal standing (Active, Strike Off, Under Liquidation), share capital structure, registered office address, statutory filing dates (last AGM and balance sheet), board of directors (each identified by a unique DIN), and secured bank loans (registered charges).

Looking up companies manually one by one across registry pages, solving captchas, and copying director tables and charge ledgers by hand is impossible when you have hundreds or thousands of vendors, borrowers, or B2B prospects. This India MCA company scraper automates the entire workflow: pass a list of CINs (or let the scraper expand from seed companies) and receive a clean, normalized JSON/CSV/Excel dataset in seconds.

Common reasons teams scrape Indian corporate registry data:

  • ๐Ÿ›ก๏ธ Automated KYB & vendor onboarding โ€” instantly verify whether an Indian counterparty is Active or Strike Off, confirm its incorporation date, and validate its registered office address.
  • ๐Ÿฆ Commercial lending & credit-risk underwriting โ€” inspect authorizedCapital, paidUpCapital, openChargesCount, and individual secured charges[] to evaluate leverage and existing asset pledges before extending credit.
  • ๐Ÿงฒ B2B sales & account enrichment โ€” enrich raw CIN lists (from GST invoices, tender awards, or trade directories) with the company's official registered email, director names (directors[]), and paid-up capital to prioritize high-value accounts.
  • ๐Ÿ•ต๏ธ M&A, legal & investigative due diligence โ€” map board memberships via DIN (din), audit AGM and balance-sheet filing compliance (dateOfLastAGM, dateOfBalanceSheet), and review historical asset charges.
  • ๐Ÿ“Š Sector & regional market mapping โ€” build 1,000+ company datasets across Maharashtra, Karnataka, Delhi, Gujarat, Tamil Nadu, and Telangana for market sizing.

โœจ What this India MCA scraper does

  • โœ… Bulk CIN lookup & enrichment โ€” pass 1, 100, or 1,000+ CINs and get a complete structured company profile for each.
  • โœ… Automatic corporate-graph expansion for 1,000+ runs โ€” when you leave cins empty or set maxItems higher than the number of seed CINs provided (e.g. maxItems: 1000), the scraper automatically discovers related subsidiaries, industry peers, and group companies to fulfill your full target count.
  • โœ… URL-aware input parsing โ€” paste any company profile URL containing a CIN into companyUrls (or cins) and the 21-character CIN is extracted and normalized automatically.
  • โœ… Complete statutory firmographics โ€” extracts companyName, status, classOfCompany, category, subcategory, listingStatus, dateOfIncorporation, dateOfLastAGM, dateOfBalanceSheet, registrationNumber, rocCode, numberOfMembers, authorizedCapital, paidUpCapital, email, registeredAddress, otherAddress, pincode, and description.
  • โœ… Board of directors with DIN (directors[]) โ€” returns every listed director/promoter with name, din, beginDate, status, and updatedOn, plus directorsCount.
  • โœ… Registered secured charges (charges[]) โ€” captures amount, assets, dateOfCreation, dateOfModification, and status, alongside summary counters chargesCount and openChargesCount.
  • โœ… Dual-tier high-coverage architecture โ€” combines a deep primary corporate data layer with an automatic secondary fallback layer (dataSource: "primary" vs "secondary") to achieve ~100% lookup resolution across valid Indian CINs.

๐Ÿงฉ Understanding the 21-character Indian CIN

Every Indian CIN follows a strict 6-part structure (L17110MH1973PLC019786) that you can also use to filter and segment your exported dataset:

PositionExampleMeaning
1st characterL or UListing status: L = Listed on a recognized Indian stock exchange; U = Unlisted
Digits 2โ€“617110NIC industry code: 5-digit National Industrial Classification activity code
Letters 7โ€“8MH, KA, DL, GJState code: Two-letter Indian state/UT of registration (MH = Maharashtra, KA = Karnataka, DL = Delhi)
Digits 9โ€“121973Year of incorporation: Four-digit founding year
Letters 13โ€“15PLC, PTC, OPC, GOIOwnership class: PLC = Public Limited, PTC = Private Limited, OPC = One Person Company, GOI = Government of India
Digits 16โ€“21019786Registration number: 6-digit sequential number assigned by the state Registrar of Companies (RoC)

๐ŸŽฏ High-value use cases

1. Fintech & B2B credit underwriting

Before approving working-capital loans, invoice discounting, or trade credit to an Indian enterprise, underwriting pipelines query this Actor by CIN to check three critical signals:

  1. Is status === "Active" and is dateOfBalanceSheet recent?
  2. Does paidUpCapital support the requested credit line?
  3. How many openChargesCount exist in charges[], and what amount and assets are already pledged to other lenders?

2. B2B lead enrichment (pairing with IndiaMART & GST data)

Raw supplier lists often lack decision-maker names, company size indicators, or official emails. Enriching Indian companies via this scraper appends the board of directors (directors[].name), the statutory corporate email, and paid-up capital (an objective proxy for company scale).

3. Continuous KYB & vendor portfolio monitoring

Schedule monthly runs across your active vendor CIN list to detect companies whose status shifts from Active to Strike Off or Under Liquidation, or companies that register sudden large new secured charges.


๐Ÿ“ฅ Input configuration

All fields are optional. Paste your own list of CINs, or run with default settings to automatically enrich a sample (or scale to 1,000+ companies by raising maxItems).

FieldTypeDefault / PrefillDescription
cinsarray<string>Prefill: 2 seed CINsCorporate Identification Numbers (21 characters, e.g. L17110MH1973PLC019786), one per entry. Leave empty or combine with a higher maxItems to auto-discover related Indian companies.
companyUrlsarray<string>[]Optional: paste any company URLs that contain a 21-character CIN; the scraper extracts the CIN automatically.
includeChargesbooleantrueInclude each company's charges[] array (secured loans and asset pledges). Set to false for lighter records.
maxItemsintegerDefault 0 (Prefill 50)Maximum companies to return (0 = enrich all provided cins; set to 100, 500, or 1000+ to automatically expand and enrich related Indian companies).
maxConcurrencyinteger5 (1โ€“15)Number of parallel company lookups. Raise to 10โ€“15 for high-speed bulk runs.
proxyConfigurationobject{ "useApifyProxy": true }Proxy configuration. Default Apify Proxy works out of the box.

Input example 1 โ€” Enrich a specific list of CINs (maxItems: 0)

{
"cins": [
"L17110MH1973PLC019786",
"L22210MH1995PLC084781",
"L85110KA1981PLC013115",
"L65920MH1994PLC080618"
],
"includeCharges": true,
"maxItems": 0
}

Input example 2 โ€” Discover & enrich 1,000+ Indian companies automatically

{
"cins": [
"L17110MH1973PLC019786",
"L22210MH1995PLC084781"
],
"includeCharges": true,
"maxItems": 1000,
"maxConcurrency": 10
}

๐Ÿ“ค Output dataset & examples

Each company is saved as a single structured JSON record containing its statutory firmographics, directors[], and charges[].

Sample output record

{
"cin": "U00000PB2003PTC026066",
"dataSource": "primary",
"companyName": "A.N.E. INDUSTRIES PRIVATE LIMITED",
"status": "Active",
"classOfCompany": "Private",
"category": "Company limited by Shares",
"subcategory": "Non-govt company",
"listingStatus": "Unlisted",
"dateOfIncorporation": "29-05-2003",
"dateOfLastAGM": "30-09-2022",
"dateOfBalanceSheet": "31-03-2022",
"registrationNumber": "026066",
"rocCode": "RoC-Chandigarh",
"numberOfMembers": "0",
"authorizedCapital": "2,00,00,000",
"paidUpCapital": "1,94,91,000",
"email": "rajinder@aneindustries.com",
"registeredAddress": "CHANDIGARH ROAD NAWANSHAHR Nawan Shehar PB 144514 IN",
"otherAddress": null,
"pincode": "144514",
"description": "A.N.E. INDUSTRIES PRIVATE LIMITED is a Private registered under RoC-Chandigarh...",
"directors": [
{
"name": "GAGANDEEP SINGH",
"din": "01655358",
"beginDate": "2003-05-29",
"status": "Approved",
"updatedOn": "2019-06-26"
}
],
"directorsCount": 2,
"chargesCount": 103,
"openChargesCount": 53,
"charges": [
{
"amount": "64390000",
"assets": "Movable property (not being pledge)",
"dateOfCreation": "19/06/2013",
"dateOfModification": null,
"status": "OPEN"
}
],
"url": "https://www.indiafilings.com/search/company-cin-U00000PB2003PTC026066",
"scrapedAt": "2026-11-10T02:00:00.000Z"
}

๐Ÿ“Š Field reference & coverage

๐Ÿ›๏ธ Statutory Identity & Classification

FieldTypeCoverageDescription
cinstring๐ŸŸข High (100%)21-character Corporate Identification Number (unique primary key).
companyNamestring๐ŸŸข High (100%)Official registered legal name of the company.
statusstring | null๐ŸŸข High (~99%)Current registry status (Active, Strike Off, Amalgamated, Under Liquidation, etc.).
classOfCompanystring | null๐ŸŸข High (~99%)Public, Private, or One Person Company.
categorystring | null๐ŸŸข High (Primary)Company category (e.g. Company limited by Shares, Company limited by Guarantee).
subcategorystring | null๐ŸŸข High (Primary)Subcategory (e.g. Non-govt company, Union Govt company, Subsidiary of Foreign Company).
listingStatusstring | null๐ŸŸข High (100%)Listed or Unlisted.
registrationNumberstring | null๐ŸŸข High (100%)6-digit RoC registration number.
rocCodestring | null๐ŸŸข High (Primary)Registrar of Companies jurisdiction (e.g. RoC-Mumbai, RoC-Bangalore, RoC-Delhi).
dataSourcestring๐ŸŸข High (100%)"primary" (full director/charge profile) or "secondary" (core statutory fallback).

๐Ÿ’ฐ Capital, Filings & Contact Details

FieldTypeCoverageDescription
authorizedCapitalstring | null๐ŸŸข High (100%)Authorized share capital in INR.
paidUpCapitalstring | null๐ŸŸข High (100%)Paid-up share capital in INR.
dateOfIncorporationstring | null๐ŸŸข High (100%)Incorporation date (DD-MM-YYYY or DD Month, YYYY).
dateOfLastAGMstring | null๐ŸŸข High (Primary)Date of most recent Annual General Meeting filing.
dateOfBalanceSheetstring | null๐ŸŸข High (Primary)Date of latest filed balance sheet.
numberOfMembersstring | null๐ŸŸก ConditionalNumber of members when reported.
emailstring | null๐ŸŸข High (~89% Primary)Statutory corporate email address on file.
registeredAddressstring | null๐ŸŸข High (100%)Complete registered office street address, city, state, and PIN.
otherAddressstring | null๐ŸŸก ConditionalSecondary/correspondence address when filed.
pincodestring | null๐ŸŸข High (~85%)6-digit Indian PIN code.
descriptionstring | null๐ŸŸข High (Primary)Narrative summary of the company's registration details.

๐Ÿ‘ฅ Board of Directors & Secured Charges

FieldTypeCoverageDescription
directorsarray<object>๐ŸŸข High (~88% Primary)Array of { name, din, beginDate, status, updatedOn } objects.
directorsCountinteger | null๐ŸŸข High (Primary)Total directors/signatories listed on the board.
chargesarray<object>๐ŸŸก Conditional (includeCharges)Array of { amount, assets, dateOfCreation, dateOfModification, status } secured loan records.
chargesCountinteger | null๐ŸŸข High (Primary)Total historical and active charges registered.
openChargesCountinteger | null๐ŸŸข High (Primary)Count of currently active (OPEN) secured charges.
urlstring๐ŸŸข High (100%)Reference profile URL.
scrapedAtstring๐ŸŸข High (100%)ISO-8601 extraction timestamp.

๐Ÿ” Bulk enrichment & 1,000+ corporate-graph scaling

This Actor supports two seamless operating modes depending on your workflow:

  1. Exact CIN list enrichment (maxItems: 0): Paste 10, 200, or 5,000 CINs into cins (or companyUrls) and leave maxItems at 0. The scraper deduplicates your input list and enriches only the exact CINs you provided using a bounded parallel worker pool (maxConcurrency).
  2. Corporate-graph discovery & expansion (maxItems > cins.length): When you run with an empty cins list or provide a handful of seed CINs alongside a higher maxItems target (such as 50, 250, or 1,000+), the scraper automatically harvests related subsidiary, group, and industry-peer CINs from the corporate registry graph and enriches them in parallel until your exact maxItems target is reached with 0 duplicate CINs.

โš™๏ธ How to use step by step

  1. Open India MCA Company Data Scraper in the Apify Console and click Try for free.
  2. Paste your list of 21-character Company CINs to look up (cins), or keep the default seed CINs to test automatic discovery.
  3. Choose whether to Include registered charges (includeCharges: true).
  4. Set Maximum companies to return (maxItems) โ€” use 0 to process only your exact cins list, or set 50, 200, or 1000 to automatically expand and collect that many companies.
  5. Click Start and download your enriched dataset as JSON, CSV, Excel, XML, or HTML.

๐Ÿ”Œ API & automation integration

Python example

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("haketa/india-mca-scraper").call(run_input={
"cins": [
"L17110MH1973PLC019786",
"L22210MH1995PLC084781",
"L85110KA1981PLC013115",
],
"includeCharges": True,
"maxItems": 0,
"maxConcurrency": 10,
})
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
print(company["cin"], company["companyName"], company["status"], company["paidUpCapital"], company["email"])

Node.js example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('haketa/india-mca-scraper').call({
cins: ['L17110MH1973PLC019786'],
maxItems: 250,
includeCharges: true,
maxConcurrency: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Enriched ${items.length} Indian companies.`);

๐Ÿ’ก Pro tips for best results

  • ๐Ÿš€ Increase maxConcurrency to 10โ€“15 for large runs: Because the scraper uses lightweight pure-HTTP requests with per-request proxy rotation, 1,000 companies finish in roughly 2.5โ€“3 minutes at concurrency 10.
  • ๐Ÿชถ Turn off includeCharges when you only need contact/board data: Large industrial enterprises can have 100+ historical bank charges; setting includeCharges: false keeps CSV/JSON payloads compact while still preserving chargesCount and openChargesCount.
  • ๐Ÿ” Filter by dataSource: "primary" for full board & email enrichment: Records resolved via the primary layer carry the full directors[], charges[], and email fields; secondary fallback records provide guaranteed core statutory coverage (companyName, dateOfIncorporation, authorizedCapital, paidUpCapital, registeredAddress, status).

โ“ Frequently asked questions

What is a CIN and where do I find it? A Corporate Identification Number (CIN) is the official 21-character alphanumeric identifier assigned by the Ministry of Corporate Affairs (MCA) to every company registered in India (e.g. L17110MH1973PLC019786). It appears on company invoices, letterheads, annual reports, and financial filings.

Can this scraper discover 1,000+ Indian companies if I only have a few seed CINs? Yes. Whenever maxItems is set higher than the number of CINs in your input (or when cins is left empty), the scraper automatically traverses the corporate registry graph from your seed CINs to discover and enrich up to maxItems unique companies (1,000+ supported).

What happens if I only want to enrich my exact list of CINs without adding related companies? Simply set maxItems: 0 (the default). When maxItems is 0 and you provide one or more cins or companyUrls, the scraper enriches only the exact CINs you supplied.

Do I need an MCA login or captcha solver? No. Everything runs over fast, headless HTTP with zero login and zero captcha prompts.


โš ๏ธ Limitations

  • Lookup and discovery are keyed by 21-character Indian company CINs ([LU]\d{5}[A-Z]{2}\d{4}[A-Z]{3}\d{6}); Limited Liability Partnerships (LLPs, which use a 7-character LLPIN) are not covered by the CIN format.
  • Records resolved via the secondary fallback source include core statutory fields (companyName, status, classOfCompany, listingStatus, dateOfIncorporation, authorizedCapital, paidUpCapital, registeredAddress, pincode) but omit directors[], charges[], and email.

Pair Indian corporate registry intelligence with these B2B and company data scrapers:


๐Ÿ“‹ Changelog

v1.2 (2026-11)

  • Unlocked 1,000+ corporate-graph discovery & scaling: Added automatic related-CIN harvesting (harvestCinsFromHtml) when cins is empty or when maxItems exceeds the seed CIN count, allowing single runs to scale to 1,000+ unique Indian companies while preserving exact-list mode when maxItems: 0.
  • Enhanced secondary fallback fields: Derived classOfCompany, listingStatus, registrationNumber, and 6-digit pincode automatically on secondary-source records.
  • Fast prefill tuning: Set maxItems prefill to 50 for rapid < 25s verification runs with 0 duplicates.
  • Documentation upgrade: Expanded README with At a glance table, 21-character CIN structure breakdown, emoji field tables, and API examples.

v1.1 (2026-11)

  • Verified 500-company benchmark run in 89 seconds with 100% core statutory field coverage and 0 duplicate CINs.

v1.0 (2026-06)

  • Initial release with dual-source CIN enrichment, RSC payload extraction for directors (DIN) and secured charges, and URL-embedded CIN detection.
⌂ ๆข็ฝ‘ๅ€