FDA Medical Device Establishment Registration Scraper
Pricing
Pay per event
FDA Medical Device Establishment Registration Scraper
Export FDA device establishment registrations, FEI numbers, owner/operators, addresses, product codes, classes, and 510(k)/PMA refs from openFDA.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Export FDA medical device establishment registration records from the official openFDA API.
Use this actor to collect firm names, FEI numbers, registration numbers, owner/operator data, addresses, product codes, device classes, medical specialties, and 510(k)/PMA references for compliance and market-intelligence workflows.
What does FDA Medical Device Establishment Registration Scraper do?
This actor searches the public openFDA device/registrationlisting endpoint and turns nested FDA registration records into clean dataset rows.
Each output row represents one establishment registration and product-code combination.
The actor is designed for repeatable exports, vendor qualification, supplier checks, and regulated-market mapping.
It does not scrape a browser page.
It uses the official openFDA JSON API.
Who is it for?
Medical-device compliance teams use it to verify registered establishments.
Supplier qualification teams use it to enrich vendor profiles with FEI and registration data.
KYB and due-diligence teams use it to check regulated manufacturers and importers.
Regulatory intelligence teams use it to map products, device classes, and market participants.
Data teams use it to automate recurring FDA establishment exports.
Why use this actor?
✅ Official FDA source through openFDA.
✅ No login required for normal public queries.
✅ Output is normalized into one row per registration/product combination.
✅ Includes raw source records for audit trails.
✅ Supports structured filters and advanced raw openFDA syntax.
✅ Works well in scheduled Apify tasks.
Data you can extract
| Field group | Example fields |
|---|---|
| Registration identity | registrationNumber, feiNumber, statusCode, registrationExpiryYear |
| Firm details | firmName, ownerOperatorName, ownerOperatorNumber |
| Address | addressLine1, city, stateCode, countryCode, zipCode |
| Establishment context | establishmentTypes, proprietaryNames, initialImporterFlag |
| Product data | productCode, deviceName, medicalSpecialty, deviceClass |
| FDA references | regulationNumber, kNumber, pmaNumber |
| Audit metadata | openFdaQuery, sourceUrl, scrapedAt, rawRecord |
How much does it cost to scrape FDA device registrations?
This actor uses pay-per-event pricing.
There is a $0.005 start fee per run and a tiered per-item charge for each saved dataset row.
Current BRONZE item price is $0.000026751 per FDA registration/product row, with FREE $0.000030763, SILVER $0.000020865, GOLD $0.00001605, PLATINUM $0.0000107, and DIAMOND $0.00001.
The default input is intentionally small so first runs stay inexpensive.
For high-volume exports, use maxItems to control spend.
The final platform pricing is shown on the Apify actor page before you start a run.
Input options
firmName searches FDA registration firm names and owner/operator firm names.
feiNumber finds a specific FDA Facility Establishment Identifier.
registrationNumber finds a specific device establishment registration.
countryCode filters by ISO country code such as US, DE, or CN.
stateCode filters US establishments by state.
productCode filters by FDA medical device product code.
ownerOperator searches the owner/operator firm name.
rawQuery lets advanced users provide openFDA search syntax directly.
maxItems limits saved dataset rows.
Example input: company search
{"firmName": "Medtronic","maxItems": 100}
Example input: US product-code search
{"countryCode": "US","productCode": "MNI","maxItems": 250}
Example input: exact registration lookup
{"registrationNumber": "1030489","maxItems": 25}
Example input: raw openFDA query
{"rawQuery": "registration.iso_country_code:\"US\" AND products.product_code:\"MNI\"","maxItems": 100}
Output example
{"registrationNumber": "1030489","feiNumber": "1000477302","firmName": "MEDTRONIC SOFAMOR DANEK USA, INC.","ownerOperatorName": "Medtronic, Inc.","countryCode": "US","stateCode": "TN","city": "Memphis","productCode": "MNI","deviceName": "Orthosis, Spinal Pedicle Fixation","deviceClass": "2","medicalSpecialty": "Orthopedic","registrationExpiryYear": "2026","kNumber": "K062447","pmaNumber": null}
How to run it
-
Open the actor on Apify.
-
Enter a firm name, FEI number, product code, geography filter, or raw openFDA query.
-
Set
maxItemsto the number of rows you need. -
Start the actor.
-
Download results as JSON, CSV, Excel, XML, or HTML from the dataset.
Search tips
Use firmName for broad company discovery.
Use registrationNumber or feiNumber for exact entity checks.
Use countryCode plus productCode for market mapping.
Use ownerOperator when a brand has many registered facilities.
Use rawQuery only if you already know openFDA search syntax.
Keep initial tests small, then increase maxItems after verifying the query.
Rate limits and pagination
The actor paginates openFDA responses with limit and skip.
If openFDA returns HTTP 429, the actor backs off and retries.
The actor stops when it reaches maxItems, when openFDA has no more results, or when openFDA skip limits are reached.
For recurring large exports, schedule smaller focused tasks instead of one very broad run.
Integrations
Send supplier records into a compliance warehouse.
Enrich CRM accounts with FDA registration identifiers.
Monitor a product code for new or changed registered establishments.
Export country-specific manufacturer lists for distributor due diligence.
Join output with adverse-event or recall datasets in downstream analytics.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/fda-device-registration-scraper').call({firmName: 'Medtronic',maxItems: 100,});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/fda-device-registration-scraper').call(run_input={'firmName': 'Medtronic', 'maxItems': 100})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~fda-device-registration-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"firmName":"Medtronic","maxItems":100}'
MCP for Claude Code and Claude Desktop
You can call this actor through Apify MCP.
Use the actor-specific MCP URL so Claude sees the right tool:
https://mcp.apify.com/?tools=automation-lab/fda-device-registration-scraper
Add it in Claude Code:
$claude mcp add apify-fda-device-registrations https://mcp.apify.com/?tools=automation-lab/fda-device-registration-scraper
Or add this MCP server JSON configuration in Claude Desktop:
{"mcpServers": {"apify-fda-device-registrations": {"url": "https://mcp.apify.com/?tools=automation-lab/fda-device-registration-scraper"}}}
Example prompts:
-
"Find FDA device registrations for Medtronic and summarize the product codes."
-
"Export US establishments for product code MNI and group them by state."
-
"Check whether this supplier has an FDA FEI number and registered device products."
Data quality notes
The output reflects openFDA source data at run time.
FDA names are often uppercase and may use legal entity names.
Some records have multiple products, so one registration can produce multiple rows.
Some optional fields may be empty in the FDA source.
Use rawRecord when you need the unmodified source object.
Legality
This actor uses public FDA data served by the official openFDA API.
You are responsible for using the data in compliance with applicable laws, FDA terms, openFDA API rules, and your internal regulatory policies.
Do not treat this dataset as legal advice or a substitute for regulatory review.
Troubleshooting
If you get no results, try a shorter firm name or an exact FEI number.
If a raw query fails, test the same syntax in openFDA documentation and escape quotes correctly in JSON.
If a run stops before your desired volume, narrow the query or reduce maxItems to stay within openFDA pagination constraints.
If product data looks duplicated, remember the actor emits one row per registration/product combination.
FAQ
Does this actor require an FDA API key?
No. The actor works with public openFDA access for normal queries.
Does it scrape FDA web pages?
No. It calls the official openFDA JSON API.
Can I search by product code?
Yes. Use productCode, for example MNI.
Can I search by FEI number?
Yes. Use feiNumber for exact FEI lookups.
Why are there multiple rows for the same registration?
One FDA registration can list multiple products. The actor creates separate rows so each product code is easy to filter and export.
Related scrapers
-
FDA MAUDE Adverse Event Reports Scraper: https://apify.com/automation-lab/fda-maude-adverse-event-reports-scraper
-
Use this actor for establishment registration and product listings.
-
Use adverse-event or recall actors when your workflow is safety surveillance rather than establishment qualification.
Changelog
Initial version: openFDA device registration listing export with structured and raw query inputs.
Support
If a query does not return the FDA records you expect, include your input JSON, expected firm/product, and a sample FDA record in the issue report.
More examples
Search for a non-US supplier by country code.
Search a parent owner/operator across multiple facilities.
Build a scheduled task for a product code and compare exports month over month.
Use the dataset API to pull fresh rows into Snowflake, BigQuery, Airtable, or a compliance dashboard.
Field reference
registrationNumber is the FDA registration number.
feiNumber is the Facility Establishment Identifier.
firmName is the registered establishment name.
ownerOperatorName is the owner/operator firm reported by FDA.
statusCode is the FDA status code from the source.
registrationExpiryYear is the registration expiry year.
productCode is the FDA product code.
deviceClass is the openFDA device class where available.
rawRecord contains the original FDA JSON record for audits.