# FDA 510(k) Newly Cleared Medical Device Leads (`afkdigital/newapi25-fda-510k-device-clearances`) Actor

Find newly cleared FDA 510(k) medical devices, applicants, public business contacts, specialty, product code and class. Official FDA records with source links; $0.007 per unique clearance.

- **URL**: https://apify.com/afkdigital/newapi25-fda-510k-device-clearances.md
- **Developed by:** [AFK Digital](https://apify.com/afkdigital) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$7.00 / 1,000 unique fda 510(k) clearances

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## FDA 510(k) Newly Cleared Medical Device Go-To-Market Leads

**NEWAPI25** | `newapi25-fda-510k-device-clearances` | v0.1.0

Find recent *FDA substantially equivalent (SE)* 510(k) decisions in the official, public openFDA Device 510(k) Clearances dataset. Output one official **applicant/manufacturer-of-record** lead for each unique `k_number`, including publicly listed applicant correspondent and business mailing address when present. These are evidence-backed market-intelligence records, **not** verified purchasers, distributors, live sales channels or indications of actual product launch.

### Source, meaning and update cadence

- Official source: [openFDA Device 510(k) API](https://api.fda.gov/device/510k.json). The API dataset is refreshed **monthly** (the FDA's separate source/releasable 510(k) website may have another posting cadence).
- `decision_date` is the FDA's decision date, **not** the data ingestion date. `observed_at` is UTC when *this Actor* saw the record. The run summary also saves `apiLastUpdated` from the FDA response metadata.
- Cleared decisions are restricted to FDA `decision_code` in **SESE, SEKD, SESD, SESK, SESP, SESU**, optionally checked against a *Substantially Equivalent* decision description. Negative / pending / revoked / recall-like codes (including **SESR**) are excluded. **De Novo** IDs beginning with `DEN` are excluded. A received submission or a non-substantial-equivalence finding is **not** a clearance.
- 510(k) substantial equivalence **is not** PMA approval, a claim that a device is safe for every use, evidence of sales, evidence of distribution, or proof of market launch.
- `applicant_company` is the FDA applicant, not necessarily the final seller, marketer or distributor. The `contact_person` is the FDA-published applicant correspondent (when available), not a preverified sales contact.
- `device_class` uses the FDA's directly harmonized `openfda.device_class` if present. Missing classes trigger a verified `/device/classification.json` product-code lookup. If multiple contradictory classes exist for a product code or no matching class exists, it remains **null**. A current product-code classification is not necessarily the historical classification on the decision date.
- Specialty input filters the historical FDA `advisory_committee` panel. This can differ from today's `review_advisory_committee`; output prefers the FDA harmonized regulatory specialty when it exists. Country/state/business addresses reflect public FDA **applicant business** fields.

### Inputs

| Field | Meaning |
| --- | --- |
| `decisionDateFrom`, `decisionDateTo` | Inclusive ISO dates. Omitted = past 60 days to today's UTC date. |
| `medicalSpecialty` | FDA panel abbreviation, e.g. `CV` (cardiovascular), `RA` (radiology). |
| `productCode` | Three-letter FDA product code, e.g. `DRF` or `QAS`. |
| `deviceNameKeyword` | Phrase search on official device name. |
| `applicantCompany` | Phrase search on FDA applicant field. |
| `maxResults` | Hard limit on unique emitted `k_number` (default 10). |
| `maxCostUsd` | Input cost ceiling for per-result events at $0.007 (default $0.07). |
| `pageSize` / `maxApiRequests` | Operational limits (defaults 100/30). |
| `resume` | Resume from same-run checkpoint and dataset IDs (default true). |
| `fdaApiKey` | Optional encrypted input; alternatively set `OPENFDA_API_KEY` runtime env. |

Default input emits up to **10** results and finishes quickly in ordinary network conditions; no result is fabricated when none matches. Multiple broad filters require pagination and can take longer.

### Outputs

Each dataset row has exactly these 12 fields:
`k_number`, `device_name`, `applicant_company`, `contact_person`, `business_address`, `decision_date`, `decision_code`, `medical_specialty`, `device_class`, `product_code`, `source_url`, `observed_at`.

The default Apify Dataset is downloadable as **JSON** or **CSV** using the Dataset export UI or `GET /v2/datasets/:datasetId/items?format=json|csv`. A `NEWAPI25_RUN_SUMMARY` record in the run's default key-value store shows metadata and counters. Only 510(k) clearance rows are emitted; missing optional contact/class fields are `null`, never guessed.

### FDA API and responsible API access

- URL: `https://api.fda.gov/device/510k.json`. Maximum `limit` **1000** per request; maximum `skip` **25000**. This Actor rejects deeper offsets. For records beyond that bound, narrow decision date/product/specialty filters and rerun.
- openFDA currently documents **240 requests/minute and 1,000 requests/day/IP without a key**, or **240 requests/minute/key and 120,000 requests/day/key with a free key**. No proxy or key bypass is attempted. Programmatically throttled to ≤200 queries/minute, and each run also enforces `maxApiRequests`.
- Upstream timeout is 15 seconds per attempt, bounded to three attempts with exponential backoff for 429, 5xx and networking timeouts; respects bounded Retry-After seconds. All secrets stay in process memory (never logged or written to a dataset).
- A SHA-256 filter fingerprint, K-number set, page position and default-dataset reconstruction support restart of the same Actor run without duplicate leads. A different filter cannot reuse a populated run's checkpoint.
- Classification lookups are cached by product code and count toward the request cap.

### Pricing and costs

**Target Store price: USD $0.007 per unique default Dataset item** (1,000 = **$7**). Configure the Apify **pay-per-event** pricing in the Actor **Publishing → Monetization** section, using the synthetic `apify-default-dataset-item` event at $0.007; remove or set the `apify-actor-start` charge to $0 so no additional per-run amount is charged. Do **not** configure an extra custom result event: automatic default-dataset charging would then double charge.

Input `maxCostUsd` caps records based on $0.007 per item. The Apify UI max-total-charge cap may impose a stricter upper bound. Whether infrastructure usage is absorbed by the creator or separately charged must be checked on the listing price page; if separately passed on, API-event input limit does not bound that separate usage. At the publisher's advertised price, 80% of event revenue is shareable before Apify platform usage costs (i.e. $0.0056 per record before infrastructure expense), subject to Apify terms. For fast/cheap runs no proxy is needed.

### Local development and QA

```bash
cd /opt/NEWAPI/NEWAPI25
npm ci
npm test
npx apify-cli validate-schema
## Apify local CLI, or run an Actor on the platform:
## npx apify-cli run --purge
```

Live test examples (October 2026, confirm they still exist):

```json
{"decisionDateFrom":"2026-09-01","decisionDateTo":"2026-10-23","medicalSpecialty":"CV","maxResults":2,"maxCostUsd":0.014}
```

```json
{"decisionDateFrom":"2026-09-01","decisionDateTo":"2026-10-23","medicalSpecialty":"RA","maxResults":2,"maxCostUsd":0.014}
```

### Compliance and limitations

No enrichment from non-FDA, broker, personal/social, or historical hidden records is performed. User must verify the company and market status independently before outreach. Not for patient care, regulatory substantiation, or safety assessments. This is a monthly-updated regulatory signal, not a real-time market entry alert.

Official FDA documentation: [510(k) API](https://open.fda.gov/apis/device/510k/), [searchable fields](https://open.fda.gov/apis/device/510k/searchable-fields/), [API limits](https://open.fda.gov/apis/authentication/), [510(k) decision process](https://www.fda.gov/medical-devices/premarket-notification-510k/510k-submission-process).

Apify: [PPE monetization](https://docs.apify.com/actors/monetize), [pricing and costs](https://docs.apify.com/actors/publishing/monetize/pricing-and-costs).

# Actor input Schema

## `decisionDateFrom` (type: `string`):

YYYY-MM-DD. Empty means 60 days before run date.

## `decisionDateTo` (type: `string`):

YYYY-MM-DD. Empty means run date.

## `medicalSpecialty` (type: `string`):

Historical FDA advisory panel code; e.g. CV Cardiovascular or RA Radiology. Empty = all.

## `productCode` (type: `string`):

Three-letter FDA product code (e.g. DRF or QAS).

## `deviceNameKeyword` (type: `string`):

Phrase in the FDA device_name field.

## `applicantCompany` (type: `string`):

FDA applicant field; not necessarily the seller or distributor.

## `maxResults` (type: `integer`):

Hard cap on unique cleared records (1–5000).

## `maxCostUsd` (type: `number`):

Upper bound for billable unique results at $0.007 each; excludes any platform costs separately passed on, if applicable.

## `maxApiRequests` (type: `integer`):

Safety limit including optional classification lookups.

## `pageSize` (type: `integer`):

Maximum 1,000 per API request; 25,000 max skip.

## `resume` (type: `boolean`):

Use checkpoint and previously emitted dataset to avoid repeat results after an Actor restart.

## `fdaApiKey` (type: `string`):

Encrypted, optional; used for the higher daily FDA quota. Can alternatively use OPENFDA_API_KEY.

## Actor input object example

```json
{
  "medicalSpecialty": "",
  "productCode": "",
  "deviceNameKeyword": "",
  "applicantCompany": "",
  "maxResults": 10,
  "maxCostUsd": 0.07,
  "maxApiRequests": 30,
  "pageSize": 100,
  "resume": true
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("afkdigital/newapi25-fda-510k-device-clearances").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("afkdigital/newapi25-fda-510k-device-clearances").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call afkdigital/newapi25-fda-510k-device-clearances --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,afkdigital/newapi25-fda-510k-device-clearances"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pc1WmfPcrpc07dVvy/builds/5n4O76usrrM3NIDGM/openapi.json
