FDA 510(k) Device Clearance Search
Search the FDA's database of **174,000+ 510(k) premarket notification clearances** for medical devices. Filter by device name, company, product code, advisory committee, decision type, clearance type, date range, or country. Each result includes computed days-to-decision timelines that are not available in the raw FDA data.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| result-returned | Charged 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 database of 174,000+ 510(k) premarket notification clearances for medical devices. Filter by device name, company, product code, advisory committee, decision type, clearance type, date range, or country. Each result includes computed days-to-decision timelines that are not available in the raw FDA data.
No API key required. Just enter a device name like pulse oximeter and get back structured clearance data in seconds.
Why Use FDA 510(k) Device Clearance Search?
Finding 510(k) clearance data means navigating the FDA's AccessData interface or constructing complex openFDA API queries by hand. This actor handles query construction, pagination (up to 1,000 results), date formatting, field normalization, and computes the days-to-decision metric automatically — giving you clean, structured JSON you can feed directly into spreadsheets, databases, or analysis pipelines.
Features
- Device name search — find clearances by product name (e.g., "pulse oximeter", "glucose monitor", "surgical robot", "AI diagnostic")
- Company lookup — search by applicant company (e.g., "Medtronic", "Abbott", "Siemens Healthineers", "Philips")
- Product code filtering — use FDA's three-letter classification codes (e.g., "DQA" for pulse oximeters, "QAS" for AI/ML software)
- K number lookup — retrieve a single submission by its 510(k) number (e.g., "K240912")
- Date range filtering — search by decision date range in YYYY-MM-DD format
- Advisory committee filter — narrow by FDA specialty area (20 committees from Anesthesiology to Toxicology)
- Decision type filter — filter by outcome: Substantially Equivalent, Not Substantially Equivalent, Third Party, etc.
- Clearance type filter — Traditional, Special 510(k), Abbreviated 510(k), or Dual Track
- Country code filter — filter by applicant country of origin (US, DE, JP, CN, IL, etc.)
- Days-to-decision computation — calculates elapsed time from FDA receipt to decision, a metric not available in the raw API
- Summary statistics — automatic computation of average/min/max review times, decision breakdowns, and clearance type distributions logged at the end of each run
- Retry with backoff — built-in exponential backoff for API rate limits and transient errors
How to Use
-
Enter search criteria — provide at least one filter: device name, applicant, product code, K number, date range, advisory committee, decision type, clearance type, or country code.
-
Set the result limit — choose how many clearances to return (1–1,000). The default is 100. The openFDA API caps results at 1,000 per query.
-
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.
-
Review summary stats — check the run log for automatic summary statistics including average days-to-decision, decision breakdown, and clearance type distribution.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
deviceName | String | No* | — | Device name search (e.g., "pulse oximeter", "glucose monitor") |
applicant | String | No* | — | Company/applicant name (e.g., "Medtronic", "Abbott") |
productCode | String | No* | — | FDA three-letter product code (e.g., "DQA", "QAS") |
kNumber | String | No* | — | Specific 510(k) number (e.g., "K240912") |
decisionDateFrom | String | No | — | Start of decision date range (YYYY-MM-DD) |
decisionDateTo | String | No | — | End of decision date range (YYYY-MM-DD) |
advisoryCommittee | Select | No | All | FDA advisory committee code (20 options) |
decisionType | Select | No | All | Clearance decision type (6 options) |
clearanceType | Select | No | All | Traditional, Special, Abbreviated, or Dual Track |
countryCode | String | No | — | Two-letter country code (e.g., "US", "DE", "JP") |
maxResults | Integer | No | 100 | Maximum clearances to return (1–1,000) |
*At least one search parameter is required.
Input Examples
Find all pulse oximeter clearances:
{
"deviceName": "pulse oximeter",
"maxResults": 100
}
Look up a specific 510(k) submission:
{
"kNumber": "K240912"
}
Medtronic clearances in 2024:
{
"applicant": "Medtronic",
"decisionDateFrom": "2024-01-01",
"decisionDateTo": "2024-12-31",
"maxResults": 500
}
AI/ML software devices (product code QAS):
{
"productCode": "QAS",
"maxResults": 200
}
Cardiovascular devices cleared in 2024:
{
"advisoryCommittee": "CV",
"decisionDateFrom": "2024-01-01",
"decisionDateTo": "2024-12-31",
"maxResults": 500
}
Devices denied clearance (Not Substantially Equivalent):
{
"decisionType": "SEKD",
"decisionDateFrom": "2020-01-01",
"maxResults": 100
}
German medical device companies since 2023:
{
"countryCode": "DE",
"decisionDateFrom": "2023-01-01",
"maxResults": 200
}
Input Tips
- Use
productCodefor 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 for your device category. - Combine
advisoryCommitteewith a date range to analyze clearance trends in a specific specialty area over time. - Set
decisionTypeto "SEKD" (Not Substantially Equivalent) to find devices that were denied clearance — useful for competitive intelligence and regulatory risk assessment. - For large result sets, partition your search using date ranges to stay within the 1,000 result limit.
- Device name and applicant searches support partial matching — "pulse" will match "pulse oximeter", "pulse wave analyzer", etc.
Output
Each clearance record includes:
{
"kNumber": "K240912",
"deviceName": "Tempus Pro Vital Signs Monitor",
"applicant": "Philips Medical Systems",
"decisionCode": "SESE",
"decisionDescription": "Substantially Equivalent",
"decisionDate": "2024-08-15",
"dateReceived": "2024-06-18",
"daysToDecision": 58,
"productCode": "DQA",
"advisoryCommittee": "AN",
"advisoryCommitteeDescription": "Anesthesiology",
"clearanceType": "Traditional",
"city": "Andover",
"state": "MA",
"country": "US",
"zipCode": "01810",
"contact": "John Smith",
"address": "3000 Minuteman Road",
"thirdPartyReview": false,
"expeditedReview": false,
"statementOrSummary": "Summary",
"deviceClass": "2",
"regulationNumber": "868.2500",
"openfdaDeviceName": "Oximeter, Pulse",
"openfdaSpecialty": "Anesthesiology"
}
Output Fields
| Field | Type | Description |
|---|---|---|
kNumber | String | Unique 510(k) submission number (e.g., "K240912") |
deviceName | String | Name of the medical device |
applicant | String | Company that submitted the 510(k) |
decisionCode | String | FDA decision code (SESE, SEKD, etc.) |
decisionDescription | String | Human-readable decision description |
decisionDate | String | Date of FDA decision (YYYY-MM-DD) |
dateReceived | String | Date the submission was received by FDA (YYYY-MM-DD) |
daysToDecision | Integer / null | Computed days from receipt to decision (not in raw API) |
productCode | String | FDA three-letter product classification code |
advisoryCommittee | String | Two-letter advisory committee code |
advisoryCommitteeDescription | String | Full name of the advisory committee |
clearanceType | String | Traditional, Special, Abbreviated, or Dual Track |
city | String | Applicant city |
state | String | Applicant state (US two-letter code) |
country | String | Applicant country code (US, DE, JP, etc.) |
zipCode | String | Applicant ZIP/postal code |
contact | String | Contact person name |
address | String | Applicant street address |
thirdPartyReview | Boolean | Whether reviewed by an FDA-accredited third party |
expeditedReview | Boolean | Whether the submission received expedited review |
statementOrSummary | String | Whether a 510(k) summary or statement is available |
deviceClass | String / null | FDA device classification (1, 2, or 3). Null for older records |
regulationNumber | String / null | CFR regulation number (e.g., "868.2500"). Null for older records |
openfdaDeviceName | String / null | Standardized device name from openFDA enrichment layer |
openfdaSpecialty | String / null | Medical specialty description from openFDA |
Use Cases
- Regulatory affairs teams benchmarking FDA review timelines by product code and clearance type — use
daysToDecisionto set realistic submission-to-clearance expectations - Medical device companies tracking competitor clearances to identify new market entrants, product launches, and shifts in regulatory strategy
- Regulatory consultants searching for predicate devices — every 510(k) submission requires a legally marketed predicate with similar intended use
- Healthcare investors and analysts researching a company's cleared device portfolio as part of due diligence before funding or acquisition decisions
- Patent attorneys cross-referencing device clearances with patent filings to establish prior art and identify infringement risks
- Market research firms analyzing clearance trends by advisory committee, product type, country, and date to map the medical device competitive landscape
- Quality and compliance auditors verifying that marketed devices have valid 510(k) clearances and matching product codes
How to Use the API
Python
import requests
import time
run = requests.post(
"https://api.apify.com/v2/acts/ryanclinton~fda-510k-clearances/runs",
params={"token": "YOUR_APIFY_TOKEN"},
json={
"deviceName": "pulse oximeter",
"decisionDateFrom": "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['kNumber']} | {item['deviceName']} | {item['applicant']} | {item['daysToDecision']} days")
JavaScript
const response = await fetch(
"https://api.apify.com/v2/acts/ryanclinton~fda-510k-clearances/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
deviceName: "pulse oximeter",
decisionDateFrom: "2024-01-01",
maxResults: 100,
}),
}
);
const clearances = await response.json();
clearances.forEach(c =>
console.log(`${c.kNumber} | ${c.deviceName} | ${c.daysToDecision} days`)
);
cURL
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~fda-510k-clearances/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"deviceName": "pulse oximeter",
"decisionDateFrom": "2024-01-01",
"maxResults": 100
}'
How It Works
Input (deviceName, applicant, productCode, kNumber, dates, filters)
│
▼
┌──────────────────────────────────────────────────┐
│ Step 1: Build Search Query │
│ Construct openFDA Lucene-style query string │
│ from input parameters. Date ranges converted │
│ to YYYYMMDD format for API compatibility. │
│ 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: Transform & Enrich │
│ Normalize field names to camelCase. │
│ Format dates from YYYYMMDD → YYYY-MM-DD. │
│ Merge address fields. Convert Y/N → boolean. │
│ Extract openFDA enrichment (class, regulation). │
└──────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────┐
│ Step 4: Compute Days to Decision │
│ Calculate elapsed days between dateReceived │
│ and decisionDate for each clearance. │
│ This metric is NOT in the raw openFDA data. │
└──────────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────┐
│ Step 5: Summary Statistics │
│ Compute avg/min/max daysToDecision. │
│ Tally decision type and clearance type │
│ breakdowns. Log to run output. │
└──────────────────────────────────────────────────┘
│
▼
Structured clearance records pushed to dataset
Data Sources
| Source | API Endpoint | Auth Required |
|---|---|---|
| FDA openFDA | https://api.fda.gov/device/510k.json | No |
Advisory Committee Reference
| Code | Specialty | Code | Specialty |
|---|---|---|---|
| AN | Anesthesiology | MI | Microbiology |
| CH | Clinical Chemistry | NE | Neurology |
| CV | Cardiovascular | OB | Obstetrics/Gynecology |
| DE | Dental | OP | Ophthalmic |
| EN | Ear, Nose & Throat | OR | Orthopedic |
| GU | Gastroenterology/Urology | PA | Pathology |
| HO | General Hospital | PM | Physical Medicine |
| HE | Hematology | RA | Radiology |
| IM | Immunology | SU | General/Plastic Surgery |
| — | — | TX | Clinical Toxicology |
Decision Code Reference
| Code | Meaning |
|---|---|
| SESE | Substantially Equivalent |
| SESD | Substantially Equivalent with Limitations |
| SEST | Substantially Equivalent (Third Party Review) |
| SEKD | Not Substantially Equivalent (Denied) |
| SESP | Substantially Equivalent (Special) |
| SESU | Substantially Equivalent (Unclassified) |
Common Product Codes
| Code | Device Category | Code | Device Category |
|---|---|---|---|
| DQA | Pulse Oximeters | MUJ | CT Scanners |
| QAS | AI/ML Software (CAD) | OEI | Ultrasound Systems |
| DXN | ECG/EKG Systems | QKQ | Digital Pathology |
| JAX | Intravascular Catheters | QMT | Clinical Decision Support |
| LLZ | Glucose Monitors | NQI | Surgical Robotics |
How Much Does It Cost?
| Scenario | Results | Est. Time | Est. Cost |
|---|---|---|---|
| Single K number lookup | 1 | 3 sec | < $0.001 |
| Device name search (100 results) | 100 | 10 sec | < $0.01 |
| Full committee + year (1,000 results) | 1,000 | 30 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 return broad matches, but product codes target exact device categories. Look up codes in the FDA Product Classification Database.
- Partition large searches by date — the openFDA API caps at 1,000 results per query. Split multi-year searches into yearly date ranges to get complete data.
- Combine committee + date for trend analysis — searching
advisoryCommittee: "CV"with annual date ranges lets you track cardiovascular clearance volumes over time. - Check daysToDecision for planning — if your company is preparing a 510(k) submission, filter by your product code and check the average days-to-decision to set realistic timeline expectations.
- SEKD denials reveal regulatory risk — searching for Not Substantially Equivalent decisions in your product category shows what the FDA rejects and why (when paired with FDA AccessData records).
- Batch via API — call this actor programmatically to research multiple product codes or companies in parallel.
Limitations
- 1,000 result cap — the openFDA API limits results to 1,000 per query. Use date range partitioning for larger datasets.
- No predicate device chain — the openFDA 510(k) endpoint does not include predicate device references. For predicate chain analysis, use FDA AccessData directly.
- Older records may have gaps — clearances from the 1970s–1990s may have incomplete dates, addresses, or missing openFDA enrichment fields (deviceClass, regulationNumber).
- Device name search is broad — searching "monitor" returns patient monitors, blood pressure monitors, display monitors, etc. Use product codes for precision.
- No full-text summaries — the
statementOrSummaryfield indicates whether a summary exists, but does not contain the full text. Full 510(k) summaries are available on FDA AccessData. - openFDA enrichment coverage — the
deviceClass,regulationNumber,openfdaDeviceName, andopenfdaSpecialtyfields come from openFDA's enrichment layer and may be null for some records. - Rate limiting — the openFDA API enforces rate limits. The actor handles this automatically with exponential backoff, but very rapid sequential runs may experience delays.
Responsible Use
- All data is public domain — FDA 510(k) clearance 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.
- Use for legitimate purposes — this tool is designed for regulatory intelligence, market research, due diligence, competitive analysis, and academic research.
- Verify critical decisions — for regulatory submissions, always verify clearance data against the official FDA AccessData database.
FAQ
Is an API key required? No. The openFDA API is free and does not require authentication. Optional API keys are available from openFDA for higher rate limits but are not needed for normal usage.
How current is the data? The openFDA database is updated regularly by the FDA. New clearances typically appear within days to weeks of the official decision.
Can I search for devices from a specific country?
Yes. Use the countryCode parameter with a two-letter code (e.g., "DE" for Germany, "JP" for Japan, "CN" for China, "IL" for Israel).
What is the difference between Traditional, Special, and Abbreviated 510(k)? Traditional is the standard pathway. Special 510(k) is for modifications to your own previously cleared device. Abbreviated 510(k) relies on guidance documents and special controls rather than direct predicate comparison.
How is daysToDecision calculated?
It is the number of calendar days between dateReceived (when FDA received the submission) and decisionDate (when FDA issued its decision). This is computed by the actor — it is not available in the raw openFDA API.
Can I find which devices were denied clearance?
Yes. Set decisionType to "SEKD" (Not Substantially Equivalent) to find all denied submissions. This is valuable for understanding regulatory risk in your product category.
Why does my search return 0 results? The most common cause is overly specific filters. Try broadening your search — remove one filter at a time until results appear. Also check that product codes and country codes are correctly formatted (uppercase, correct length).
How far back does the data go? The database contains 510(k) clearances from 1976 to present — the entire history of the 510(k) program.
Integrations
- Apify API — trigger runs programmatically and retrieve results as JSON for regulatory intelligence pipelines
- Zapier — automatically run a 510(k) search when a new competitor is added to your tracking list
- Make (Integromat) — build workflows that monitor new clearances in your product category and alert your team
- Google Sheets — export clearance data directly for regulatory strategy analysis and timeline benchmarking
- Webhooks — receive clearance results as soon as the run completes for real-time monitoring
- Scheduled Runs — run weekly or monthly to track new clearances in your advisory committee or product code
Related Actors
| Actor | What it does | Use with FDA 510(k) |
|---|---|---|
| FDA Medical Device Recall Search | Search FDA device recalls | Cross-reference cleared devices with recall history |
| openFDA Drug Event Monitor | FDA adverse event reports | Companion actor for drug/device safety analysis |
| FDA Food Recall Monitor | FDA food recall data | Complete FDA regulatory data coverage |
| Clinical Trial Tracker | ClinicalTrials.gov search | Find clinical trials for devices before/after clearance |
| USPTO Patent Search | US patent database | Cross-reference device patents with clearance data |
| SEC EDGAR Filing Analyzer | SEC filing analysis | Research public device companies' financial filings |
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
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.
Related actors
GitHub Repository Search
Search GitHub repositories by keyword, language, topic, stars, forks. Sort by stars, forks, or recently updated. Returns metadata, topics, license, owner info, URLs. Free API, optional token for higher limits.
Website Content to Markdown
Convert any website to clean Markdown for RAG pipelines, LLM training, and AI apps. Crawls pages, strips boilerplate, preserves headings, tables, and code blocks. GFM support.
Weather Forecast Search
Get weather forecasts for any location worldwide using the free Open-Meteo API. Returns current conditions, daily and hourly forecasts with temperature, precipitation, wind, UV index, and more. No API key needed.
EUIPO EU Trademark Search
Search EU trademarks via official EUIPO database. Find registered and pending trademarks by name, Nice class, applicant, or status. Returns full trademark details and filing history.
Ready to try FDA 510(k) Device Clearance Search?
Start for free on Apify. No credit card required.
Open on Apify Store