# FDA AI-Enabled Medical Devices List Apify Actor (`tehsnarf/fda-ai-enabled-medical-devices`) Actor

Scrapes FDA's official list of AI/ML-enabled medical devices authorized for U.S. marketing into structured records.

- **URL**: https://apify.com/tehsnarf/fda-ai-enabled-medical-devices.md
- **Developed by:** [Chris Hoover](https://apify.com/tehsnarf) (community)
- **Categories:** Lead generation, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### What does FDA AI-Enabled Medical Devices List Actor do?

This Actor scrapes the FDA's official **List of AI-Enabled Medical Devices** — the curated,
regularly-updated table FDA publishes at
[fda.gov/medical-devices/.../artificial-intelligence-enabled-medical-devices](https://www.fda.gov/medical-devices/software-medical-device-samd/artificial-intelligence-enabled-medical-devices)
identifying every medical device with AI/ML functionality authorized for U.S. marketing. It returns
a normalized, per-device export covering the final decision date, submission number, submission
detail link, device name, manufacturer, FDA medical specialty panel, and primary product code for
every listed device — pulled directly from FDA's own table (currently ~1,525 rows). Run it
on-demand or on a schedule to monitor for newly-authorized AI-enabled devices.

### Why use this FDA AI-enabled medical devices scraper?

- **Medtech competitive intelligence** — track which companies and device categories are getting
  AI/ML authorizations, and how fast the list is growing.
- **Regulatory affairs & consultants** — build an internal reference of authorized AI-enabled
  devices by specialty panel or product code without manually browsing FDA's table.
- **Digital health investors & analysts** — screen the AI-enabled device landscape for market
  sizing, competitive mapping, and diligence on specific companies.
- **AI governance & procurement teams** — cross-reference a device against FDA's authoritative list
  before clinical adoption.

### How to use FDA AI-Enabled Medical Devices List Actor

1. Click **Try for free**.
2. Leave the default **Start URLs** field as-is — it already points at FDA's AI-enabled devices
   list page (this is a single static page, not a multi-page directory).
3. Optionally set `maxItems` to cap how many rows are scraped (default 100; set higher, e.g. 2000,
   to capture the full current list).
4. Click **Start** and wait for the run to finish (typically well under a minute — the whole list
   loads in a single page fetch).
5. Download the results from the **Dataset** tab in JSON, CSV, Excel, or HTML.

### Input

| Field | Type | Description |
|---|---|---|
| `startUrls` | array (required) | FDA AI-enabled medical devices list page(s). Defaults to the official page — normally leave as-is. |
| `maxItems` | integer (default 100) | Maximum device rows to scrape. |
| `delaySeconds` | number (default 1.0) | Polite delay before each page fetch. Raise to 30 if you add extra start URLs, per FDA's robots.txt `Crawl-Delay: 30` for general crawlers. |
| `concurrency` | integer (default 1) | How many start URLs to fetch at once. Defaults to sequential to respect FDA's crawl-delay guidance; irrelevant for the normal single-URL case. |

### Output

```json
{
  "finalDecisionDate": "03/30/2026",
  "submissionNumber": "K254207",
  "submissionDetailUrl": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfPMN/pmn.cfm?ID=K254207",
  "deviceName": "AiORTA - Plan v2.0",
  "company": "ViTAA Medical Solutions, Inc.",
  "panel": "Radiology",
  "primaryProductCode": "QIH",
  "sourceRowOrder": 1,
  "sourceDownloadUrl": "https://www.fda.gov/media/178541/download?attachment",
  "scrapedAt": "2026-08-05T08:20:07.643994+00:00"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data table

| Field | Description |
|---|---|
| finalDecisionDate | Date of FDA final decision, as published |
| submissionNumber | FDA premarket submission number (e.g. `K254207`) |
| submissionDetailUrl | Link to the submission's accessdata.fda.gov detail page (reference only — not crawled) |
| deviceName | Device/product name as listed |
| company | Manufacturer/submitter company name |
| panel | FDA medical specialty panel (lead), e.g. Radiology, Cardiovascular |
| primaryProductCode | FDA primary product code |
| sourceRowOrder | 1-indexed row position in FDA's source table (reverse-chronological) |
| sourceDownloadUrl | FDA's official CSV/Excel download URL for the full list |
| scrapedAt | ISO-8601 UTC scrape timestamp |

### Pricing

$4.99 per 1,000 results. Example costs: 100 results ≈ $0.50, 500 results ≈ $2.50, 1,000 results ≈
$4.99, 5,000 results ≈ $24.95. This is a single-request, no-detail-page-fetch design, so pricing
sits at the low end of comparable directory actors.

### Tips or advanced options

- Set `maxItems` above FDA's current row count (currently ~1,525) to capture the entire list in one
  run.
- Run on a schedule (e.g. weekly) to catch newly-authorized devices as FDA updates the list —
  `sourceRowOrder` and `finalDecisionDate` make new additions easy to diff against a prior run.
- `submissionDetailUrl` links to FDA's public 510(k)/De Novo detail page for that submission if you
  need to look up additional filing information manually.

### FAQ, disclaimers, and support

This Actor scrapes only FDA's publicly-published AI-enabled device list — no login is required and
no personal/private data is collected. Data accuracy depends on FDA's published records at scrape
time; always confirm against the official FDA source for regulatory-critical decisions. This Actor
is not affiliated with or endorsed by the FDA. Found a bug or need a custom field/filter? Open an
issue in the Actor's **Issues** tab.

# Actor input Schema

## `startUrls` (type: `array`):

FDA AI-enabled medical devices list page(s) to scrape. This is a single static page — normally leave the default.

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

Maximum number of device rows to scrape

## `delaySeconds` (type: `number`):

Polite delay before requesting each page. FDA's robots.txt declares Crawl-Delay: 30 for general crawlers — the default 1.0s is fine for the normal single-start-URL case (one request per run), but if you add extra start URLs, raise this to 30 to stay within that guidance.

## `concurrency` (type: `integer`):

How many start URLs to fetch at once (each still waits delaySeconds before requesting). Defaults to 1 (sequential) to respect FDA's 30s Crawl-Delay if extra start URLs are added — this list is normally just the single default page.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.fda.gov/medical-devices/software-medical-device-samd/artificial-intelligence-enabled-medical-devices"
    }
  ],
  "maxItems": 100,
  "delaySeconds": 1,
  "concurrency": 1
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("tehsnarf/fda-ai-enabled-medical-devices").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("tehsnarf/fda-ai-enabled-medical-devices").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 '{}' |
apify call tehsnarf/fda-ai-enabled-medical-devices --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tehsnarf/fda-ai-enabled-medical-devices"
        }
    }
}

```

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/7ataAULfXUUssryI9/builds/EhuLLnpfM0fgS04RX/openapi.json
