OTHERAI

FDA Medical Device Adverse Event Search (MAUDE)

Search the FDA's **MAUDE database of 24 million+ medical device adverse event reports** — including malfunctions, injuries, and deaths. Filter by device name, manufacturer, product code, event type, report number, or date range. Each result includes full event narratives, patient demographics, device details, and manufacturer responses.

Try on Apify Store
$0.03per event
0
Users (30d)
0
Runs (30d)
90
Actively maintained
Maintenance Pulse
$0.03
Per event

Maintenance Pulse

90/100
Last Build
Today
Last Version
1d ago
Builds (30d)
8
Issue Response
N/A

Cost Estimate

How many results do you need?

result-returneds
Estimated cost:$3.00

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
result-returnedCharged per result returned. Includes data transformation and structured output.$0.03

Example: 100 events = $3.00 · 1,000 events = $30.00

Documentation

Search the FDA's MAUDE database of 24 million+ medical device adverse event reports — including malfunctions, injuries, and deaths. Filter by device name, manufacturer, product code, event type, report number, or date range. Each result includes full event narratives, patient demographics, device details, and manufacturer responses.

No API key required. Just enter a device name like pacemaker or a product code like NKE and get back structured adverse event data in seconds.

Why Use FDA Medical Device Adverse Event Search?

The MAUDE (Manufacturer and User Facility Device Experience) database is the FDA's primary source of postmarket surveillance data for medical devices — but navigating it means constructing complex openFDA API queries, handling nested JSON with device/patient/narrative arrays, and paginating through thousands of results. This actor handles all of that: query construction, pagination (up to 1,000 results), flattening of deeply nested response structures, extraction of event narratives from MDR text arrays, and conversion of raw flag codes to human-readable values — giving you clean, structured JSON ready for analysis.

Features

  • Device name search — find reports by brand name or generic name (e.g., "pacemaker", "hip implant", "insulin pump", "ventilator")
  • Manufacturer lookup — search by device manufacturer (e.g., "Medtronic", "Boston Scientific", "Stryker", "Abbott")
  • Product code filtering — use FDA's three-letter codes for precise device-type targeting (e.g., "NKE" for pacemakers, "DQA" for pulse oximeters)
  • Event type filtering — narrow by severity: Death, Injury, Malfunction, or Other
  • Report number lookup — retrieve a specific MDR report by its unique number
  • Date range filtering — search by event date, FDA received date, or report date in YYYY-MM-DD format
  • Adverse event flag — optionally filter to only reports flagged as adverse events (excludes product-problem-only reports)
  • Full narrative extraction — extracts event descriptions, manufacturer evaluation summaries, and additional narratives from MDR text arrays
  • Patient demographics — includes patient age, sex, outcomes, and reported problems when available
  • Device detail flattening — flattens nested device arrays into a single record with brand name, generic name, model number, catalog number, lot number, UDI, and manufacturer address
  • Summary statistics — automatic event type breakdown, patient outcome tallies, and top 10 patient problems logged at the end of each run
  • Retry with backoff — built-in exponential backoff for API rate limits and transient errors

How to Use

  1. Enter search criteria — provide at least one filter: device name, manufacturer, product code, event type, report number, date range, or adverse event flag.

  2. Set the result limit — choose how many reports to return (1–1,000). The default is 100. The openFDA API caps results at 1,000 per query.

  3. Run and download — click "Start" and wait for the run to complete (typically 5–30 seconds depending on result count). Download the structured JSON dataset.

  4. Review summary stats — check the run log for automatic summary statistics including event type breakdown, patient outcomes, and top patient problems.

Input Parameters

ParameterTypeRequiredDefaultDescription
deviceNameStringNo*Device name search — searches both brand and generic name fields
manufacturerStringNo*Manufacturer name (e.g., "Medtronic", "Boston Scientific")
productCodeStringNo*FDA three-letter product code (e.g., "NKE", "DQA")
eventTypeSelectNoAllEvent severity: Death, Injury, Malfunction, Other, No Answer Provided
reportNumberStringNo*Specific MDR report number (e.g., "2124215-2024-33357")
dateFromStringNoStart of date range (YYYY-MM-DD)
dateToStringNoEnd of date range (YYYY-MM-DD)
dateFieldSelectNodate_of_eventWhich date field to filter: Date of Event, Date Received, or Report Date
adverseEventOnlyBooleanNofalseOnly return reports flagged as adverse events
maxResultsIntegerNo100Maximum reports to return (1–1,000)

*At least one search parameter is required.

Input Examples

Find all pacemaker adverse events:

{
    "deviceName": "pacemaker",
    "maxResults": 100
}

Device deaths reported in 2024:

{
    "eventType": "Death",
    "dateFrom": "2024-01-01",
    "dateTo": "2024-12-31",
    "dateField": "date_received",
    "maxResults": 500
}

Look up a specific MDR report:

{
    "reportNumber": "2124215-2024-33357"
}

Boston Scientific malfunctions for CRT-P devices:

{
    "manufacturer": "Boston Scientific",
    "productCode": "NKE",
    "eventType": "Malfunction",
    "maxResults": 200
}

All insulin pump injuries since 2023:

{
    "deviceName": "insulin pump",
    "eventType": "Injury",
    "dateFrom": "2023-01-01",
    "dateField": "date_of_event",
    "maxResults": 500
}

Medtronic adverse events only (excludes product-problem-only reports):

{
    "manufacturer": "Medtronic",
    "adverseEventOnly": true,
    "dateFrom": "2024-01-01",
    "maxResults": 1000
}

Hip implant events received by FDA in Q1 2024:

{
    "deviceName": "hip implant",
    "dateFrom": "2024-01-01",
    "dateTo": "2024-03-31",
    "dateField": "date_received",
    "maxResults": 500
}

Input Tips

  • Use productCode for the most precise device-type filtering. The FDA maintains thousands of three-letter codes — search the FDA Product Classification Database to find the right code.
  • Set dateField to date_received for the most consistent date filtering — date_of_event can be blank or approximate on many reports.
  • Combine manufacturer + productCode + date range to track a specific company's device problems over time.
  • Set adverseEventOnly to true to exclude product-problem-only reports and focus on events that affected patients.
  • For large result sets, partition your search using date ranges to stay within the 1,000 result limit.
  • Device name searches match both brand_name and generic_name fields, so "pacemaker" will find any report where either field contains that term.

Output

Each adverse event report includes:

{
    "reportNumber": "2124215-2024-33357",
    "eventType": "Malfunction",
    "dateOfEvent": "2024-05-07",
    "dateReceived": "2024-06-02",
    "reportDate": "2024-06-02",
    "adverseEvent": false,
    "productProblem": true,
    "reportSource": "Manufacturer report",
    "manufacturerReportType": "Thirty-Day",
    "typeOfReport": ["Initial submission"],
    "remedialAction": [],
    "productProblems": ["Defective Device"],
    "brandName": "VISIONIST X4 CRT-P",
    "genericName": "CARDIAC RESYNCHRONIZATION THERAPY PACEMAKER (CRT-P)",
    "manufacturer": "BOSTON SCIENTIFIC CORPORATION",
    "manufacturerCity": "SAINT PAUL",
    "manufacturerState": "MN",
    "manufacturerCountry": "US",
    "modelNumber": "U228",
    "catalogNumber": "U228",
    "lotNumber": "775309",
    "productCode": "NKE",
    "deviceOperator": "LAY USER/PATIENT",
    "isImplant": false,
    "isCombinationProduct": false,
    "udiNumber": "00802526559471",
    "deviceClass": "3",
    "regulationNumber": null,
    "pmaPmnNumber": "P030005/S138",
    "patientAge": "76 YR",
    "patientSex": "Male",
    "patientOutcome": [],
    "patientProblems": ["No Clinical Signs, Symptoms or Conditions"],
    "eventDescription": "IT WAS REPORTED THAT THE PATIENT WITH THIS CARDIAC RESYNCHRONIZATION THERAPY PACEMAKER (CRT-P) WAS EXPERIENCING PULSE DRIFTING HIGH AND INCONSISTENT...",
    "manufacturerNarrative": "",
    "additionalNarrative": "IF INFORMATION IS PROVIDED IN THE FUTURE, A SUPPLEMENTAL REPORT WILL BE ISSUED."
}

Output Fields

FieldTypeDescription
reportNumberStringUnique MDR report number
eventTypeStringSeverity: Death, Injury, Malfunction, or Other
dateOfEventStringDate the event occurred (YYYY-MM-DD)
dateReceivedStringDate FDA received the report (YYYY-MM-DD)
reportDateStringDate the report was filed (YYYY-MM-DD)
adverseEventBooleanWhether flagged as an adverse event
productProblemBooleanWhether flagged as a product problem
reportSourceStringSource of the report (e.g., "Manufacturer report")
manufacturerReportTypeStringReport timing: Initial, Thirty-Day, Five-Day, etc.
typeOfReportString[]Submission type(s): Initial, Supplemental, etc.
remedialActionString[]Actions taken: Recall, Repair, Replace, Relabeling, etc.
productProblemsString[]FDA problem codes (e.g., "Defective Device", "Battery Failure")
brandNameStringCommercial brand name of the device
genericNameStringGeneric/common device name
manufacturerStringDevice manufacturer name
manufacturerCityStringManufacturer city
manufacturerStateStringManufacturer state (US two-letter code)
manufacturerCountryStringManufacturer country code
modelNumberStringDevice model number
catalogNumberStringDevice catalog/reference number
lotNumberStringManufacturing lot number
productCodeStringFDA three-letter product classification code
deviceOperatorStringWho was operating the device (e.g., "Health Professional", "Lay User/Patient")
isImplantBooleanWhether the device is an implant
isCombinationProductBooleanWhether the device is a drug/device combination product
udiNumberStringUnique Device Identifier (UDI)
deviceClassString / nullFDA device classification (1, 2, or 3)
regulationNumberString / nullCFR regulation number
pmaPmnNumberStringAssociated PMA or 510(k) clearance number
patientAgeStringPatient age at time of event (e.g., "76 YR")
patientSexStringPatient sex: Male, Female, or Unknown
patientOutcomeString[]Patient outcomes: Death, Hospitalization, Life Threatening, etc.
patientProblemsString[]Patient-reported problems/symptoms
eventDescriptionStringFull narrative description of the event
manufacturerNarrativeStringManufacturer's evaluation summary
additionalNarrativeStringAdditional manufacturer narrative/follow-up

Event Types

Event TypeDescription
DeathPatient death associated with the device
InjuryPatient injury associated with the device
MalfunctionDevice malfunction with or without patient impact
OtherEvents that don't fit the above categories

Patient Outcome Codes

OutcomeDescription
DeathPatient died
HospitalizationPatient was hospitalized or hospitalization was prolonged
Life ThreateningEvent was life threatening
DisabilityEvent resulted in permanent impairment or disability
Required InterventionRequired medical or surgical intervention to prevent permanent impairment
OtherOther serious outcome

Use Cases

  • Postmarket surveillance teams monitoring adverse events for their own devices to detect emerging safety signals and meet FDA reporting obligations
  • Regulatory affairs professionals researching adverse event history for a device type before filing a 510(k) or PMA submission
  • Medical device companies tracking competitor device problems to identify market opportunities and assess competitive risks
  • Healthcare attorneys building product liability cases by searching for specific device malfunctions, injuries, and deaths with full event narratives
  • Clinical researchers analyzing device safety profiles across patient demographics, outcomes, and problem types for peer-reviewed publications
  • Hospital risk management evaluating device safety records before making procurement decisions — cross-reference brand names, manufacturers, and event types
  • Healthcare investors assessing device safety risk as part of due diligence for medical device company investments
  • Journalists and patient advocates investigating patterns of device failures, injuries, and deaths across manufacturers

How to Use the API

Python

import requests
import time

run = requests.post(
    "https://api.apify.com/v2/acts/ryanclinton~fda-device-events/runs",
    params={"token": "YOUR_APIFY_TOKEN"},
    json={
        "deviceName": "pacemaker",
        "eventType": "Death",
        "dateFrom": "2024-01-01",
        "maxResults": 100
    },
    timeout=30,
).json()

run_id = run["data"]["id"]
while True:
    status = requests.get(
        f"https://api.apify.com/v2/actor-runs/{run_id}",
        params={"token": "YOUR_APIFY_TOKEN"},
        timeout=10,
    ).json()
    if status["data"]["status"] in ("SUCCEEDED", "FAILED", "ABORTED"):
        break
    time.sleep(3)

dataset_id = status["data"]["defaultDatasetId"]
items = requests.get(
    f"https://api.apify.com/v2/datasets/{dataset_id}/items",
    params={"token": "YOUR_APIFY_TOKEN"},
    timeout=30,
).json()

for item in items:
    print(f"{item['reportNumber']} | {item['eventType']} | {item['brandName']} | {item['manufacturer']}")

JavaScript

const response = await fetch(
    "https://api.apify.com/v2/acts/ryanclinton~fda-device-events/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN",
    {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
            deviceName: "pacemaker",
            eventType: "Death",
            dateFrom: "2024-01-01",
            maxResults: 100,
        }),
    }
);

const events = await response.json();
events.forEach(e =>
    console.log(`${e.reportNumber} | ${e.eventType} | ${e.brandName} | ${e.manufacturer}`)
);

cURL

curl -X POST "https://api.apify.com/v2/acts/ryanclinton~fda-device-events/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "deviceName": "pacemaker",
    "eventType": "Death",
    "dateFrom": "2024-01-01",
    "maxResults": 100
  }'

How It Works

Input (deviceName, manufacturer, productCode, eventType, dates, filters)
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 1: Build Search Query                      │
│  Construct openFDA Lucene-style query string     │
│  from input parameters. Device name searches     │
│  both brand_name and generic_name with OR.       │
│  Date ranges converted to YYYYMMDD for API.      │
│  Terms joined with +AND+ conjunction.            │
└──────────────────────────────────────────────────┘
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 2: Paginated Fetch                         │
│  Fetch up to 100 results per request using       │
│  skip/limit pagination. Continue until           │
│  maxResults reached or no more results.          │
│  Retry with exponential backoff on 429/errors.   │
└──────────────────────────────────────────────────┘
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 3: Flatten & Transform                     │
│  Flatten nested device[0], patient[0] arrays     │
│  into a single record. Extract brand name,       │
│  manufacturer, model, UDI from device array.     │
│  Extract age, sex, outcomes from patient array.  │
│  Convert Y/N flags to boolean values.            │
└──────────────────────────────────────────────────┘
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 4: Extract Narratives                      │
│  Parse mdr_text array to extract event           │
│  descriptions, manufacturer evaluation           │
│  summaries, and additional narratives by         │
│  matching text_type_code values.                 │
└──────────────────────────────────────────────────┘
  │
  ▼
┌──────────────────────────────────────────────────┐
│  Step 5: Summary Statistics                      │
│  Tally event types (Death/Injury/Malfunction).   │
│  Count patient outcomes. Rank top 10 patient     │
│  problems. Log summary to run output.            │
└──────────────────────────────────────────────────┘
  │
  ▼
Structured adverse event records pushed to dataset

Data Sources

SourceAPI EndpointAuth RequiredRecords
FDA openFDA MAUDEhttps://api.fda.gov/device/event.jsonNo24M+

Common Product Codes

CodeDevice CategoryCodeDevice Category
NKEPacemakers (CRT-P)DQAPulse Oximeters
LWSDefibrillators (ICD)DXNECG/EKG Systems
DTBProsthetic HipsOEIUltrasound Systems
KGOBreast ImplantsFRNInsulin Pumps
JAXIntravascular CathetersQASAI/ML Software (CAD)

How Much Does It Cost?

ScenarioResultsEst. TimeEst. Cost
Single report lookup13 sec< $0.001
Device name search (100 results)10010 sec< $0.01
Full manufacturer + year (1,000 results)1,00030 sec~$0.02

The actor uses 256 MB memory and makes lightweight API calls with no browser rendering, keeping compute costs minimal. The Apify free tier covers thousands of runs per month.

Tips

  • Use product codes for precision — device name searches are broad. Product codes target exact device categories. Look up codes in the FDA Product Classification Database.
  • Filter by date_received for reliability — the date_of_event field is often blank or approximate on many MAUDE reports. date_received is always populated and is the most reliable date field.
  • Combine event type + manufacturer + date — track a specific manufacturer's injury or death reports over time to identify emerging safety signals.
  • Set adverseEventOnly for patient-impact focus — this excludes product-problem-only reports (malfunctions with no patient effect), letting you focus on events that actually harmed patients.
  • Read the event narratives — the eventDescription field contains the full free-text description of what happened. These narratives often reveal details not captured in the structured fields.
  • Partition large searches by date — the openFDA API caps at 1,000 results per query. Split multi-year searches into monthly or quarterly date ranges.
  • Cross-reference with 510(k) data — use the pmaPmnNumber field to look up the device's original clearance record in the FDA 510(k) actor.

Limitations

  • 1,000 result cap — the openFDA API limits results to 1,000 per query. Use date range partitioning for larger datasets.
  • Reporting bias — MAUDE is a passive surveillance system. Not all adverse events are reported, and reporting rates vary by manufacturer, event severity, and device type.
  • First device only — when a report lists multiple devices, the actor extracts data from the first device in the array. Multi-device events may have incomplete device information.
  • First patient only — similarly, when a report lists multiple patients, only the first patient's demographics and outcomes are extracted.
  • Narrative quality varies — event descriptions range from detailed clinical accounts to brief one-line summaries depending on the reporter.
  • Date gapsdateOfEvent is frequently blank or approximate, especially for older reports. Use dateReceived for the most reliable date filtering.
  • openFDA enrichment coveragedeviceClass and regulationNumber come from openFDA's enrichment layer and may be null for some records, particularly older ones.
  • Rate limiting — the openFDA API enforces rate limits. The actor handles this automatically with exponential backoff, but rapid sequential runs may experience delays.

Responsible Use

  • All data is public domain — FDA MAUDE data is published by the US government and is freely available without restrictions.
  • Respect openFDA rate limits — the actor includes built-in retry with backoff. Avoid launching dozens of concurrent runs against the same API endpoint.
  • Context matters — a MAUDE report does not prove that a device caused an adverse event. Reports describe associations, not confirmed causal relationships. Always consider the clinical context.
  • Verify critical decisions — for regulatory submissions, legal proceedings, or clinical decisions, always verify data against the official FDA MAUDE database.
  • Patient privacy — while MAUDE reports are public, they may describe sensitive medical situations. Handle data respectfully.

FAQ

Is an API key required? No. The openFDA API is free and does not require authentication.

How current is the data? The MAUDE database is updated regularly by the FDA. New reports typically appear within weeks of submission. The database contains reports from 1991 to present.

What is the difference between "adverse event" and "product problem"? An adverse event means the device was associated with a patient injury, death, or serious health consequence. A product problem means the device malfunctioned or had a defect, but may not have harmed anyone. A single report can be flagged as both.

Why are some event descriptions empty? Not all report sources include narrative descriptions. Voluntary reports from healthcare professionals and patients are less likely to include detailed narratives than mandatory manufacturer reports.

Can I find reports for a specific device model? The openFDA API does not support direct model number search. Search by manufacturer and product code, then filter results by modelNumber in the output.

What does "Thirty-Day" mean in manufacturerReportType? FDA requires manufacturers to report most device-related adverse events within 30 calendar days (Thirty-Day reports). More serious events require 5-day reports. "Initial" means the first report filed.

How far back does the data go? The MAUDE database contains reports from 1991 to present — over 30 years of medical device adverse event data.

Why do some reports show adverseEvent: false but eventType: "Injury"? The adverseEvent flag and eventType are independently reported fields. The event type describes the nature of the report, while the adverse event flag specifically indicates whether the FDA considers it an adverse event. Discrepancies occur due to reporting conventions.

Can I search for events related to a specific PMA or 510(k) number? Not directly through this actor's input. However, the output includes the pmaPmnNumber field, so you can search by manufacturer and product code, then filter results by the PMA/510(k) number in the output.

Integrations

  • Apify API — trigger runs programmatically and retrieve results as JSON for postmarket surveillance pipelines
  • Zapier — automatically search for new adverse events when a device is added to your monitoring list
  • Make (Integromat) — build workflows that check for new death or injury reports weekly and alert your safety team
  • Google Sheets — export adverse event data directly for trend analysis and safety reviews
  • Webhooks — receive event data as soon as the run completes for real-time safety monitoring
  • Scheduled Runs — run daily or weekly to monitor new adverse events for your device portfolio

Related Actors

ActorWhat it doesUse with MAUDE
FDA 510(k) Device Clearance SearchSearch 174K+ device clearancesCross-reference cleared devices with their adverse event history
FDA Medical Device Recall SearchSearch FDA device recallsFind recalls triggered by adverse events for a device
openFDA Drug Event MonitorFDA drug adverse eventsCompanion for combination products (drug + device)
FDA Food Recall MonitorFDA food recall dataComplete FDA safety data coverage
Clinical Trial TrackerClinicalTrials.gov searchFind trials launched in response to adverse event signals
SEC EDGAR Filing AnalyzerSEC filing analysisResearch financial impact of adverse events on public device companies

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try FDA Medical Device Adverse Event Search (MAUDE)?

Start for free on Apify. No credit card required.

Open on Apify Store