# ClinicalTrials.gov Scraper: New & Updated Trials Feed (`appropriate_songbird/clinical-trials-tracker`) Actor

Scrape ClinicalTrials.gov: newly registered or recently updated clinical trials by condition, drug, sponsor, phase, status and country. Sponsor type, enrollment, dates, sites, results flag. Only-new alerts. No API key. From $0.002 per study.

- **URL**: https://apify.com/appropriate_songbird/clinical-trials-tracker.md
- **Developed by:** [Puneet](https://apify.com/appropriate_songbird) (community)
- **Categories:** Business, Other, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## ClinicalTrials.gov Scraper: New & Updated Clinical Trials by Condition, Sponsor, Drug

Know which clinical trials were just registered, changed status or posted results, without refreshing a registry website. This Actor queries the public US clinical study registry and returns a clean, flat feed: sponsor, phase, status, conditions, interventions, enrollment, key dates, countries and a results flag. Filter by disease, drug, sponsor, phase, status, sponsor type and country. No API key, no login.

### Who uses it

- **Biotech and pharma BD / competitive intelligence:** watch rival pipelines, new Phase 2/3 starts in your indication, sponsor activity.
- **CROs and site networks:** find newly registered studies in your therapeutic area and countries.
- **Investors and analysts:** track trial starts, terminations, completion-date changes and fresh results for a portfolio of companies or drugs.
- **Medical communications, journalists, researchers:** schedule a weekly digest of what is new in a field.

### What you get

One item per study: `nctId`, `url`, `briefTitle`, `officialTitle`, `leadSponsor`, `leadSponsorClass`, `collaborators`, `status`, `whyStopped`, `studyType`, `phases`, `allocation`, `conditions`, `keywords`, `interventions`, `primaryOutcomes`, `enrollment`, `startDate`, `primaryCompletionDate`, `completionDate`, `firstPostedDate`, `lastUpdatePostedDate`, `hasResults`, `resultsFirstPostedDate`, `sex`, `minimumAge`, `maximumAge`, `healthyVolunteers`, `countries`, `siteCount`. Optional: `sites` (facility, city, state, country) and `briefSummary`.

Sample (shortened):

```json
{"nctId":"NCT06192108","leadSponsor":"Eli Lilly and Company","leadSponsorClass":"INDUSTRY","status":"COMPLETED","phases":["PHASE3"],"conditions":["Type 2 Diabetes"],"interventions":[{"type":"DRUG","name":"Orforglipron"}],"enrollment":962,"hasResults":true,"lastUpdatePostedDate":"2026-10-16","countries":["China","Germany","Mexico","Poland","Taiwan","United States"]}
```

### Input

| Field | Meaning |
|---|---|
| mode | `newlyRegistered` (first posted in the window) or `recentlyUpdated` (record changed in the window) |
| lookbackDays | Window size, 1 to 365 days |
| conditions, interventions, sponsors, keywords | Match-any lists (diseases, drugs, organisations, free text) |
| phases, statuses, studyTypes, sponsorClasses | Pick lists, empty = all |
| countries | Countries with a study site |
| onlyWithResults | Only studies with posted results |
| includeSummary, includeSites | Opt-in extras |
| onlyNewSinceLastRun | Delta mode: only studies you have not received yet (in `recentlyUpdated` mode, each new update of a study counts as new) |
| maxResults | Cap per run (max 5000) |

Schedule it weekly or daily with delta mode on and you get an alert feed for your market.

### Quick start

Press **Start** with the prefilled input (diabetes studies posted in the last 7 days, up to 200 results). You get a table of fresh trials in seconds. Then add a sponsor (for example Pfizer), a drug, or a phase, and turn on **Only new since my last run** to schedule it weekly.

### How much does it cost?

Pay per event: $0.005 per run plus $0.002 per delivered study, which is cheaper per record than the other ClinicalTrials.gov scrapers on the Store. Set a maximum cost per run if you like. Runs that find nothing new cost only the start fee.

| Run | Studies | Cost |
|---|---|---|
| Weekly alert for one disease, new only | ~15 | about $0.035 |
| Monthly sweep of one sponsor's pipeline | 100 | about $0.205 |
| Backfill of all new Phase 3 studies in a year | 2,000 | about $4.005 |

### FAQ

**Does it need an API key or login?** No. It reads the registry's public API.

**Can I track a competitor's pipeline?** Yes: put the company in Sponsors, choose Recently updated, and run it weekly with delta mode. Every status change, new date or posted result shows up as a new row.

**Does it return investigator or contact details?** No. By design only study-level and organisation data are output.

**How is this different from the registry website's download?** It is filtered, flat, scheduled and delta-aware: you get only what changed since your last run, as JSON, CSV or Excel, or straight into your tools through the Apify API, Make, Zapier or Google Sheets.

**Can I use the data for medical decisions?** No. It is market intelligence, not medical advice.

**Related Actors by the same author:** [Private Offerings Form D feed](https://apify.com/appropriate_songbird/private-offerings-form-d-feed) for who is raising money, and [Federal Contract Awards Tracker](https://apify.com/appropriate_songbird/federal-contract-awards-tracker) for who wins government contracts.

### Privacy and good to know

- **No personal contact data.** Study contacts, investigators and their phone numbers or emails are never requested or output. Individual (non-organisation) sponsors are withheld. Summary text, when you opt in, has emails and phone numbers removed.
- Records are sponsor-reported and may be incomplete or out of date. This is a market-intelligence tool: **not medical advice and not a way to find or enrol in treatment.**
- The Actor stores nothing about you except the list of study IDs already delivered, in your own account, for delta mode.
- Metadata only: no results tables and no protocol documents. Some registry text may carry third-party copyright, so summaries are opt-in and meant for analysis, not republishing.
- Polite by design: one request at a time, at least 1.5 seconds apart, retries with backoff.
- **Source and attribution:** data come from the public registry run by the U.S. National Library of Medicine (free to reuse with source credit). Each item carries the source credit, the processing date and a note that fields were selected and personal contact data withheld.
- Independent tool, not affiliated with or endorsed by any government agency.

# Actor input Schema

## `mode` (type: `string`):

Newly registered = first posted in the window. Recently updated = any study whose record changed in the window (status changes, new results, new dates).

## `lookbackDays` (type: `integer`):

Window size, counted back from today (UTC).

## `conditions` (type: `array`):

Match any, e.g. type 2 diabetes, glioblastoma. Empty = no condition filter.

## `interventions` (type: `array`):

Match any, e.g. semaglutide, CAR-T. Empty = no filter.

## `sponsors` (type: `array`):

Lead sponsor or collaborator organisation names, match any, e.g. Pfizer, Novartis. Empty = no filter.

## `keywords` (type: `array`):

Free-text terms searched across the study record. Empty = no filter.

## `phases` (type: `array`):

Phase codes to include. Empty = all.

## `statuses` (type: `array`):

Recruitment statuses to include. Empty = all.

## `studyTypes` (type: `array`):

Study types to include. Empty = all.

## `sponsorClasses` (type: `array`):

INDUSTRY = companies, NIH/FED/OTHER_GOV = government, NETWORK, OTHER = universities/hospitals/non-profits. Empty = all. Individual sponsors (INDIV) always have their names withheld.

## `countries` (type: `array`):

English country names as used by the registry, e.g. United States, Germany. Match any. Empty = all.

## `onlyWithResults` (type: `boolean`):

Keep only studies whose results have been posted.

## `includeSummary` (type: `boolean`):

Adds the registry's brief summary text (emails and phone numbers are removed). Text may be third-party copyrighted: personal or internal analysis use only.

## `includeSites` (type: `boolean`):

Adds up to 50 sites per study (facility, city, state, country). Contact people are never included.

## `onlyNewSinceLastRun` (type: `boolean`):

Remembers delivered studies per filter set in your own account, so scheduled runs return only what changed.

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

Maximum studies delivered per run.

## Actor input object example

```json
{
  "mode": "newlyRegistered",
  "lookbackDays": 7,
  "conditions": [
    "diabetes"
  ],
  "onlyWithResults": false,
  "includeSummary": false,
  "includeSites": false,
  "onlyNewSinceLastRun": true,
  "maxResults": 200
}
```

# Actor output Schema

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

Dataset of studies matching the filters.

## `runSummary` (type: `string`):

Counts for this run (studies read, delivered, skipped).

# 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 = {
    "conditions": [
        "diabetes"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("appropriate_songbird/clinical-trials-tracker").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 = { "conditions": ["diabetes"] }

# Run the Actor and wait for it to finish
run = client.actor("appropriate_songbird/clinical-trials-tracker").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 '{
  "conditions": [
    "diabetes"
  ]
}' |
apify call appropriate_songbird/clinical-trials-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,appropriate_songbird/clinical-trials-tracker"
        }
    }
}
```

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/iVAIdZUH0raVgfSxB/builds/TJKUZR58oRDa46zXD/openapi.json
