# Taiwan FDA License Lookup (食藥署許可證查詢) — Official TFDA Data (`waisuan/taiwan-fda-license-lookup`) Actor

Look up Taiwan FDA (TFDA) drug licences, medical device licences, health food approvals and food additive licences from official open data. Search by product name, ingredient, licence number or company; get clean English-keyed JSON with ISO dates.

- **URL**: https://apify.com/waisuan/taiwan-fda-license-lookup.md
- **Developed by:** [Waisuan](https://apify.com/waisuan) (community)
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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/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

## Taiwan FDA License Lookup (食藥署許可證查詢) — Official TFDA Data

Look up product licences issued by **Taiwan's Food and Drug Administration (TFDA, 衛生福利部食品藥物管理署)**: **drug licences, medical device licences, health food approvals and food additive licences**. Search by product name, active ingredient, licence number or company and get clean, English-keyed JSON with ISO dates, ready for spreadsheets, databases or AI agents.

### Who is it for

- **Regulatory affairs and market-access teams** checking whether a competitor's drug or device is licensed in Taiwan, who holds the licence and when it expires.
- **Importers, distributors and e-commerce sellers** verifying a supplier's licence number before listing a product (Taiwan requires licence numbers on many health products).
- **Pharmacies, clinics and health-tech apps** building drug or device lookups.
- **AI agents** that need to answer "Is product X approved in Taiwan?" with an official source.

### Why use it

- **Official source**: the TFDA open data platform (data.fda.gov.tw), synchronised weekly with TFDA's licence management system.
- **Four licence types in one Actor**: 25,951 active drug licences (72,074 including cancelled ones), 104,849 medical device licences, 565 health food approvals and 6,204 food additive licences (counts as of October 2026).
- **One search box**: `keyword` matches Chinese and English product names, active ingredients, indications, device categories, intended use and health claims.
- **Clean output**: English camelCase fields, ISO dates (2014/04/14 → 2014-04-14), ingredient and packaging lists split into arrays, a simple `status` (`active`, `expired`, `cancelled`).
- **Fast and light**: the official bulk file is downloaded once and streamed record by record, so even the 130 MB device file is scanned in about 15 seconds without big memory.
- **Polite**: one download per run, a delay before it, 3 retries with backoff, clear error messages.

### Input example

```json
{
  "licenseType": "medicalDevice",
  "keyword": "血糖",
  "company": "",
  "includeInactive": false,
  "maxItems": 50
}
```

| Field | Meaning |
|---|---|
| `licenseType` | `drug` (default), `medicalDevice`, `healthFood`, `foodAdditive`. |
| `keyword` | Name / ingredient / indication / category keyword, case-insensitive. Default `acetaminophen`. |
| `licenseNumber` | Full or partial licence number, e.g. `衛署藥輸字第022769號` or `022769`. Spaces ignored. |
| `company` | Licence holder (applicant) or manufacturer contains, e.g. `嬌生`, `Pfizer`. |
| `includeInactive` | Include cancelled licences (for drugs, switches to the full dataset). Expired licences are always kept and marked `expired`. |
| `maxItems` | Maximum results (default 20). |

### Output example

Real output from the default input (drug licences, keyword `acetaminophen`):

```json
{
  "licenseType": "drug",
  "licenseNumber": "衛部藥製字第059786號",
  "status": "active",
  "cancelledDate": null,
  "cancelReason": null,
  "issueDate": "2017-10-03",
  "expiryDate": "2027-10-03",
  "licenseCategory": "製劑",
  "oldLicenseNumber": null,
  "customsDocumentNo": "DHY05105978604",
  "nameZh": "賜你免痛感冒鼻炎膜衣錠",
  "nameEn": "Sulimeton Antirhinitis F.C. Tablets",
  "indications": "緩解感冒之各種症狀(流鼻水、鼻塞、打噴嚏、咽喉痛、畏寒、發燒、頭痛、關節痛、肌肉酸痛)。",
  "dosageForm": "膜衣錠",
  "packaging": ["PTP 鋁箔盒裝"],
  "drugClass": null,
  "controlledDrugLevel": null,
  "activeIngredients": ["PHENYLEPHRINE HCL", "CHLORPHENIRAMINE MALEATE", "ACETAMINOPHEN (EQ TO PARACETAMOL)", "CAFFEINE ANHYDROUS"],
  "dosageAndAdministration": "請詳見仿單",
  "packageBarcodes": null,
  "applicantName": "三洋藥品工業股份有限公司",
  "applicantBusinessId": "75031602",
  "applicantAddress": "高雄市苓雅區中正二路１７５號２３樓",
  "manufacturerName": "三洋藥品工業股份有限公司大發廠",
  "manufacturerAddress": "高雄市大寮區華西路４５號",
  "manufacturerCountry": "TW",
  "manufacturingProcess": null,
  "lastChangedDate": "2023-01-11",
  "source": "Taiwan Food and Drug Administration (TFDA) open data — Western medicine drug licences (西藥許可證), data.gov.tw dataset 9123",
  "sourceUrl": "https://data.fda.gov.tw/data/opendata/export/37/json",
  "license": "Open Government Data License, version 1.0 (Taiwan)"
}
```

Medical device rows add `deviceClass`, `categories` (main / sub category), `intendedUse`, `specification`, `restrictions` and `manufacturingPermitNo`. Health food rows include `healthIngredients`, `healthFunctions`, `healthClaim`, `warnings`, `precautions` and `detailUrl`. Food additive rows include `uses`, `ingredients`, `packaging` and the applicant's business phone.

### Pricing

Suggested pay-per-event price: **US$0.003 per licence (US$3 per 1,000 results)**, charged through the default dataset-item event, plus the standard Actor start event.

| Use case | Results | Cost |
|---|---|---|
| Verify one licence number | 1 | US$0.003 |
| Default run (20 acetaminophen drugs) | 20 | US$0.06 |
| All active devices matching 血糖 (blood glucose) | 545 | ~US$1.64 |
| All active drug licences | 25,951 | ~US$78 |

Runs that match nothing push no rows and are not charged per result.

### FAQ

**Cosmetics?** TFDA does not publish a cosmetics licence dataset as open data (cosmetic products now use a notification system that is not open data), so cosmetics are not covered.

**Why is `drugClass` empty?** TFDA currently leaves the drug class field (藥品類別) empty in the active-licence file; it is filled for many records in the full file (`includeInactive: true`).

**What does `expired` mean?** The expiry date has passed but TFDA has not marked the licence as cancelled. It may be under renewal; check with TFDA before relying on it.

**Traditional Chinese medicine?** Not in this dataset; TCM licences are managed by a separate MOHW system.

**How fresh is it?** TFDA synchronises these files weekly; every run downloads the current file.

### Data source and license (資料來源與授權)

- TFDA open data platform: https://data.fda.gov.tw
- data.gov.tw datasets: 未註銷藥品許可證資料集 (9123), 全部藥品許可證資料集 (9122), 醫療器材許可證資料集 (9576), 健康食品資料集 (6951), 食品添加物許可證資料集 (8936).

Released under the **Open Government Data License, version 1.0 (政府資料開放授權條款－第1版)**, which permits commercial use with attribution. Attribution:

> 衛生福利部食品藥物管理署 2026 藥品許可證、醫療器材許可證、健康食品、食品添加物許可證資料集。此開放資料依政府資料開放授權條款 (Open Government Data License) 進行公眾釋出，使用者於遵守本條款各項規定之前提下，得利用之。政府資料開放授權條款：https://data.gov.tw/license

This Actor is an independent tool by Waisuan, is not affiliated with TFDA, and is not medical advice.

### 繁體中文簡介

本 Actor 讀取食藥署開放資料平臺的西藥許可證、醫療器材許可證、健康食品與食品添加物許可證資料，可依品名、成分、適應症關鍵字、許可證字號、申請商或製造商查詢，輸出英文欄位、西元日期，並標示有效／過期／註銷狀態。化粧品沒有開放的許可證資料集，因此不涵蓋。建議價格：每千筆 US$3。資料採政府資料開放授權條款第 1 版，可商用，需標示出處。

# Actor input Schema

## `licenseType` (type: `string`):

Licence type.

## `keyword` (type: `string`):

Matches the Chinese or English product name, active ingredients, indications / intended use, device category or health claim (case-insensitive). e.g. acetaminophen, 普拿疼, 血糖, catheter.

## `licenseNumber` (type: `string`):

Full or partial licence number, e.g. 衛署藥輸字第022769號 or 022769. Spaces are ignored.

## `company` (type: `string`):

Matches the applicant (licence holder) or manufacturer name, e.g. 嬌生, Pfizer.

## `includeInactive` (type: `boolean`):

Off: cancelled (註銷) licences and revoked health-food approvals are skipped; expired licences are kept and marked status = expired. For drugs, On switches to the full dataset that also contains cancelled licences.

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

Max results.

## `requestDelayMs` (type: `integer`):

Delay before download (ms).

## Actor input object example

```json
{
  "licenseType": "drug",
  "keyword": "acetaminophen",
  "licenseNumber": "",
  "company": "",
  "includeInactive": false,
  "maxItems": 20,
  "requestDelayMs": 1500
}
```

# Actor output Schema

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

All records in the default dataset (JSON, CSV, Excel and more via the API).

# 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 = {
    "keyword": "acetaminophen"
};

// Run the Actor and wait for it to finish
const run = await client.actor("waisuan/taiwan-fda-license-lookup").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 = { "keyword": "acetaminophen" }

# Run the Actor and wait for it to finish
run = client.actor("waisuan/taiwan-fda-license-lookup").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 '{
  "keyword": "acetaminophen"
}' |
apify call waisuan/taiwan-fda-license-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,waisuan/taiwan-fda-license-lookup"
        }
    }
}
```

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/rwyg55gdfIem91C7o/builds/kwBdkbDPHpMdDh9Ex/openapi.json
