# FDA 510(k) Device Clearance Research (`ledgerstar/fda-device-clearances`) Actor

Corporate supplier research from FDA 510(k) substantial-equivalence decision records. A clearance is not described as FDA approval.

- **URL**: https://apify.com/ledgerstar/fda-device-clearances.md
- **Developed by:** [Ledger Star](https://apify.com/ledgerstar) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 fda research results

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) Device Clearance Research

Find corporate medtech records linked to FDA 510(k) substantial-equivalence decisions.

![FDA 510(k) corporate decision research overview](https://raw.githubusercontent.com/ledgerstar/assets/main/fda-device-clearances/cover-v1.png)

### What you get

- One structured row for each qualifying corporate 510(k) number.
- The decision date, FDA decision code, product code, and source link.
- Optional date, product-code, decision, state, company, and alert filters.

### What data you get

| Field | What it means |
|---|---|
| clearanceId | FDA 510(k) number. |
| businessName | Corporate applicant named in the source. |
| decisionDate | FDA decision date. |
| receivedDate | Date FDA received the submission, when available. |
| decisionCode | FDA's source decision code. |
| clearanceType | Source clearance type, when available. |
| productCode | FDA product code, when available. |
| advisoryCommittee | Source committee code, when available. |
| state | Applicant state code, when available. |
| countryCode | Applicant country code, when available. |
| recordVersion | Stable version derived from business decision fields. |
| status | `ok` for a mapped source record. |
| sourceRecordId | FDA 510(k) number used for source identity. |
| dedupeId | Versioned identifier used to avoid repeat delivery. |
| source | Name of the FDA dataset. |
| sourceUrl | Direct FDA API lookup for this 510(k) number. |
| retrievedAt | When this run fetched the source page. |
| scrapedAt | When this run mapped the result. |
| sourceUpdatedAt | FDA's dataset index date, not this decision's update date. |
| freshnessDays | Days between retrieval date and source index date. |

### Quick start

1. Enter a decision date range, product code, or company name.
2. Set maximum results and source requests for your budget.
3. Run the Actor and inspect the returned dataset and source links.

FDA returned a 20-row first-page sample for the default 30-day decision window from August 30 through September 29, 2026. The Actor saved 16 corporate records and excluded 4 rows that did not pass its conservative corporate-name filter. FDA index metadata reported 223 matches in that window and an index date of September 21, 2026. The scan was partial after one source page, so these records and charts are a sample, not the full window. At the listed $0.003 event price, the 16 saved results correspond to $0.048 in result events.

### Who uses it

- Medtech supplier-development teams monitoring competitors or adjacent product areas.
- Contract manufacturers building company lists for a product-code portfolio.
- Market researchers checking a decision's dates and basic source classification.

### Input

| Input | Use |
|---|---|
| dateFrom | Inclusive lower decision-date limit in real `YYYY-MM-DD` format. |
| dateTo | Inclusive upper decision-date limit in real `YYYY-MM-DD` format. |
| productCode | Exact three-character FDA product code. |
| decisionCode | Exact source decision-code filter. |
| state | Exact two-letter applicant state. |
| businessName | Bounded substring of a corporate applicant name. |
| newSince | Optional alert date or `lastRun` for technical change monitoring; `off` disables alerts. |
| alertLookbackDays | Alert lookback window from 1 to 30 days. |
| maxItems | Maximum delivered rows, 1 to 1,000; default 20. |
| maxRequests | Maximum FDA pages, 1 to 20; default 5. |

#### Tips for good input

- Good: `2026-01-01` as `dateFrom`. Bad: `01/01/26`, which is ambiguous.
- Good: `FED` as a product code. Bad: `FED, GEX`, because this input accepts one exact code.
- Good: `CA` as a state. Bad: `California`, because the source uses state codes.
- Good: `Medical` in the company substring. Bad: a person's name or contact details.

<details><summary>Advanced options</summary>

The source request count and delivered-row count are separate limits. A page can contain records that are excluded because they are not confidently corporate, or because they do not match the selected filters. FDA index pages are capped by the source API. The Actor reports a partial scan when it reaches a configured cap and resumes a frozen pending window for alert runs. Use a narrow date range and an exact product code when you need a focused list. The Actor sends only fixed FDA search clauses built from validated inputs; it does not accept arbitrary endpoints, source keys, or raw query strings. The default date window covers the most recent 30 days. You can set explicit dates for historical research.

</details>

### Sample output

![Example table of corporate 510(k) research fields](https://raw.githubusercontent.com/ledgerstar/assets/main/fda-device-clearances/table.png)

![Measured chart for FDA 510(k) source research](https://raw.githubusercontent.com/ledgerstar/assets/main/fda-device-clearances/chart.png)

The table and chart below use the actual cloud canary output. The table shows 8 of 16 saved corporate records; the chart counts country codes across all 16. Both are limited to the first page of the 30-day window and do not describe the full FDA index.

<details><summary>Full JSON example</summary>

```json
{
  "clearanceId": "K261859",
  "businessName": "Anhui JBH Medical Apparatus Co., Ltd.",
  "decisionDate": "2026-09-19",
  "receivedDate": "2026-06-04",
  "decisionCode": "SESE",
  "clearanceType": "Traditional",
  "productCode": "INI",
  "advisoryCommittee": "PM",
  "state": null,
  "countryCode": "CN",
  "recordVersion": "971efc364650c17e",
  "status": "ok",
  "sourceRecordId": "K261859",
  "dedupeId": "openfda:510k:K261859:971efc364650c17e",
  "source": "openFDA Device 510(k)",
  "sourceUrl": "https://api.fda.gov/device/510k.json?search=k_number%3A%22K261859%22&limit=1",
  "retrievedAt": "2026-09-29T21:33:50.637Z",
  "scrapedAt": "2026-09-29T21:33:50.637Z",
  "sourceUpdatedAt": "2026-09-21",
  "freshnessDays": 8
}
```

</details>

### Alert mode: only new records

Set `newSince` to a date or `lastRun` to ask for records whose decision dates fall in the alert window. Alert mode stores delivered version identifiers so scheduled runs can avoid charging the same record version again. The source is monthly, so runs between updates may return no records. The cursor keeps a pending bounded scan across migrations and alert runs. If FDA changes its index during a scan, the Actor stops rather than combining pages from different index versions. An interrupted process can still leave uncertainty at the boundary; this is not an exactly-once delivery guarantee. Omit `newSince` or set it to `off` for a repeatable snapshot without alert tracking.

### Pricing

Proposed price: **$0.003 per successfully delivered result.**

That equals **$3.00 per 1,000 results** when every result is delivered.

| Results | Cost |
|---:|---:|
| 100 | $0.30 |
| 1,000 | $3.00 |
| 10,000 | $30.00 |

These examples assume every requested record qualifies and is delivered. Empty searches, failed runs, and excluded rows are not successful result events. Platform configuration and charges should be checked on the Actor listing before use.

### Use it through the API

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("ledgerstar/fda-device-clearances").call(run_input={"productCode": "FED", "maxItems": 20})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

JavaScript:

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('ledgerstar/fda-device-clearances').call({ productCode: 'FED', maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Integrations

Send dataset rows to Google Sheets for review, schedule a run in Zapier or Make, or use Slack to notify a team when an alert-mode run delivers a new version. Apify API clients can start runs and retrieve datasets from your own systems. Keep your API token private and apply your organization's access controls to downstream copies.

### Data source and compliance

The source is the U.S. FDA's openFDA 510(k) endpoint. FDA describes these decisions in its 510(k) program as substantial-equivalence determinations. A 510(k) clearance is not described here as a device approval, evidence that the device is currently marketed, or a safety assessment. FDA's index may be incomplete or change. Verify important facts directly with FDA and the manufacturer. The Actor applies a conservative corporate-name filter and does not return people, contact information, street addresses, raw narratives, third-party documents, or licensed GMDN material. It is for business research, not clinical, purchasing, safety, or regulatory decisions. Check FDA terms and the source documentation for your intended use.

### FAQ

**Is it legal to use this data?**

The Actor uses FDA's public openFDA API. You are responsible for following the source terms, applicable law, and your own organization's policies.

**How often is the data updated?**

The 510(k) index is updated monthly according to the source research recorded for this Actor. Check `sourceUpdatedAt` on each run for the index date.

**How do I get only new records?**

Set `newSince` to an ISO date or `lastRun` and schedule runs. This is technical change monitoring, not a safety alert.

**Does a 510(k) clearance mean FDA approved the device?**

No. The source describes a substantial-equivalence decision. This Actor does not relabel it as FDA approval.

**Does the Actor show all FDA 510(k) decisions?**

No. Runs are bounded by date filters, request limits, and result limits. Corporate-name filtering excludes uncertain entities.

**Why did my search return no rows?**

Your exact product code, dates, state, and applicant filters may not match a corporate record in the selected index window.

**Can I search several product codes at once?**

No. Run one exact three-character product code at a time to keep each result set clear.

**Are results updated when an old record changes?**

Changes to mapped business decision fields create a new record version. Changes to fields outside the output contract are not versioned.

**Can I use this for clinical or safety decisions?**

No. The source may be incomplete or unvalidated, and this product is for business research.

**What does `freshnessDays` measure?**

It is the number of calendar days between retrieval and the source index date, not the age of the individual decision.

**Why do rows omit contact and address fields?**

The output is limited to selected business and decision fields and excludes personal and contact data.

**What happens when the source changes during a scan?**

The Actor stops the pending scan so it does not silently combine pages from different source-index versions.

### More from Ledgerstar

Related research Actors include FDA Drug Application Decisions, FDA PMA Supplement Decisions, and FDA Enforcement Research. Check each listing for its current availability and source scope.

### Support

Support: open an issue on this Actor's Issues tab in Apify Console.

# Changelog

This Actor's version history is a separate document: https://apify.com/ledgerstar/fda-device-clearances/changelog.md

# Actor input Schema

## `dateFrom` (type: `string`):

Decision date from

## `dateTo` (type: `string`):

Decision date to

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

Three-character product code

## `decisionCode` (type: `string`):

Decision code

## `state` (type: `string`):

Applicant state

## `businessName` (type: `string`):

Applicant contains

## `newSince` (type: `string`):

Alert: changed since Use `off` or leave blank to disable alert state.

## `alertLookbackDays` (type: `integer`):

Alert lookback days

## `maxItems` (type: `integer`):

Maximum results

## `maxRequests` (type: `integer`):

Maximum source requests

## Actor input object example

```json
{
  "alertLookbackDays": 7,
  "maxItems": 20,
  "maxRequests": 5
}
```

# 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("ledgerstar/fda-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("ledgerstar/fda-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 ledgerstar/fda-device-clearances --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ledgerstar/fda-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/sM3YDTtYfG3R6yCcq/builds/0SoEwTpHfU87u9PSv/openapi.json
