FDA 510(k) Clearances Scraper — Device Approvals avatar

FDA 510(k) Clearances Scraper — Device Approvals

Pricing

Pay per event

Go to Apify Store
FDA 510(k) Clearances Scraper — Device Approvals

FDA 510(k) Clearances Scraper — Device Approvals

Export openFDA 510(k) premarket device clearance records — applicant, device name, decision date and code, product code, advisory committee, device class and regulation number — filterable by applicant, device, product code, committee, class or decision-date range, as clean JSON, CSV or Excel.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Share


🎯 What this scrapes

openFDA publishes every 510(k) premarket clearance the agency has granted — the fastest public record of which device just got cleared to market and who cleared it. The raw API hides a 25 000-record pagination ceiling, an intermittent cold-query 500, and a sparse openfda enrichment block that breaks naive parsers the first time a record ships without it. This Actor normalises all of that into one dependable row shape, so a market-entry or competitive-intelligence watchlist becomes a spreadsheet instead of a scripting project.

🔥 What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes on every request.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx, including openFDA's documented cold-query timeouts — up to 5 attempts per page.
  • 🧱 Stops cleanly at openFDA's pagination ceiling instead of looping on a 400, and fails loud (not silently empty) if the endpoint goes down for 3 consecutive pages.
  • 🧊 Per-record fault isolation — one malformed record never takes down the run; we skip it, log it, and keep paging.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, stable k_number identifiers, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

💡 Use cases

  • Track which devices a competitor just cleared to market, and how fast their submissions move through FDA review.
  • Build a market-entry brief on every 510(k) clearance for a product code before entering that device category.
  • Feed a due-diligence or investment model with clearance velocity by applicant, advisory committee or device class.
  • Monitor a specific device class or committee for new clearances on a recurring schedule.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
applicantstringno'Medtronic'Filter: applicant/company name that filed the 510(k). Matches openFDA's applicant field.
deviceNamestringno'Cardiac Monitor'Filter: device name. Matches openFDA's device_name field.
productCodestringno'DXH'Filter: FDA product code. Matches openFDA's product_code field.
advisoryCommitteestringno'Cardiovascular'Filter: advisory committee description. Matches openFDA's advisory_committee_description field.
deviceClassstringno'2'Filter: FDA device class. Matches openFDA's openfda.device_class field.
decisionDateFromstringno'20240101'Only include clearances decided on or after this date, as YYYYMMDD. Leave empty for no floor.
decisionDateTostringno'20241231'Only include clearances decided on or before this date, as YYYYMMDD. Leave empty for no ceiling.
searchQuerystringno''Raw openFDA search expression, ANDed with the structured filters above, e.g. decision_code:"SESE". Leave…
maxResultsintegerno100Stop after this many records. Each record is one billed result row.
proxyConfigurationobjectno{'useApifyProxy': False}openFDA is a public government API and does not need a proxy. Leave this off unless your account requires egress…

Example input

{
"deviceClass": "2",
"maxResults": 3,
"proxyConfiguration": {
"useApifyProxy": false
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
k_numberstringopenFDA 510(k) submission identifier, e.g. K243021.
applicantstringApplicant/company that filed the 510(k).
contactstringNamed contact on the submission.
addressstringApplicant address, built from address, city, state, zip and country.
device_namestringDevice name as submitted.
decision_codestringFDA decision code, e.g. SESE.
decision_datestringDate FDA decided the submission (YYYY-MM-DD).
decision_descriptionstringHuman-readable decision, e.g. Substantially Equivalent.
product_codestringFDA product code.
advisory_committeestringAdvisory committee short code.
advisory_committee_descriptionstringAdvisory committee full description, e.g. Cardiovascular.
clearance_typestringClearance pathway, e.g. Traditional.
date_receivedstringDate FDA received the submission.
expedited_review_flagstringWhether the submission got expedited review (Y/N).
statement_or_summarystringWhether a summary or safety/effectiveness statement was filed.
device_classstringFDA device class — 1, 2 or 3.
medical_specialty_descriptionstringMedical specialty area, e.g. Cardiovascular.
regulation_numberstringCFR regulation number governing the device, e.g. 870.2300.

Example output

{
"k_number": "K243021",
"applicant": "ACME MEDICAL DEVICES INC.",
"contact": "JANE DOE",
"address": "123 MAIN ST, SPRINGFIELD, IL, US",
"device_name": "ACME CARDIAC MONITOR",
"decision_code": "SESE",
"decision_date": "2024-11-15",
"decision_description": "Substantially Equivalent",
"product_code": "DXH",
"advisory_committee": "CV",
"advisory_committee_description": "Cardiovascular",
"clearance_type": "Traditional",
"date_received": "2024-08-01",
"expedited_review_flag": "N",
"statement_or_summary": "Summary",
"device_class": "2",
"medical_specialty_description": "Cardiovascular",
"regulation_number": "870.2300"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.05One-off warm-up charge per run
result$0.002Per dataset item

Example: 1 000 results at the rates above ≈ $2.05. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • openFDA caps pagination at 25 000 records per query on this endpoint — narrow the search or the decision-date range to go deeper.
  • Filter values aren't escaped for embedded double-quote characters — avoid quotes inside applicant, device name, or committee filters.
  • Date fields are passed through in FDA's native string form rather than being reformatted.

❓ FAQ

Do I need an API key?

No. openFDA serves 510(k) data keylessly; the Actor stays inside the anonymous rate limit.

What's the difference between this and an FDA recalls Actor?

This Actor covers premarket 510(k) clearances — devices getting approved to market. A recalls Actor covers enforcement actions after the fact. They're separate openFDA endpoints with separate row shapes.

Why is there a 25 000 record ceiling?

openFDA's skip parameter refuses to page past 25 000 on this endpoint. The Actor stops cleanly at that boundary and logs it rather than looping or crashing.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.