# Korea Drug & Medical Device Recalls (MFDS 회수·판매중지) (`kr-data/korea-health-recalls`) Actor

Recent recalls and sales suspensions of drugs and medical devices in South Korea from the Ministry of Food and Drug Safety (MFDS): product, company, reason, date, barcodes. Filter by product, company or business number. English JSON.

- **URL**: https://apify.com/kr-data/korea-health-recalls.md
- **Developed by:** [KR Data](https://apify.com/kr-data) (community)
- **Categories:** Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 recall 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/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

## Korea Drug & Medical Device Recalls (MFDS 회수·판매중지)

List **recent recalls and sales suspensions of drugs and medical devices in South Korea**, as published by the **Ministry of Food and Drug Safety** (식품의약품안전처, MFDS). Each record gives the product, the manufacturer or importer and its business registration number, the recall date, the reason, whether the recall was ordered by the regulator, and — for drugs — the product barcodes (Korean standard codes / GTIN).

**No API key or Korean account needed.** Pick a time window, optionally filter by product, company or business number, get English JSON.

### Typical uses

- **Pharmacies, distributors and online sellers** — match your Korean SKUs and barcodes against new recalls every day.
- **Medical device importers and hospitals** — watch recalls for a device class or a supplier.
- **Regulatory, quality and compliance teams** — track recalls of a competitor or partner by business number.
- **AI agents** — "Were any Korean drugs recalled this week?", "Has 한국스트라이커 had a device recall this year?"

### Input

| Field | Description |
|---|---|
| `categories` | `drug` and/or `medical_device`. Default: both. |
| `days` | Recalls from the last N days (1-365). Default 30. |
| `productName` | Optional. Part of the Korean product name, e.g. `치약`, `인공무릎관절`. For devices the device class name is searched too. |
| `companyName` | Optional. Part of the Korean company name, e.g. `한미약품`. `(주)`, `주식회사` and spaces are ignored. |
| `businessNumber` | Optional. 10-digit business registration number of the company, e.g. `120-81-46949`. |
| `maxResults` | Stop after this many records, newest first (1-1000). Default 50. |

```json
{ "categories": ["drug", "medical_device"], "days": 7, "maxResults": 100 }
```

### Output

One item per recall record, newest first:

```json
{
  "status": "recall",
  "category": "drug",
  "productName": "페인싹트리플정",
  "company": "(주)한풍제약",
  "businessNumber": "402-85-32516",
  "recallDate": "2026-10-07",
  "reason": "제품 내 이취로 인한 사전 예방 차원의 영업자 자진 회수",
  "mandatory": false,
  "drug": { "itemSeq": "202502660", "barcodes": ["8806581087209", "8806581087216"], "recallOrderDate": null },
  "device": null,
  "source": "Ministry of Food and Drug Safety (식품의약품안전처) drug recall and sales suspension list, via data.go.kr 15059114",
  "checkedAt": "2026-10-08T13:40:45+00:00"
}
```

```json
{
  "status": "recall",
  "category": "medical_device",
  "productName": "골수 내 고정 막대",
  "company": "한국스트라이커(주)",
  "businessNumber": "120-81-46949",
  "recallDate": "2026-10-06",
  "reason": null,
  "mandatory": false,
  "drug": null,
  "device": {
    "receiptNo": "202600201476", "itemSeq": "200107323",
    "deviceClass": "골수 내 고정 막대", "deviceClassCode": "B03110.01", "riskGrade": 3,
    "reportType": "recall_plan", "reportTypeKo": "계획보고",
    "recallKind": "voluntary", "recallKindKo": "영업자회수보고",
    "reportState": "approved", "reportStateKo": "승인",
    "companyType": "importer"
  },
  "source": "Ministry of Food and Drug Safety (식품의약품안전처) medical device recall and sales suspension list, via data.go.kr 15056785",
  "checkedAt": "2026-10-08T13:40:28+00:00"
}
```

| `status` | Meaning |
|---|---|
| `recall` | One recall or sales-suspension record (billed). |
| `lookup_failed` | The official list for that category did not answer; retry later (free). |

An invalid input (unknown category, `days` outside 1-365, malformed business number) stops the run with a message and is free. No match in the window means an empty result and no record charges.

Field notes:

- `mandatory`: `true` = recall ordered by the regulator (강제 / 정부회수), `false` = voluntary recall by the company (자진 / 영업자회수).
- `recallDate`: for drugs, the date on the official recall list; for devices, the date the recall report was submitted.
- Device `reportType`: `recall_plan` (계획보고 — recall started), `recall_completed` (종료보고), `recall_order`, `recall_order_withdrawn`. One recall can appear as both a plan and a completion report; `receiptNo` identifies each report.
- `riskGrade`: Korean device class 1 (lowest risk) to 4 (highest).

### Limits — what is not included

- **Product names, company names and reasons are in Korean**, as published. Field names and codes are English.
- **Device recall reasons are often empty** in the official data (about 9 in 10 device records); drug reasons are almost always present.
- The drug list also covers **quasi-drugs** (의약외품, e.g. toothpaste, masks) recalled under the drug law.
- **Cosmetics and food recalls are not included** (separate official lists). Device lot/serial numbers are not included.
- Looks back at most **365 days**. The drug list currently starts in October 2023.
- Draft device reports (작성중) are skipped. Company addresses are not returned.

### Pricing

Pay per record returned: **$0.002 per recall record** (`recall-record`). Use `maxResults` to cap a run. Empty results, invalid inputs and failed lookups are free.

### Use as an MCP tool (Claude, Cursor, other AI agents)

Add the Apify MCP server with this Actor:

```
https://mcp.apify.com?tools=kr-data/korea-health-recalls
```

### Source and license

식품의약품안전처_의약품 회수·판매중지 정보 (data.go.kr 15059114) and 식품의약품안전처_의료기기 회수·판매중지정보 (data.go.kr 15056785), 이용허락범위 제한 없음. Data is passed through unchanged except for English field names and labels, joining the device company record, and leaving out addresses and long product descriptions.

### More Korean data from KR Data

- [Korea Business Check (KYB)](https://apify.com/kr-data/korea-business-verify) — business registration status, company profile, financials
- [Korean Address to English](https://apify.com/kr-data/korea-address) — official English address and postal code
- [Korean Law in English](https://apify.com/kr-data/korea-law) — official English text of Korean statutes
- [Korea Flood-Damaged Car Check](https://apify.com/kr-data/korea-flood-car-check) — flood-damage insurance records by license plate
- [Korea Online Seller Registration Check](https://apify.com/kr-data/korea-ecommerce-seller-registry) — mail-order business registration (통신판매업) by business number

# Actor input Schema

## `categories` (type: `array`):

Which recall lists to read: drug (의약품) and/or medical_device (의료기기). Default: both.

## `days` (type: `integer`):

Recalls published in the last N days (1-365). Default 30.

## `productName` (type: `string`):

Optional. Korean product name or part of it, e.g. 타이레놀 or 인공무릎관절. For devices the device class name is also searched. Spaces are ignored.

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

Optional. Manufacturer or importer name in Korean, e.g. 한미약품. (주), 주식회사 and spaces are ignored.

## `businessNumber` (type: `string`):

Optional. 10-digit Korean business registration number of the manufacturer or importer, e.g. 120-81-46949.

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

Stop after this many recall records (1-1000), newest first. Each record is billed. Default 50.

## Actor input object example

```json
{
  "categories": [
    "drug",
    "medical_device"
  ],
  "days": 30,
  "maxResults": 50
}
```

# Actor output Schema

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

One item per recall record, newest first.

# 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 = {
    "categories": [
        "drug",
        "medical_device"
    ],
    "days": 30,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("kr-data/korea-health-recalls").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 = {
    "categories": [
        "drug",
        "medical_device",
    ],
    "days": 30,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("kr-data/korea-health-recalls").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 '{
  "categories": [
    "drug",
    "medical_device"
  ],
  "days": 30,
  "maxResults": 50
}' |
apify call kr-data/korea-health-recalls --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kr-data/korea-health-recalls"
        }
    }
}
```

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/ile7Hi1tFad87Fdbm/builds/VBUY8mEjNvr1aAP3c/openapi.json
