# 🇮🇳 MCA India Company Registry — CIN & Master Data (`nexgendata/mca-company-registry`) Actor

MCA India company master data from data.gov.in — CIN, company name, ROC, authorized & paid-up capital, status, NIC industry. 3.6M+ companies.

- **URL**: https://apify.com/nexgendata/mca-company-registry.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 company records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🇮🇳 MCA India Company Registry — CIN Lookup & Company Master Data

**Look up any Indian company by name, ROC office or state and get its official Ministry of Corporate Affairs (MCA) master-data record** — CIN, incorporation date, authorized & paid-up capital, company class, listing status, registered office and NIC industrial classification. Sourced from India's **Open Government Data (OGD) platform** (data.gov.in), the same public "RoC-wise Company Master Data" resource that mirrors MCA filings — ~3.67 million companies, refreshed at source.

Built for B2B prospecting, KYC / due-diligence, supplier and counterparty verification, market intelligence, and AI agents that need structured Indian company records without scraping a portal.

> Factual public records — assembled for research and monitoring. Not affiliated with or endorsed by the MCA or data.gov.in.

> **Tip — supply your own free API key.** Pass `apiKey` (get one free in ~1 minute at [data.gov.in](https://data.gov.in): register → Profile → API key). Without it the actor falls back to a shared, heavily rate-limited public key, and a throttled run **fails loud with HTTP 429** rather than silently returning partial data.

### 📊 What you get

Clean JSON, one record per company — **17 fields**:

| Field | Description |
|---|---|
| `cin` | Corporate Identification Number (unique 21-char MCA id) |
| `company_name` | Registered company name |
| `roc_code` | Registrar of Companies office (e.g. `ROC Mumbai`) |
| `category` | Company category (e.g. Company limited by shares) |
| `subcategory` | Company sub-category (e.g. Non-government company) |
| `company_class` | Public / Private |
| `authorized_capital` | Authorized share capital (INR) |
| `paidup_capital` | Paid-up share capital (INR) |
| `registration_date` | Date of incorporation |
| `address` | Registered office address |
| `listing_status` | Listed / Unlisted |
| `company_status` | Active / Amalgamated / Struck Off / Under liquidation … |
| `state_code` | Registered state code |
| `indian_or_foreign` | Indian or foreign company flag |
| `nic_code` | NIC economic-activity code |
| `industrial_classification` | MCA industrial classification |
| `scraped_at` | UTC timestamp of retrieval |

### 💵 Pricing

Pay-per-result, no subscription:

| Event | Price |
|---|---|
| Actor start | **$0.01** |
| **Company record** | **$0.20 each** |
| Watch-check (per scheduled watch run) | **$0.05** |

**Worked example:** a 50-company pull = 1 start ($0.01) + 50 records × $0.20 = **$10.01**. A daily watch run that finds 3 newly-registered companies in your slice = $0.05 watch-check + 3 × $0.20 = **$0.65**. A blocked/throttled source **fails loud and charges nothing** — you never pay for an empty "success".

### 🧾 Sample output

```json
{
  "cin": "L99999MH1967PLC013726",
  "company_name": "PROCTER & GAMBLE HEALTH LIMITED",
  "roc_code": "ROC Mumbai",
  "category": "Company limited by Shares",
  "subcategory": "Non-govt company",
  "company_class": "Public",
  "authorized_capital": "180000000.00",
  "paidup_capital": "51660120.00",
  "registration_date": "1967-01-01",
  "address": "P & G PLAZA, CARDINAL GRACIAS ROAD, CHAKALA, ANDHERI EAST, MUMBAI, Maharashtra",
  "listing_status": "Listed",
  "company_status": "Active",
  "state_code": "MH",
  "indian_or_foreign": "Indian",
  "nic_code": "21002",
  "industrial_classification": "Manufacture of pharmaceuticals",
  "scraped_at": "2026-07-17T00:00:00Z"
}
```

### ⏰ Watch mode — new-company alerts

Turn on **`watchMode`** and put the actor on a schedule. The first run seeds a baseline and emits nothing; every later run emits **only companies that are new in your filtered slice** since the last run (keyed on **CIN**). Perfect for a standing "new company registrations in Karnataka" or "new companies matching my supplier name pattern" feed into Slack, a sheet, or an agent.

```json
{ "state": "KARNATAKA", "companyName": "LOGISTICS", "watchMode": true, "watchLabel": "ka-logistics" }
```

### 🤖 Use with AI agents

Returns clean JSON, so an agent can call it directly. Example task: *"Look up the MCA record for every supplier on this list and flag any whose company\_status is not Active."* Works with MCP tool-calling and agentic (x402) payment flows — agents can pay in USDC, no account setup.

#### API

```bash
curl -X POST "https://api.apify.com/v2/acts/nexgendata~mca-company-registry/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companyName":"RELIANCE","maxResults":25}'
```

#### CLI

```bash
apify call nexgendata/mca-company-registry --input '{"rocCode":"ROC Mumbai","maxResults":100}'
```

### 🔗 Related NexGenData actors

- **[ogd-india-companies-registry](https://apify.com/nexgendata/ogd-india-companies-registry)** — the original India MCA lookup this actor is built from (snake\_case input convention).

**The India Six — public data across India's regulators:**

- **[nse-bse-announcements](https://apify.com/nexgendata/nse-bse-announcements)** — live NSE/BSE corporate announcements & filings.
- **[india-startup-funding-tracker](https://apify.com/nexgendata/india-startup-funding-tracker)** — India startup funding rounds.
- **[india-trademark-search](https://apify.com/nexgendata/india-trademark-search)** — Indian trademark records.
- **[gem-tenders-india](https://apify.com/nexgendata/gem-tenders-india)** — Government e-Marketplace (GeM) tenders.
- **[india-gst-verification](https://apify.com/nexgendata/india-gst-verification)** — GSTIN validation & taxpayer details.

**Company records across jurisdictions:** [Delaware](https://apify.com/nexgendata/delaware-corporations-search-scraper) · [US State Filings](https://apify.com/nexgendata/business-registration-lookup) · [GLEIF LEI](https://apify.com/nexgendata/gleif-lei-entity-resolution) · [UK PSC](https://apify.com/nexgendata/uk-psc-beneficial-ownership) · [HK Registry](https://apify.com/nexgendata/hk-companies-registry) · [Taiwan MOEA](https://apify.com/nexgendata/taiwan-moea-company-registry)

### ❓ FAQ

**Where does the data come from?** India's Open Government Data platform (data.gov.in), resource "RoC-wise Company Master Data" — a public mirror of MCA company master data covering ~3.67M companies.

**How fresh is it?** As fresh as the OGD resource, which is refreshed periodically at source (last dataset update 2026-06-11). `scraped_at` records your retrieval time.

**Do I need an API key?** No, but it's strongly recommended. Without one you share a heavily rate-limited public key; supply your own free `apiKey` from data.gov.in for a private quota and no 429 failures.

**Does a blocked source bill me?** No. If OGD is unreachable or the shared key is throttled past its retries, the run fails loud and charges nothing — you never pay for an empty "success".

**How do I search?** Filter by `companyName` (substring), `rocCode` (registrar office), and/or `state` (matched against the registered address). Leave all blank to page the full resource.

**Is this legal?** Yes — this is factual public-record data published by the Government of India under its open data licence. Provided as-is for research, monitoring and due-diligence.

***

*Public official company records, assembled for research and monitoring. Not affiliated with or endorsed by the Ministry of Corporate Affairs or data.gov.in.*

# Actor input Schema

## `companyName` (type: `string`):

Case-insensitive substring matched against the registered company name (e.g. 'RELIANCE', 'INFRAPROP'). Leave blank to page the full master-data resource.

## `rocCode` (type: `string`):

Registrar of Companies office (e.g. 'ROC Delhi', 'ROC Mumbai', 'ROC Bangalore').

## `state` (type: `string`):

Case-insensitive substring matched CLIENT-SIDE against the registered office address (e.g. 'Maharashtra', 'Karnataka', 'Delhi').

## `maxResults` (type: `integer`):

Maximum company records to return (1-500).

## `apiKey` (type: `string`):

Your own free data.gov.in API key. **Strongly recommended.** Leave blank and the actor uses a shared public key that is heavily rate-limited — when it is throttled your run fails loud with HTTP 429 rather than returning partial data. Supplying your own key gives you a private quota and avoids those failures. Get one free in ~1 minute at https://data.gov.in (register → Profile → API key). Also accepted as `api_key`.

## `watchMode` (type: `boolean`):

When on, the first run seeds a baseline and emits nothing; later runs emit only companies that are NEW in your filtered slice since the last run (keyed on CIN). Ideal on a schedule.

## `watchLabel` (type: `string`):

Names the watch baseline so multiple saved tasks keep independent state.

## `proxyConfiguration` (type: `object`):

Apify proxy (optional). OGD is generally open, so proxy is off by default.

## Actor input object example

```json
{
  "maxResults": 25,
  "watchMode": false,
  "watchLabel": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companyName": "",
    "maxResults": 25,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/mca-company-registry").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "companyName": "",
    "maxResults": 25,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/mca-company-registry").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companyName": "",
  "maxResults": 25,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call nexgendata/mca-company-registry --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/mca-company-registry",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KqZRabXtpYWVGB7Ds/builds/hH7EzxnShg9GDqxaj/openapi.json
