# Clinical Trials Monitor (`zinin/clinical-trials-monitor`) Actor

Watch conditions, drugs or sponsors for new and updated clinical trials. Get NCT id, status, phase, sponsor and a direct study URL for every match, sorted by most recently updated. Official ClinicalTrials.gov API v2, free, no API key or login.

- **URL**: https://apify.com/zinin/clinical-trials-monitor.md
- **Developed by:** [Tim Zinin](https://apify.com/zinin) (community)
- **Categories:** News, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 trial founds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Clinical Trials Monitor — Track New Trials by Condition, Drug or Sponsor

Point this Actor at a list of conditions, drugs or sponsor names and get back every matching study on ClinicalTrials.gov — trial ID, status, phase, sponsor and a direct link, sorted by most recently updated. Every field comes straight from ClinicalTrials.gov's own public API: no scraping, no API key, no login, nothing to configure.

### What you get

- **Matching trials, not a search box.** One row per matching trial: `nctId`, `title`, `status`, `phase`, `sponsor`, `conditions`, `lastUpdated`, `firstPosted` and a ready-to-open `url`.
- **Sorted newest-first** by `lastUpdated`, so a status change or a freshly posted trial surfaces immediately, not buried on page six of the official search.
- **Optional time window.** Set `sinceDays` and only trials updated in that period come back — a true watchlist, not a one-off dump.
- **Built for lists.** Up to 25 search terms per run, concurrency up to 8.
- Runs on Apify: schedule it, monitor it, call it from the API or the MCP server, export to JSON, CSV or Excel, or push results straight into your own pipeline.

### Who uses it

- **Patients & advocacy groups** — track newly recruiting trials for a specific condition without babysitting the ClinicalTrials.gov search UI.
- **Pharma & biotech competitive intel** — watch a competitor's drug name or sponsor for pipeline moves: new trials, phase changes, status updates.
- **Journalists & researchers** — an alert-ready feed of trial activity for a beat or a disease area.
- **Health-tech builders** — a clean, structured trials feed to wire into a bot, dashboard or n8n workflow.

### Why it matters

ClinicalTrials.gov's own search UI has no watchlist mode — you either poll the website by hand or write your own API client and pagination logic. This Actor does that once per run and hands back one row per matching trial, ready to filter, alert on, or pipe into a dataset.

### How to run it

1. Click **Try for free** — no card needed on the free plan.
2. Paste your conditions, drugs or sponsor names into **Queries**, one per line.
3. Press **Start**. Results appear in the dataset — read them in the UI, pull them from the API, or have a webhook push them onward.

### Pricing

Pay-per-event: **$0.005 per run start + $0.005 per result found**. No monthly seat, no minimum. 100 matching trials cost about **$0.51**; 1,000 about **$5.01**.

A query that matches nothing is still returned, with `found: false` — and it is **not** charged for. You pay for matches, not for attempts.

### Input

| Field | Required | What it does |
|---|---|---|
| `queries` | yes | Conditions, drugs or sponsors to watch, e.g. `diabetes`, `pembrolizumab`, `Pfizer`. Up to 25 per run. |
| `pageSize` | no | How many trials to fetch per query, most recently updated first (default 20, max 100). |
| `sinceDays` | no | Only trials last updated within N days. Leave empty for no time filter. |
| `maxConcurrency` | no | Parallelism, 1–8 (default 3). |

```json
{
    "queries": ["diabetes", "pembrolizumab"]
}
````

### Output

One row per matching trial. This is a real row from a real run:

```json
{
    "sourceQuery": "diabetes",
    "found": true,
    "nctId": "NCT04203173",
    "title": "Financial Incentives And Nurse Coaching to Enhance Diabetes Outcomes (FINANCE-DM)-1",
    "status": "COMPLETED",
    "phase": "NA",
    "sponsor": "State University of New York at Buffalo",
    "conditions": ["Type 2 Diabetes"],
    "lastUpdated": "2026-07-24",
    "firstPosted": "2019-12-18",
    "url": "https://clinicaltrials.gov/study/NCT04203173",
    "summary": "Financial Incentives And Nurse Coaching to Enhance Diabetes Outcomes (FINANCE-DM)-1 — COMPLETED, sponsored by State University of New York at Buffalo, last updated 2026-07-24.",
    "checkedAt": "2026-07-26T13:56:30.677Z"
}
```

| Field | What it means |
|---|---|
| `nctId` | ClinicalTrials.gov registration number |
| `status` | `RECRUITING`, `COMPLETED`, `TERMINATED` and the other official trial statuses |
| `phase` | Trial phase, or `NA` when the study has none (e.g. observational) |
| `sponsor` | Lead sponsor on record |
| `conditions` | Conditions the trial lists, as an array |
| `lastUpdated` / `firstPosted` | Dates from ClinicalTrials.gov's own record |
| `found` | `false` means the query matched nothing (or the lookup failed) |

A query with no matching trials returns a single `found: false` row with `matched: 0` — never a partial or ragged row.

#### Need the rest of the picture?

These run on the same account, take the same shape of input and bill the same way, so they slot into an existing pipeline without new plumbing.

| Actor | What it does |
|---|---|
| [FDA Approval Feed](https://apify.com/zinin/fda-approval-feed) | Watch drugs or companies for new FDA approvals and recalls |
| [AI Crawler Access Checker](https://apify.com/zinin/ai-crawler-access-checker) | Check which AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended & more) can access your website |
| [B2B Lead Enricher](https://apify.com/zinin/b2b-lead-enricher) | Turn a list of company websites into sales-qualified lead cards: detected tech stack, a rough revenue… |
| [Company Hiring Radar](https://apify.com/zinin/company-hiring-radar) | Pull every open role a company is hiring for from its public job board (Greenhouse, Lever, Ashby) and turn… |
| [Company Profile Lookup](https://apify.com/zinin/company-lookup) | Turn a domain or company name into one unified company card: website tech stack (CMS, ecommerce, key tech)… |

### FAQ

**Does it need an API key or login?** No — the `clinicaltrials.gov/api/v2/studies` endpoint is public.

**How fresh is the data?** As fresh as ClinicalTrials.gov itself — new postings and status updates are usually visible within a day.

**Can I filter by how recently a trial changed?** Yes — set `sinceDays` and only trials whose `lastUpdated` falls in that window come back.

**Can I call it from an AI agent?** Yes — standard Apify Actor, callable from the Apify API, the SDK, or the Apify MCP server.

**What this is NOT.** It does not read eligibility criteria, trial results or protocol documents, and it does not judge whether a trial is a good fit for a specific patient. It answers one question — which trials match this search term, and what changed most recently — from ClinicalTrials.gov's own structured data.

This Actor surfaces public regulatory data for research and monitoring. It is not medical advice: trial status, phase and eligibility can change, and any decision about a specific trial should be based on the trial's own listing and a qualified professional, not on this feed alone.

Found a wrong result, or need a check we don't run? Open an issue on this Actor's page.

***

Built by [zinin](https://apify.com/zinin). Questions? Telegram [@timzinin](https://t.me/timzinin).

# Actor input Schema

## `queries` (type: `array`):

Conditions, drugs or sponsors to watch (e.g. `diabetes`, `pembrolizumab`, `Pfizer`). One or more matching trial rows per query.

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

How many trials to fetch per query, most recently updated first.

## `sinceDays` (type: `integer`):

Only include trials last updated within N days. Leave empty for no time filter.

## `maxConcurrency` (type: `integer`):

How many queries to process in parallel.

## Actor input object example

```json
{
  "queries": [
    "diabetes",
    "pembrolizumab"
  ],
  "pageSize": 20,
  "maxConcurrency": 3
}
```

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

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

# Run the Actor and wait for it to finish
run = client.actor("zinin/clinical-trials-monitor").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "queries": [
    "diabetes",
    "pembrolizumab"
  ]
}' |
apify call zinin/clinical-trials-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=zinin/clinical-trials-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Clinical Trials Monitor",
        "description": "Watch conditions, drugs or sponsors for new and updated clinical trials. Get NCT id, status, phase, sponsor and a direct study URL for every match, sorted by most recently updated. Official ClinicalTrials.gov API v2, free, no API key or login.",
        "version": "0.1",
        "x-build-id": "CwhZeTNRzWFXixYOa"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/zinin~clinical-trials-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-zinin-clinical-trials-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/zinin~clinical-trials-monitor/runs": {
            "post": {
                "operationId": "runs-sync-zinin-clinical-trials-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/zinin~clinical-trials-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-zinin-clinical-trials-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Queries",
                        "maxItems": 25,
                        "type": "array",
                        "description": "Conditions, drugs or sponsors to watch (e.g. `diabetes`, `pembrolizumab`, `Pfizer`). One or more matching trial rows per query.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "pageSize": {
                        "title": "Page size",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How many trials to fetch per query, most recently updated first.",
                        "default": 20
                    },
                    "sinceDays": {
                        "title": "Since (days)",
                        "minimum": 1,
                        "maximum": 3650,
                        "type": "integer",
                        "description": "Only include trials last updated within N days. Leave empty for no time filter."
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 8,
                        "type": "integer",
                        "description": "How many queries to process in parallel.",
                        "default": 3
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
