openFDA Device Classification Scraper avatar

openFDA Device Classification Scraper

Pricing

Pay per event

Go to Apify Store
openFDA Device Classification Scraper

openFDA Device Classification Scraper

Extract FDA medical device classification records by product code, specialty, class, panel, and regulation number from openFDA.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Extract FDA medical device classification records from the public openFDA Device Classification API.

Use this actor to look up product codes, device names, medical specialties, device classes, review panels, regulation numbers, GMP exemptions, implant flags, life-support flags, 510(k) cross references, and source API URLs in a structured Apify dataset.

What does openFDA Device Classification Scraper do?

openFDA Device Classification Scraper turns the FDA device classification endpoint into a repeatable Apify workflow.

It queries device/classification.json, paginates through matching records, normalizes field names, and saves each classification record as one dataset item.

You can run a small product-code lookup or export hundreds of records for compliance analysis.

Who is it for?

  • πŸ§ͺ Regulatory affairs teams checking product codes and class metadata before submissions.
  • πŸ₯ Medical device companies monitoring device categories, panels, and regulation numbers.
  • πŸ“Š Market intelligence analysts mapping product classes and specialty areas.
  • πŸ”Ž Compliance vendors enriching device registries and internal product databases.
  • πŸ€– Data engineers who need openFDA classification data in JSON, CSV, Excel, BigQuery, or an API pipeline.

Why use this actor?

The openFDA API is public, but production teams often need a repeatable extraction job with input validation, stable field names, Apify storage, API access, and charge-aware run limits.

This actor gives you a clean dataset without writing pagination or normalization code.

Data source

The actor uses the public openFDA endpoint:

https://api.fda.gov/device/classification.json

No login, cookie, or API key is required for normal use.

What data can I extract?

FieldDescription
productCodeFDA product code
deviceNameDevice classification name
medicalSpecialtyFDA specialty code
medicalSpecialtyDescriptionSpecialty description
deviceClassFDA class value
regulationNumberCFR regulation number
gmpExemptFlagGMP exemption flag
reviewPanelReview panel code
summaryMalfunctionReportingSummary malfunction reporting status
implantFlagWhether the class is implant-related
lifeSustainSupportFlagLife-sustain/support flag
openfdaKNumbersRelated 510(k) numbers when openFDA exposes them
sourceApiUrlExact API URL used for the page
scrapedAtExtraction timestamp

Input options

You can combine filters. Different filter groups are joined with AND logic.

  • productCodes β€” product code lookup such as JMG.
  • keywords β€” free-text search across device name, definition, specialty, and regulation number.
  • deviceNames β€” device-name phrase search.
  • medicalSpecialties β€” specialty code or text, such as IM or Immunology.
  • regulationNumbers β€” CFR values such as 866.5340.
  • deviceClasses β€” class values like 1, 2, 3, or U.
  • reviewPanels β€” panel codes such as CH, CV, or OR.
  • updatedSince β€” best-effort date filter for records that expose date fields.
  • maxItems β€” maximum records to save.
  • includeOpenFda β€” include the nested raw openFDA cross-reference object.

Example input: product code lookup

{
"productCodes": ["JMG"],
"maxItems": 25,
"includeOpenFda": true
}

Example input: specialty research

{
"medicalSpecialties": ["Immunology"],
"deviceClasses": ["2"],
"maxItems": 100
}

Example input: regulation number monitoring

{
"regulationNumbers": ["866.5340"],
"maxItems": 50
}

Example output

{
"productCode": "JMG",
"deviceName": "Radioimmunoassay (Two-Site Solid Phase), Ferritin",
"medicalSpecialty": "IM",
"medicalSpecialtyDescription": "Immunology",
"deviceClass": "2",
"regulationNumber": "866.5340",
"gmpExemptFlag": "N",
"reviewPanel": "CH",
"summaryMalfunctionReporting": "Eligible",
"implantFlag": "N",
"lifeSustainSupportFlag": "N",
"openfdaKNumbers": ["K963498"],
"sourceApiUrl": "https://api.fda.gov/device/classification.json?...",
"scrapedAt": "2026-07-01T00:00:00.000Z"
}

How much does it cost to scrape openFDA device classification records?

This actor uses pay-per-event pricing.

  • A small one-time start event is charged per run.
  • A result event is charged for each classification record saved.
  • The default prefill is intentionally small so first runs stay inexpensive.

Final tier prices are calculated from cloud run costs before publication and are displayed on the Apify pricing panel.

How to run it on Apify

  1. Open the actor on Apify.
  2. Add product codes, keywords, specialties, or regulation filters.
  3. Set maxItems to the number of records you need.
  4. Start the run.
  5. Download results as JSON, CSV, Excel, XML, RSS, or HTML table.

Tips for better results

  • Use product codes for exact lookups.
  • Use regulation numbers for CFR-specific research.
  • Use specialty descriptions for broader market mapping.
  • Keep maxItems low while testing a new query.
  • Leave updatedSince empty unless you know the endpoint exposes comparable date fields for your query.

Integrations

You can connect results to:

  • Google Sheets for compliance review queues.
  • BigQuery or Snowflake for portfolio analysis.
  • Internal device master data systems.
  • CRM enrichment workflows for medtech market intelligence.
  • Monitoring jobs that compare output between scheduled runs.

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/openfda-device-classification-scraper').call({
productCodes: ['JMG'],
maxItems: 25,
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/openfda-device-classification-scraper').call(run_input={
'productCodes': ['JMG'],
'maxItems': 25,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~openfda-device-classification-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"productCodes":["JMG"],"maxItems":25}'

MCP usage

Use Apify MCP to call this actor from Claude Desktop, Claude Code, or any MCP-compatible client.

MCP tool URL:

https://mcp.apify.com/?tools=automation-lab/openfda-device-classification-scraper

Claude Code setup:

claude mcp add apify-openfda-device-classification \
https://mcp.apify.com/?tools=automation-lab/openfda-device-classification-scraper

Claude Desktop JSON config:

{
"mcpServers": {
"apify-openfda-device-classification": {
"url": "https://mcp.apify.com/?tools=automation-lab/openfda-device-classification-scraper"
}
}
}

Example prompts:

  • β€œLook up FDA classification data for product code JMG.”
  • β€œFind class 2 immunology device classifications and return the regulation numbers.”
  • β€œExport openFDA classification records for regulation 866.5340.”

Scheduling and monitoring

Schedule the actor weekly or monthly to capture current openFDA classification snapshots.

Compare datasets between runs to detect new or changed records in your downstream system.

Data freshness

The actor returns data from openFDA at run time.

openFDA aggregates FDA source data and may include disclaimers or lag relative to FDA source systems.

Always verify regulatory decisions against official FDA records.

Limitations

  • The source endpoint can apply public API rate limits.
  • Some records have empty optional fields.
  • updatedSince only works for records that expose comparable dates.
  • The actor does not replace regulatory advice.

Legality

The actor accesses a public FDA/openFDA API intended for data access.

You should still use the data responsibly, respect source terms, and verify critical regulatory interpretations with official FDA sources.

Yes, this actor queries a public openFDA API endpoint rather than private pages or logged-in content.

Users remain responsible for how they use exported regulatory data.

Automation Lab provides other data actors that may complement this workflow:

Troubleshooting: no records returned

Check whether your filter combination is too narrow.

Try one product code or one keyword first, then add filters gradually.

Troubleshooting: updatedSince returns zero records

Most openFDA classification records do not expose update timestamps.

If you set updatedSince, the actor only keeps records with comparable date fields, so zero results can be expected.

FAQ

Can I export all device classifications?

Yes. Leave filters empty and set maxItems to the number of records you want.

Do I need an FDA API key?

No. This actor uses the public endpoint without an API key.

Does the actor use a browser?

No. It is API-only and lightweight.

Can I monitor product codes over time?

Yes. Schedule repeated runs and compare product-code rows in your downstream system.

Can I use the output for regulatory submissions?

Use the output as workflow data and verify official regulatory conclusions against FDA source records.

Changelog

  • Initial version: openFDA classification search, pagination, normalized output, and source URL tracking.