openFDA Device Classification Scraper
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
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?
| Field | Description |
|---|---|
productCode | FDA product code |
deviceName | Device classification name |
medicalSpecialty | FDA specialty code |
medicalSpecialtyDescription | Specialty description |
deviceClass | FDA class value |
regulationNumber | CFR regulation number |
gmpExemptFlag | GMP exemption flag |
reviewPanel | Review panel code |
summaryMalfunctionReporting | Summary malfunction reporting status |
implantFlag | Whether the class is implant-related |
lifeSustainSupportFlag | Life-sustain/support flag |
openfdaKNumbers | Related 510(k) numbers when openFDA exposes them |
sourceApiUrl | Exact API URL used for the page |
scrapedAt | Extraction timestamp |
Input options
You can combine filters. Different filter groups are joined with AND logic.
productCodesβ product code lookup such asJMG.keywordsβ free-text search across device name, definition, specialty, and regulation number.deviceNamesβ device-name phrase search.medicalSpecialtiesβ specialty code or text, such asIMorImmunology.regulationNumbersβ CFR values such as866.5340.deviceClassesβ class values like1,2,3, orU.reviewPanelsβ panel codes such asCH,CV, orOR.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
- Open the actor on Apify.
- Add product codes, keywords, specialties, or regulation filters.
- Set
maxItemsto the number of records you need. - Start the run.
- 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
maxItemslow while testing a new query. - Leave
updatedSinceempty 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 ApifyClientclient = 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.
updatedSinceonly 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.
Is it legal to scrape openFDA?
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.
Related scrapers
Automation Lab provides other data actors that may complement this workflow:
- https://apify.com/automation-lab/website-contact-finder
- https://apify.com/automation-lab/booking-scraper
- https://apify.com/automation-lab/google-maps-lead-finder
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.