# India CDSCO Scraper: SUGAM Drug Approvals & Device Licence Data (`getascraper/cdsco-india-drug-device-approvals`) Actor

Export new drug approvals and medical device/IVD licences from India's CDSCO (SUGAM and the medical device portal), no manual portal checks. Filter by year, month, drug name, licence type, or device category. Monitoring mode returns only newly published records. $2 per 1,000 results.

- **URL**: https://apify.com/getascraper/cdsco-india-drug-device-approvals.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Automation, News, Other
- **Stats:** 2 total users, 1 monthly users, 92.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 approval records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🇮🇳 India CDSCO Scraper: SUGAM Drug Approvals & Device Licence Data

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#EFF3F7;border:1px solid #C7D4E0;border-top:4px solid #1E3A5F;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Stop checking the government portal by hand</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull every new drug approval and medical device or IVD licence straight from India's CDSCO, the country's national drug and device regulator. Filter by year, month, drug name, licence type, or device category, and run it on a schedule to catch new filings as they're published.</span>
</td>
</tr>
</table>
<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D4E0;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#16293F">💊 Full drug approval record</span><br>
<span style="font-size:12px;color:#57534E">Drug name, composition, dosage form, indication, manufacturer, every manufacturing site on file, and approval date</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D4E0;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#16293F">🩺 Device & IVD licences</span><br>
<span style="font-size:12px;color:#57534E">Device name, brand, model, risk class, intended use, licence number and issue date, and the licensing authority</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D4E0;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#16293F">🔁 Built for monitoring</span><br>
<span style="font-size:12px;color:#57534E">Run it on a schedule and get only newly published approvals or licences, not a repeated full export</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D4E0;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#16293F">🔓 No login, ever</span><br>
<span style="font-size:12px;color:#57534E">Reads the same free public data CDSCO itself publishes, no account or API key needed</span>
</td>
</tr>
</table>

CDSCO (Central Drugs Standard Control Organisation) is India's national regulator for drugs and
medical devices, the equivalent of the FDA for the world's largest generic-drug exporter and one
of its fastest-growing medtech markets. This Actor reads CDSCO's own public systems directly:
SUGAM for drug approvals, and the medical device portal for device and IVD licences. No login, no
data broker, no waiting on a manual PDF search.

### 🔍 Who this is for

- **Pharma regulatory-affairs consultants** tracking what competitors are filing and getting
  approved in India, without refreshing the portal by hand every week.
- **Generic-drug manufacturers** watching approval precedent for their own filings: what
  compositions, dosage forms, and indications CDSCO is actually clearing.
- **Market-access consultancies** doing India market-entry assessments for foreign pharma and
  medtech clients who need current, structured regulatory data, not a scanned PDF.
- **Medtech regulatory consultants** tracking device and IVD risk classifications for clients
  bringing a product into the Indian market.

No other Apify Actor covers CDSCO or SUGAM today. This is the first structured, self-serve way to
pull this specific data instead of searching the government portal manually or waiting on a
subscription regulatory-intelligence service.

### 📥 Input

| Field | Type | Required | Description |
|---|---|---|---|
| `mode` | enum | Yes | `drugs` (SUGAM drug approvals) or `devices` (medical device and IVD licences). Defaults to `drugs`. |
| `useRecentApprovalsFeed` | boolean | No | Drugs mode only. On by default: pulls the site's own latest-approvals feed. Turn off to search a specific year, month, or drug name instead. |
| `searchText` | string | No | Drugs mode only, used when the recent-approvals feed is off. Filters by a drug or brand name substring. |
| `year` | enum | No | Drugs mode only, used when the recent-approvals feed is off. Restricts results to one calendar year (2018-2026 at time of writing). |
| `month` | enum | No | Drugs mode only, used when the recent-approvals feed is off and a year is set. Restricts results to one month. |
| `licenceType` | enum | No | Devices mode only. `Manufacturing` (India-based manufacturers) or `Import` (foreign manufacturers/importers). Defaults to `Manufacturing`. |
| `deviceCategory` | enum | No | Devices mode only. `IVD` (in vitro diagnostics) or `MD` (general medical devices). Defaults to `IVD`. |
| `deviceNameSearch` | string | No | Devices mode only. Filters results by a device or brand name substring. |
| `onlyNewSinceLastRun` | boolean | No | Turns this Actor into a monitor: only returns approvals or licences it hasn't returned before, based on this Actor's own saved history. Ideal for a scheduled run. Off by default. |
| `maxItems` | integer | No | Maximum number of records to return in this run (up to 5,000). Defaults to 25. |

### 🚀 How to use it

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#EFF3F7;border:1px solid #C7D4E0;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1E3A5F;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick a registry</span><br>
<span style="font-size:12px;color:#57534E">Drug approvals or medical device and IVD licences, with the filters you need.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EFF3F7;border:1px solid #C7D4E0;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1E3A5F;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">The Actor reads CDSCO directly</span><br>
<span style="font-size:12px;color:#57534E">It queries CDSCO's own public systems, the same data the portal itself shows.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#EFF3F7;border:1px solid #C7D4E0;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1E3A5F;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get structured results</span><br>
<span style="font-size:12px;color:#57534E">Clean, structured records land in your dataset. Schedule it for ongoing alerts.</span>
</td>
</tr>
</table>

### 📤 Data table

Drug approvals and device licences share one dataset with different fields populated depending on
`mode`. A `changeType` of `NEW` appears only when `onlyNewSinceLastRun` is on.

| Field | Type | Description |
|---|---|---|
| `drugName` | string | Drug approvals only. The approved drug's name. |
| `productName` | string | Drug approvals only. The approved product/brand name. |
| `composition` | string | Drug approvals only. Active ingredient(s) and strength. |
| `dosageForm` | string | Drug approvals only. Tablet, injection, and so on. |
| `indication` | string | Drug approvals only. The approved medical use. |
| `applicationType` | string | Drug approvals only. The type of application approved, such as a finished formulation. |
| `manufacturerName` | string | Drug approvals only. The applicant manufacturer's registered name. |
| `manufacturerAddress` | string | Drug approvals only. The applicant manufacturer's registered address. |
| `manufacturingSites` | array of strings | Drug approvals only. Every manufacturing site address on file for this approval. |
| `approvalDate` | string | Drug approvals only. The date CDSCO closed/approved this application. |
| `deviceName` | string | Device licences only. The licensed device's name. |
| `brandName` | string | Device licences only. The device's brand name, when on file. |
| `modelName` | string | Device licences only. The device's model name, when on file. |
| `deviceClass` | string | Device licences only. The device's risk classification (Class A/B/C/D). |
| `intendedUse` | string | Device licences only. The device's stated intended use. |
| `licenceType` | string | Device licences only. Manufacturing or Import. |
| `licenceCategory` | string | Device licences only. MD (medical device) or IVD (in vitro diagnostic). |
| `licenceNumber` | string | Device licences only. The licence's registration number. |
| `licenceIssuedOn` | string | Device licences only. The date this licence was issued. |
| `manufacturerOrImporterAddress` | string | Device licences only. The manufacturer's or importer's registered address. |
| `licensingAuthority` | string | Device licences only. The state licensing authority that issued the licence. |
| `changeType` | string | Present only when monitoring is on. `NEW` for a record not returned by a previous run. |
| `scrapedAt` | string | When this record was retrieved. |

#### Example output

```json
{
  "drugName": "Vonoprazan",
  "productName": "Vonoprazan Tablets",
  "composition": "Vonoprazan Fumarate Eq. To Vonoprazan 10.0000 Milligram (Mg)",
  "dosageForm": "Tablets",
  "applicationType": "Finished Formulation",
  "manufacturerName": "M/s J.M. Laboratories",
  "manufacturerAddress": "Village. Bhanat, PO Ghatti, Subathu Road, Tehsil & Distt. Solan, Himachal Pradesh, India, 173211",
  "manufacturingSites": [
    "J M Laboratories, Vill. Bhanat, P.O. Ghatti, Subathu Road, Tehsil & Distt. Solan, Himachal Pradesh India-173212",
    "Metrochem Api Pvt Ltd, Unit-Iv, J.N. Pharma City, Visakhapatnam, Andhra Pradesh India-531021"
  ],
  "approvalDate": "2026-09-29",
  "scrapedAt": "2026-09-30T13:37:14.822Z"
}
```

```json
{
  "deviceName": "ULTRA Dengue IgG Capture ELISA",
  "deviceClass": "Class B",
  "intendedUse": "Enzyme Linked Immunosorbent Assay for the detection of anti-dengue IgG in human serum or plasma.",
  "licenceType": "Manufacturing",
  "licenceCategory": "IVD",
  "licenceNumber": "776-B(H)",
  "licenceIssuedOn": "28-MAR-2017",
  "manufacturerOrImporterAddress": "SD Biosensor Healthcare Pvt. Ltd, Plot no. 38, Sector 4, IMT Manesar, Gurgaon, Haryana Pincode: 122052",
  "licensingAuthority": "SLA - Haryana",
  "scrapedAt": "2026-09-30T13:41:45.728Z"
}
```

### 💰 Pricing

This Actor is pay per result, with no subscription and no charge for an empty run. You only pay
for the records you actually get back. Free plan runs are limited to 25 records per run, 3 runs
per day, and a short wait between runs. Upgrade to a paid Apify plan for unrestricted use.

### ⭐ Enjoying India CDSCO Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#EFF3F7;border:1px solid #C7D4E0;border-left:5px solid #1E3A5F;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">If this saved you a manual portal search, let us know.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other regulatory-affairs and market-access teams find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#1E3A5F;border:1px solid #C7D4E0;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/cdsco-india-drug-device-approvals/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

**Is this data legal to access?**
Yes. CDSCO publishes both the drug approvals feed and the device/IVD licence registry as free,
public data on its own government portals. This Actor reads the same pages available to anyone,
with no login and no paywall.

**Are device and IVD licence results sorted by newest first?**
No. CDSCO's device registry doesn't expose a sort order or a "what's new" endpoint, so results
come back in whatever order the government system returns them. Use `onlyNewSinceLastRun` if what
you actually want is newly published licences, rather than assuming the first records in a run are
the most recent ones. Drug approvals are different: the default recent-approvals feed is genuinely
the site's own latest-first list.

**Why does a device search sometimes take longer than a drug search?**
CDSCO's device registry has no server-side text search, so this Actor downloads the full licence
list for your chosen licence type and category, then filters it. Drug approval searches are
filtered by CDSCO itself and are much smaller and faster.

**Can I use this for ongoing regulatory monitoring?**
Yes. Turn on `onlyNewSinceLastRun` and schedule this Actor with Apify's built-in scheduler. Each
run will only return approvals or licences it hasn't returned before, for the same filters.

### 🔗 Other actors

- [DHA License Verification Scraper: Dubai Health Authority](https://apify.com/getascraper/dha-license-verification-scraper) ↗ - verifies Dubai healthcare professional licences against the official regulator.
- [UAE Industrial Licence Monitor](https://apify.com/getascraper/uae-industrial-licence-monitor) ↗ - monitors UAE industrial licences and supplier data for new filings.
- [Albania QKB Scraper: Company Registry & Beneficial Owner Data](https://apify.com/getascraper/albania-qkb-scraper) ↗ - looks up Albanian companies and their beneficial owners from the national registry.
- [Mongolia MRPAM Mining Cadastre Scraper: Licenses & Boundaries](https://apify.com/getascraper/mongolia-mrpam-mining-cadastre-scraper) ↗ - exports Mongolia's public mining license register with full concession boundaries.
- [Japan Company Scraper: 4.5M+ gBizINFO Records](https://apify.com/getascraper/gbizinfo-japan-company-scraper) ↗ - looks up Japanese companies by name or registration number with financial and filing history.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/cdsco-india-drug-device-approvals/changelog.md

# Actor input Schema

## `mode` (type: `string`):

Choose which official CDSCO registry to pull from: newly approved drugs (SUGAM) or approved/licensed medical devices and IVDs. Drugs mode is fast and lightweight. Devices mode downloads a much larger unfiltered government file because that registry has no server-side text search, so it is kept out of the default combination to stay fast.

## `useRecentApprovalsFeed` (type: `boolean`):

Only used when Data Source is Drug approvals. When on, pulls the site's own lightweight recent-approvals feed (about the latest 145 drug approvals across all years) instead of a full year query, ideal for checking what's new. Turn off to search a specific year, month, or drug name instead.

## `searchText` (type: `string`):

Only used when Use Recent Approvals Feed is off. Filters drug approvals by a substring of the drug or brand name, matched by the CDSCO search itself (for example "Paracetamol"). Leave blank to return all approvals for the chosen year and month.

## `year` (type: `string`):

Only used when Use Recent Approvals Feed is off. Restricts drug approvals to one calendar year. CDSCO's own records currently span 2018 to 2026. Leave on "All years" only if you also set a specific Drug Or Brand Name filter, since an unfiltered all-years pull is slow and heavy.

## `month` (type: `string`):

Only used when Use Recent Approvals Feed is off and Approval Year is set to a specific year. Narrows drug approvals to one month within that year. Leave on "All months" to get the full year.

## `licenceType` (type: `string`):

Only used when Data Source is Medical device & IVD licences. CDSCO tracks device licences separately for domestic manufacturers and for importers bringing devices into India. Choose which one this run should pull.

## `deviceCategory` (type: `string`):

Only used when Data Source is Medical device & IVD licences. "Medical devices" covers the general MDR-2017 device registry; "In vitro diagnostics" (IVD) covers diagnostic kits and reagents specifically. IVD is kept as the default because it is the smaller of the two confirmed source files, so the run stays quick; the general medical device file can be 3-5x larger for the same licence type.

## `deviceNameSearch` (type: `string`):

Optional substring filter on the device or brand name, applied after the licence list is downloaded (CDSCO's device registry has no server-side search, so this filtering happens on our side). Leave blank to keep every device in the chosen licence type and category, up to Max Items.

## `onlyNewSinceLastRun` (type: `boolean`):

Turns this Actor into a monitor: it remembers which approval records it has already returned (in this Actor's key-value store) and, on every later run with the same filters, only outputs records it has not seen before. Neither CDSCO registry offers a native "since" parameter, so this is the recommended way to run this Actor on an Apify Schedule for ongoing approval alerts instead of re-downloading the same records every time.

## `maxItems` (type: `integer`):

Maximum number of approval records to save to the dataset. Both source registries return more data than most users need in one go (the device registry in particular has no server-side limit), so this cap is always applied after fetching, whatever the Data Source or filters. Kept low by default so a first run finishes quickly; raise it once you know the filters you want.

## Actor input object example

```json
{
  "mode": "drugs",
  "useRecentApprovalsFeed": true,
  "searchText": "",
  "year": "2026",
  "month": "",
  "licenceType": "Manufacturing",
  "deviceCategory": "IVD",
  "deviceNameSearch": "",
  "onlyNewSinceLastRun": false,
  "maxItems": 25
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "mode": "drugs",
    "useRecentApprovalsFeed": true,
    "searchText": "",
    "year": "2026",
    "month": "",
    "licenceType": "Manufacturing",
    "deviceCategory": "IVD",
    "deviceNameSearch": "",
    "onlyNewSinceLastRun": false,
    "maxItems": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/cdsco-india-drug-device-approvals").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 = {
    "mode": "drugs",
    "useRecentApprovalsFeed": True,
    "searchText": "",
    "year": "2026",
    "month": "",
    "licenceType": "Manufacturing",
    "deviceCategory": "IVD",
    "deviceNameSearch": "",
    "onlyNewSinceLastRun": False,
    "maxItems": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/cdsco-india-drug-device-approvals").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "mode": "drugs",
  "useRecentApprovalsFeed": true,
  "searchText": "",
  "year": "2026",
  "month": "",
  "licenceType": "Manufacturing",
  "deviceCategory": "IVD",
  "deviceNameSearch": "",
  "onlyNewSinceLastRun": false,
  "maxItems": 25
}' |
apify call getascraper/cdsco-india-drug-device-approvals --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/cdsco-india-drug-device-approvals"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2EkjqSpYkXniz2EjK/builds/CewCC55fVZfeKzyWy/openapi.json
