FDA Registered Medical Device Establishments Scraper avatar

FDA Registered Medical Device Establishments Scraper

Pricing

from $15.60 / 1,000 results

Go to Apify Store
FDA Registered Medical Device Establishments Scraper

FDA Registered Medical Device Establishments Scraper

Directory of FDA-registered medical device establishments: manufacturers, importers, sterilizers and contract makers with owner/operator, US agent contact (name, phone, email), full address, FEI/registration number and listed products. Export to JSON, CSV or Excel.

Pricing

from $15.60 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

FDA Registered Medical Device Establishments Scraper

FDA Registered Medical Device Establishments Scraper

Here is one real result, with every field the actor returns (the zip and postalCode values are the source's own -- placeholder for a missing value):

{
"establishmentName": "BOSTON SCIENTIFIC CORPORATION",
"registrationNumber": "3004859241",
"feiNumber": "3004859241",
"establishmentTypes": ["Develop Specifications But Do Not Manufacture At This Facility"],
"statusCode": "1",
"registrationExpiryYear": "2026",
"initialImporter": false,
"street": "302 Parkway, Global Park",
"city": "La Aurora Heredia",
"state": null,
"zip": "--",
"postalCode": "--",
"country": "CR",
"ownerOperatorFirm": "Boston Scientific Corporation",
"ownerOperatorNumber": "9912058",
"officialCorrespondent": null,
"officialCorrespondentPhone": null,
"ownerOperatorStreet": "300 Boston Scientific Way",
"ownerOperatorCity": "Marlborough",
"ownerOperatorState": "MA",
"ownerOperatorCountry": "US",
"ownerOperatorPostalCode": "01752",
"usAgentName": "Aaron Dunbar",
"usAgentBusiness": "Boston Scientific Corporation",
"usAgentEmail": "aaron.dunbar@bsci.com",
"usAgentPhone": "6513961414",
"usAgentFax": null,
"usAgentStreet": "300 Boston Scientific Way",
"usAgentCity": "Marlborough",
"usAgentState": "MA",
"usAgentCountry": "US",
"usAgentZip": "01752",
"productCount": 1,
"productCodes": ["IWP"],
"deviceNames": ["Radiographic Protective Glove"],
"deviceClasses": ["1"],
"medicalSpecialties": ["Radiology"],
"products": [
{
"productCode": "IWP",
"deviceName": "Radiographic Protective Glove",
"deviceClass": "1",
"medicalSpecialty": "Radiology",
"regulationNumber": "892.6500",
"createdDate": "1992-07-22",
"exempt": null
}
],
"kNumber": null,
"pmaNumber": null,
"proprietaryNames": null,
"observedAt": "2026-08-14T21:10:27.287Z",
"error": null
}

The most complete FDA medical device establishment scraper available. It returns every field the openFDA device registration database exposes for each establishment, including the owner/operator, official correspondent and US agent contact details, plus the full list of registered products with codes, device class and regulation, and gives you name, product code, device, class, country and state filters to target exactly the establishments you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor calls the openFDA device registration and listing dataset, applies the filters you pass as input, paginates through the matching establishments, and writes one normalized record per establishment to the run's dataset. Each record carries the facility identity and address, the owner/operator firm, the official correspondent and US agent contact block, and a products array of every device the establishment lists with its product code, device class, medical specialty, and regulation number. Missing source values are returned as null (the source's own -- placeholder is left as-is where FDA uses it).

Data covers FDA-registered medical device establishments worldwide, including foreign facilities that export to the United States.

Quickstart

Open the actor, paste this into the input, and press Run. It returns 5 Boston Scientific establishments.

{
"companyName": "Boston Scientific",
"maxRecords": 5,
"establishmentType": "",
"deviceClass": "",
"initialImporterOnly": false
}

Leave every filter empty to pull the most recent registrations. All filters are optional and combine with logical AND.

Input reference

FieldTypeRequiredDefaultDescription
maxRecordsintegerno10Maximum number of establishments to collect. The source paginates up to 26000 records per query; for larger pulls narrow by country, state, or product code.
searchQuerystringno(empty)A simple keyword (matched to the establishment name), or a raw openFDA expression such as registration.owner_operator.firm_name:"Medtronic" or products.openfda.device_name:catheter. Leave empty for the most recent registrations.
companyNamestringno(empty)Filter by the establishment name or its owner/operator firm name (matches either), for example Boston Scientific.
productCodestringno(empty)Three-letter FDA product code of a listed device, for example LLZ. Comma-separate for multiple.
deviceNamestringno(empty)Keyword matched against the FDA device name of the establishment's products, for example catheter, stent, ventilator.
establishmentTypeenumno(any)Limit to establishments performing a given operation, for example Manufacture Medical Device, Contract Manufacturer, Specification Developer, Contract Sterilizer.
deviceClassenumno(any)Limit to establishments listing at least one device of this FDA risk class: 1 (low), 2 (moderate), 3 (high).
countrystringno(empty)Two-letter ISO country code of the establishment, for example US, DE, CN, JP.
statestringno(empty)Two-letter US state code of the establishment, for example CA, MA, MN.
initialImporterOnlybooleannofalseOnly return establishments flagged as initial importers of devices into the United States.
proxyConfigurationobjectno(none)Standard Apify proxy configuration. Not required; the source is a keyless public API.

Output reference

One dataset item per establishment. Types: string, integer, boolean, string[], object[], or null when the source value is absent.

FieldTypeDescription
establishmentNamestringRegistered establishment name.
registrationNumberstringFDA registration number.
feiNumberstringFDA Establishment Identifier (FEI).
establishmentTypesstring[]Operations the establishment performs.
statusCodestringFDA registration status code.
registrationExpiryYearstringYear the current registration expires.
initialImporterbooleantrue when flagged as an initial importer.
streetstringEstablishment street address.
citystringEstablishment city.
statestringEstablishment state, or null.
zipstringEstablishment ZIP, or the source -- placeholder.
postalCodestringEstablishment postal code, or the source -- placeholder.
countrystringEstablishment ISO country code.
ownerOperatorFirmstringOwner/operator firm name.
ownerOperatorNumberstringOwner/operator number.
officialCorrespondentstringOfficial correspondent name, or null.
officialCorrespondentPhonestringOfficial correspondent phone, or null.
ownerOperatorStreetstringOwner/operator street address.
ownerOperatorCitystringOwner/operator city.
ownerOperatorStatestringOwner/operator state.
ownerOperatorCountrystringOwner/operator ISO country code.
ownerOperatorPostalCodestringOwner/operator postal code.
usAgentNamestringUS agent name, or null.
usAgentBusinessstringUS agent business name, or null.
usAgentEmailstringUS agent email, or null.
usAgentPhonestringUS agent phone, or null.
usAgentFaxstringUS agent fax, or null.
usAgentStreetstringUS agent street address.
usAgentCitystringUS agent city.
usAgentStatestringUS agent state.
usAgentCountrystringUS agent ISO country code.
usAgentZipstringUS agent ZIP.
productCountintegerNumber of products the establishment lists.
productCodesstring[]FDA product codes of listed devices.
deviceNamesstring[]FDA device names of listed devices.
deviceClassesstring[]FDA device classes of listed devices.
medicalSpecialtiesstring[]Medical specialties of listed devices.
productsobject[]Per-product detail: productCode, deviceName, deviceClass, medicalSpecialty, regulationNumber, createdDate, exempt.
kNumberstring510(k) clearance number when listed, else null.
pmaNumberstringPMA approval number when listed, else null.
proprietaryNamesstring[]Proprietary (brand) names when listed, else null.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"companyName":"Boston Scientific","maxRecords":5}):

{
"establishmentName": "BOSTON SCIENTIFIC CORPORATION",
"registrationNumber": "3004859241",
"feiNumber": "3004859241",
"establishmentTypes": ["Develop Specifications But Do Not Manufacture At This Facility"],
"statusCode": "1",
"registrationExpiryYear": "2026",
"initialImporter": false,
"city": "La Aurora Heredia",
"country": "CR",
"ownerOperatorFirm": "Boston Scientific Corporation",
"ownerOperatorCity": "Marlborough",
"ownerOperatorState": "MA",
"usAgentName": "Aaron Dunbar",
"usAgentEmail": "aaron.dunbar@bsci.com",
"usAgentPhone": "6513961414",
"productCount": 1,
"productCodes": ["IWP"],
"deviceNames": ["Radiographic Protective Glove"],
"deviceClasses": ["1"],
"medicalSpecialties": ["Radiology"],
"products": [
{ "productCode": "IWP", "deviceName": "Radiographic Protective Glove", "deviceClass": "1", "medicalSpecialty": "Radiology", "regulationNumber": "892.6500", "createdDate": "1992-07-22", "exempt": null }
],
"observedAt": "2026-08-14T21:10:27.287Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~openfda-device-establishments-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"deviceName":"catheter","country":"US","deviceClass":"2","maxRecords":50}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~openfda-device-establishments-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"productCode":"LLZ","maxRecords":500}'

Apify CLI:

apify call scrapers_lat/openfda-device-establishments-scraper \
--input '{"companyName":"Medtronic","state":"MN"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per establishment record returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxRecords.
  • Source pagination ceiling. openFDA allows up to 26000 records per query. For larger pulls, split the work with narrower filters (country, state, or product code).

FAQ and troubleshooting

A run returned 0 records. Why? The filter combination matched nothing in the source. Loosen filters (for example remove state or deviceClass), or confirm the company or product code. Zero-result runs are not charged.

Does this include foreign establishments? Yes. FDA registers foreign device establishments that export to the United States. Filter by country to target a specific one, and use initialImporterOnly for US initial importers.

How do I find establishments for a specific device? Use productCode for an exact FDA product code, or deviceName for a keyword match against the listed device names.

What are the -- values in zip and postalCode? That is the FDA source's own placeholder for a missing value. The actor leaves real source strings unchanged; genuinely absent values are null.

How do I reach the establishment? Each record carries the owner/operator address and the US agent contact block (usAgentName, usAgentEmail, usAgentPhone), when the FDA publishes them.

Is this an official FDA tool? No. This actor is independent and has no affiliation with the FDA or openFDA. It reads only data that is publicly available through the openFDA API. Use it in accordance with the openFDA terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the FDA or openFDA. Accesses only publicly available openFDA data. Use in accordance with the openFDA terms of service.