# FDA GUDID Device Identifier (UDI) Scraper (`compute-edge/fda-device-udi-scraper`) Actor

Extract medical device records from the FDA GUDID Global Unique Device Identification database via openFDA. Get brand names, company names, device identifiers, product codes, medical specialties, device class, and Rx, OTC, and sterile flags. Filter by brand, company, or product code.

- **URL**: https://apify.com/compute-edge/fda-device-udi-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## FDA GUDID Device Identifier (UDI) Scraper

Extract structured device identification data from the **FDA GUDID (Global Unique Device Identification Database)** — the authoritative registry of unique device identifiers (UDI) for medical devices marketed in the United States. This Actor queries the openFDA Device UDI API and provides powerful filtering, regulatory classification, and clean JSON output ready for medical device market research, supply chain analysis, and regulatory compliance automation.

The GUDID database is maintained by the FDA as the central repository for device identifiers, product codes, commercial status, and regulatory information. Medical device manufacturers, distributors, healthcare procurement teams, and regulatory professionals rely on GUDID data for product discovery, market analysis, and compliance verification.

### Key Features

- **Complete GUDID device records** — Brand name, manufacturer, device description, product codes, and regulatory classification
- **Advanced filtering** — Search by brand name, company name, product code, or Rx-only devices
- **Regulatory data** — FDA product codes, device class, medical specialty, regulation numbers, and GMDN terms
- **Device characteristics** — Rx/OTC status, single-use flag, kit indicator, sterility, MRI safety, and commercial distribution status
- **Device identifiers** — Primary UDI and issuing agency information
- **No authentication required** — Public openFDA API, no keys or credentials needed
- **Batch-optimized output** — Clean JSON ready for procurement systems, regulatory databases, or analytics pipelines

### Output Data Fields

| Field | Type | Description |
|-------|------|-------------|
| `brandName` | string | Device brand name |
| `companyName` | string | Manufacturer company name |
| `deviceDescription` | string | Human-readable device description (up to 400 characters) |
| `versionModelNumber` | string | Version or model number of the device |
| `primaryDeviceId` | string | Primary Unique Device Identifier (UDI) |
| `issuingAgency` | string | Issuing agency for the UDI (e.g., GS1, HIBCC) |
| `productCode` | string | FDA product code(s) comma-separated |
| `deviceName` | string | Device name from product code classification |
| `medicalSpecialty` | string | Medical specialty description (e.g., Cardiovascular, Orthopedic) |
| `deviceClass` | string | FDA device class (Class I, II, III) |
| `regulationNumber` | string | 21 CFR regulation number |
| `gmdnTerm` | string | Global Medical Device Nomenclature (GMDN) term |
| `isRx` | boolean | Whether device is Rx (prescription) only |
| `isOtc` | boolean | Whether device is OTC (over-the-counter) |
| `isSingleUse` | boolean | Whether device is single-use |
| `isSterile` | boolean | Whether device is sterile |
| `mriSafety` | string | MRI safety classification (e.g., MR Safe, MR Conditional) |
| `commercialDistributionStatus` | string | Current commercial status (Active, Inactive, Removed) |
| `publicVersionDate` | string | Date record was publicly released (YYYY-MM-DD) |

### How to Scrape the FDA GUDID Device Database

1. Navigate to the **FDA GUDID Device Identifier (UDI) Scraper** Actor page on Apify Store.
2. Click **Start** to open the input configuration form.
3. (Optional) Enter a **Brand Name** to search for a specific device brand (e.g., "Sensicard").
4. (Optional) Enter a **Company Name** to search for devices from a specific manufacturer (e.g., "Abbott", "Medtronic").
5. (Optional) Enter a **Product Code** to filter by FDA product code (e.g., "FOZ" for pacemakers, "GGG" for syringes).
6. (Optional) Toggle **Rx Only** to retrieve only prescription-class devices.
7. Set **Max Results** to control the output size (default: 1000, min: 1, max: 25000).
8. Click **Start** to run the Actor.
9. Download results as JSON, CSV, or Excel from the **Dataset** tab.

### Input Example

```json
{
    "brandName": "SimBionix",
    "companyName": "",
    "productCode": "FOZ",
    "rxOnly": false,
    "maxResults": 500
}
````

### Output Example

```json
{
    "brandName": "Sensicard",
    "companyName": "Orthofix International N.V.",
    "deviceDescription": "External fixation system for orthopedic trauma",
    "versionModelNumber": "Model 5.0",
    "primaryDeviceId": "00721635001245",
    "issuingAgency": "GS1",
    "productCode": "FOZ",
    "deviceName": "Fixation System, Orthopedic, External",
    "medicalSpecialty": "Orthopedic Surgery",
    "deviceClass": "II",
    "regulationNumber": "21 CFR 888.1900",
    "gmdnTerm": "External fixation system",
    "isRx": true,
    "isOtc": false,
    "isSingleUse": false,
    "isSterile": true,
    "mriSafety": "MR Conditional",
    "commercialDistributionStatus": "Active",
    "publicVersionDate": "2024-06-15"
}
```

### Pricing

This Actor queries the free openFDA Device UDI API with efficient pagination and filtering.

- **Cost per run**: ~$0.002-0.005 (depends on result volume and pagination)
- **Actor start event**: Default platform rate
- **Per-result pricing**: $0.003/result

Typical run time is 10-60 seconds depending on filter selectivity and result volume.

### Use Cases

- **Medical device market research** — Identify new products, competitors, and market entrants in specific therapeutic areas
- **Supply chain optimization** — Build device catalogs, verify product codes, and track commercial status changes
- **Regulatory compliance** — Monitor device classifications, product code assignments, and Rx/OTC status
- **Healthcare procurement** — Research devices by specialty, class, or manufacturer for purchasing decisions
- **Product development** — Analyze existing devices, their classifications, and regulatory pathways
- **Competitive intelligence** — Track competitor device portfolios and product launches
- **Supplier discovery** — Find manufacturers of specific device types by product code filtering
- **Data enrichment** — Augment internal device catalogs with official FDA GUDID data
- **RAG pipeline ingestion** — Clean structured medical device data ready for LLM-based analysis

### FAQ

#### Is it legal to scrape the FDA GUDID database?

Yes. This Actor accesses publicly available data from the FDA GUDID database via the openFDA API, which is published as open government data. No authentication bypass or terms-of-service violation is involved. The data is freely available for any use.

#### How much does it cost to scrape GUDID data?

See the pricing table above. At $0.003 per result, fetching 1,000 device records costs approximately $3.00 in Actor fees plus minimal Apify compute costs. The openFDA API is free to use.

#### Can I export GUDID data to Excel or CSV?

Yes. Apify supports exporting results in JSON, CSV, Excel, XML, and other formats directly from the Dataset tab after a run completes.

#### How often is the GUDID database updated?

The FDA continuously updates the GUDID database as manufacturers submit new device registrations and update existing records. Most devices are added or updated within days of manufacturer submission. You can schedule this Actor to run daily or weekly to track changes.

#### What does the "Product Code" field represent?

FDA product codes are 3-letter codes that classify medical devices by type and predicate device category. Examples: FOZ (bone fixation system), GGG (syringe), HEA (electrocardiograph). Use product code filtering to narrow results to a specific device category.

#### Which fields are most important for market research?

**Priority fields for analysis**: `deviceClass` (regulatory risk tier), `medicalSpecialty` (market segment), `productCode` (device category), `companyName` (manufacturer), `commercialDistributionStatus` (current market presence), `publicVersionDate` (recent activity).

#### What is the difference between GUDID and other FDA databases?

- **GUDID** — Device identifiers, UDI assignments, product codes, manufacturer info (this Actor)
- **openFDA Device Adverse Events** — Safety reports and recalls
- **510(k) Database** — Premarket notification submissions
- **PMA Database** — Premarket approval (Class III devices)

This Actor focuses on the GUDID database for device identification and regulatory classification.

### Other Scrapers by SeatSignal

- [CISA KEV Scraper](https://apify.com/seatsignal/cisa-kev-scraper) — Extract CVE threat intelligence from CISA Known Exploited Vulnerabilities catalog
- [NIST NVD Scraper](https://apify.com/seatsignal/nist-nvd-scraper) — Extract CVE vulnerability data from NIST National Vulnerability Database
- [CPSC Product Recalls Scraper](https://apify.com/seatsignal/cpsc-product-recalls-scraper) — Extract consumer product recall data
- [NHTSA Vehicle Safety Scraper](https://apify.com/seatsignal/nhtsa-vehicle-safety-scraper) — Extract vehicle recalls and safety investigations
- [OSHA Inspections Scraper](https://apify.com/seatsignal/osha-inspections-scraper) — Extract OSHA workplace safety inspection data

### Legal Disclaimer

This Actor extracts publicly available data from the FDA GUDID database via the openFDA API, which is published as open government data. No authentication or terms-of-service bypass is involved. Users are responsible for ensuring their use of the extracted data complies with applicable laws and regulations, including HIPAA and state privacy laws if working with healthcare data. For support, contact the Actor developer through the Apify Store.

# Actor input Schema

## `brandName` (type: `string`):

Filter by device brand name (exact phrase match). Example: 'Sensicard', 'SimBionix'.

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

Filter by manufacturer company name (exact phrase match). Example: 'Medtronic', 'Abbott'.

## `productCode` (type: `string`):

Filter by FDA product code (e.g., 'FOZ', 'GGG'). Leave blank to search all codes.

## `rxOnly` (type: `boolean`):

If enabled, only return devices marked as Rx (prescription-only).

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

Maximum number of device records to return (1-25000). Default 1000.

## Actor input object example

```json
{
  "brandName": "",
  "companyName": "",
  "productCode": "",
  "rxOnly": false,
  "maxResults": 1000
}
```

# Actor output Schema

## `dataset` (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("compute-edge/fda-device-udi-scraper").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("compute-edge/fda-device-udi-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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 compute-edge/fda-device-udi-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=compute-edge/fda-device-udi-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "FDA GUDID Device Identifier (UDI) Scraper",
        "description": "Extract medical device records from the FDA GUDID Global Unique Device Identification database via openFDA. Get brand names, company names, device identifiers, product codes, medical specialties, device class, and Rx, OTC, and sterile flags. Filter by brand, company, or product code.",
        "version": "0.1",
        "x-build-id": "tmiupbG7EMSwJUpD9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~fda-device-udi-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-fda-device-udi-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/compute-edge~fda-device-udi-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-fda-device-udi-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/compute-edge~fda-device-udi-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-fda-device-udi-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "brandName": {
                        "title": "Brand Name",
                        "type": "string",
                        "description": "Filter by device brand name (exact phrase match). Example: 'Sensicard', 'SimBionix'.",
                        "default": ""
                    },
                    "companyName": {
                        "title": "Company Name",
                        "type": "string",
                        "description": "Filter by manufacturer company name (exact phrase match). Example: 'Medtronic', 'Abbott'.",
                        "default": ""
                    },
                    "productCode": {
                        "title": "Product Code",
                        "type": "string",
                        "description": "Filter by FDA product code (e.g., 'FOZ', 'GGG'). Leave blank to search all codes.",
                        "default": ""
                    },
                    "rxOnly": {
                        "title": "Rx Only (Prescription Devices)",
                        "type": "boolean",
                        "description": "If enabled, only return devices marked as Rx (prescription-only).",
                        "default": false
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 25000,
                        "type": "integer",
                        "description": "Maximum number of device records to return (1-25000). Default 1000.",
                        "default": 1000
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
