# Clinical Trials Watch — New & Updated Studies (Official API) (`jdepablos/clinical-trials-watch`) Actor

Track clinical trials by condition, sponsor or free term: new and updated studies with phase, status, enrollment, interventions, countries and sites, as clean JSON from the official ClinicalTrials.gov API. Built for biotech BD, investors, CROs and AI agents.

- **URL**: https://apify.com/jdepablos/clinical-trials-watch.md
- **Developed by:** [Juan de Pablos](https://apify.com/jdepablos) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 query scans

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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 Watch — New & Updated Studies (ClinicalTrials.gov)

**Know when a trial starts, changes or opens recruitment — the day it happens.** One call per watched query: new and updated clinical trials by condition, sponsor or drug name, with phase, status, enrollment, interventions and countries as clean JSON, straight from the official ClinicalTrials.gov API.

Trial intelligence platforms charge thousands per seat. The raw signal — who is trialing what, in which phase, updated when — is public data. This Actor structures it for the price of an API call.

### What you get per watched query

```json
{
  "query": { "condition": "melanoma", "sponsor": null, "term": null },
  "totalInSource": 472,
  "returned": 100,
  "studies": [
    {
      "nctId": "NCT03698019",
      "title": "A Study to Compare the Administration of Pembrolizumab...",
      "status": "RECRUITING",
      "studyType": "INTERVENTIONAL",
      "phases": ["PHASE2"],
      "conditions": ["Melanoma"],
      "interventions": ["Pembrolizumab"],
      "sponsor": "National Cancer Institute (NCI)",
      "sponsorClass": "NIH",
      "enrollment": 850,
      "startDate": "2018-11-05",
      "lastUpdate": "2026-07-02",
      "countries": ["United States", "Canada"],
      "siteCount": 124,
      "url": "https://clinicaltrials.gov/study/NCT03698019"
    }
  ]
}
````

### Built for recurring watch

- **`updatedSince` + a schedule** = a rolling feed of only what changed: new trials, status flips, enrollment updates.
- **Watch by what matters to you**: a condition ("alzheimer"), a competitor sponsor ("Pfizer"), or a drug/mechanism as free term ("GLP-1").
- **Status pre-filtered**: default `RECRUITING` + `NOT_YET_RECRUITING` — the actionable window; ask for `TERMINATED`/`SUSPENDED` to catch failures early.
- **Batch watchlists**: up to 25 queries per run with per-query overrides.

### Use cases

- **Biotech BD / competitive intelligence**: every new trial your competitors register, weekly.
- **Investors**: phase transitions and terminations are tradeable events — see them structured.
- **CROs / site networks**: new studies recruiting in your therapeutic areas and countries.
- **Patient advocates**: trials opening for a condition, with sites and countries.
- **AI agents**: "any new phase-3 trials for X since Monday?" — one tool call.

### Input

| Field | Description |
|---|---|
| `condition` / `sponsor` / `term` | What to watch (combine or use `queries` for a watchlist) |
| `queries` | Up to 25 watches per run |
| `statuses` | Default `["RECRUITING", "NOT_YET_RECRUITING"]`; empty = all |
| `updatedSince` | YYYY-MM-DD — only studies updated on/after this date |
| `maxStudiesPerQuery` | Cap per query (default 100, max 1000) |

### Use with AI agents (MCP)

This Actor is exposed as a tool on the [Apify MCP Server](https://mcp.apify.com):

```json
{
  "mcpServers": {
    "clinical-trials-watch": {
      "url": "https://mcp.apify.com?tools=jdepablos/clinical-trials-watch",
      "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }
    }
  }
}
```

### Pricing

Pay per event: **one flat fee per watched query scanned** — all matching studies in your window included. Failed queries are never charged.

### FAQ

**Is this medical advice?** No. It is structured public registry data from the official U.S. National Library of Medicine API.

**How fresh is it?** ClinicalTrials.gov updates continuously; sponsors must post updates within strict windows. The Actor reads the live API.

**Non-US trials?** Yes — ClinicalTrials.gov includes trials worldwide (sites in 200+ countries), and `countries` is included per study.

### More data tools by this developer

- [Insider Trading Feed — SEC Form 4 buys & sells](https://apify.com/jdepablos/insider-trading-feed)
- [Global Trademark Watch (TMview) — new filings & opposition deadlines](https://apify.com/jdepablos/trademark-watch-tmview)
- [eBay Sold Price Appraiser — real market value from confirmed sales](https://apify.com/jdepablos/ebay-sold-price-appraiser)
- [Second-hand Deal Scanner EU — Vinted/Wallapop/Milanuncios deals vs eBay sold](https://apify.com/jdepablos/second-hand-deal-scanner-es)
- [Spanish Company Feed (BORME) — daily registry acts as JSON](https://apify.com/jdepablos/borme-company-feed)
- [Spain Public Auctions (BOE) — judicial auctions with market comparison](https://apify.com/jdepablos/spain-boe-auctions)

# Actor input Schema

## `condition` (type: `string`):

Disease or condition to watch, e.g. 'melanoma', 'alzheimer'. Combine with sponsor/term or use 'queries' for multiple watches.

## `sponsor` (type: `string`):

Lead sponsor to watch, e.g. 'Pfizer'.

## `term` (type: `string`):

Free-text search term, e.g. a drug name ('pembrolizumab').

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

Up to 25 watches per run. Each entry: {"condition": "..."} and/or {"sponsor": "..."}, {"term": "..."} plus per-query overrides.

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

Trial statuses to include. Default: recruiting + not yet recruiting (the watch use-case). Empty = all.

## `updatedSince` (type: `string`):

YYYY-MM-DD — only studies updated on/after this date. Combine with a schedule for a rolling watch.

## `maxStudiesPerQuery` (type: `integer`):

Cap per watched query.

## Actor input object example

```json
{
  "condition": "melanoma",
  "statuses": [
    "RECRUITING",
    "NOT_YET_RECRUITING"
  ],
  "maxStudiesPerQuery": 100
}
```

# 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 = {
    "condition": "melanoma"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jdepablos/clinical-trials-watch").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 = { "condition": "melanoma" }

# Run the Actor and wait for it to finish
run = client.actor("jdepablos/clinical-trials-watch").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 '{
  "condition": "melanoma"
}' |
apify call jdepablos/clinical-trials-watch --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Clinical Trials Watch — New & Updated Studies (Official API)",
        "description": "Track clinical trials by condition, sponsor or free term: new and updated studies with phase, status, enrollment, interventions, countries and sites, as clean JSON from the official ClinicalTrials.gov API. Built for biotech BD, investors, CROs and AI agents.",
        "version": "0.1",
        "x-build-id": "7REn1gY2OBLxMqnTo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jdepablos~clinical-trials-watch/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jdepablos-clinical-trials-watch",
                "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/jdepablos~clinical-trials-watch/runs": {
            "post": {
                "operationId": "runs-sync-jdepablos-clinical-trials-watch",
                "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/jdepablos~clinical-trials-watch/run-sync": {
            "post": {
                "operationId": "run-sync-jdepablos-clinical-trials-watch",
                "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",
                "properties": {
                    "condition": {
                        "title": "Condition",
                        "type": "string",
                        "description": "Disease or condition to watch, e.g. 'melanoma', 'alzheimer'. Combine with sponsor/term or use 'queries' for multiple watches."
                    },
                    "sponsor": {
                        "title": "Sponsor",
                        "type": "string",
                        "description": "Lead sponsor to watch, e.g. 'Pfizer'."
                    },
                    "term": {
                        "title": "Free term",
                        "type": "string",
                        "description": "Free-text search term, e.g. a drug name ('pembrolizumab')."
                    },
                    "queries": {
                        "title": "Watchlist (optional)",
                        "type": "array",
                        "description": "Up to 25 watches per run. Each entry: {\"condition\": \"...\"} and/or {\"sponsor\": \"...\"}, {\"term\": \"...\"} plus per-query overrides."
                    },
                    "statuses": {
                        "title": "Status filter",
                        "type": "array",
                        "description": "Trial statuses to include. Default: recruiting + not yet recruiting (the watch use-case). Empty = all.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "RECRUITING",
                                "NOT_YET_RECRUITING",
                                "ACTIVE_NOT_RECRUITING",
                                "ENROLLING_BY_INVITATION",
                                "COMPLETED",
                                "TERMINATED",
                                "SUSPENDED",
                                "WITHDRAWN"
                            ],
                            "enumTitles": [
                                "Recruiting",
                                "Not yet recruiting",
                                "Active, not recruiting",
                                "Enrolling by invitation",
                                "Completed",
                                "Terminated",
                                "Suspended",
                                "Withdrawn"
                            ]
                        },
                        "default": [
                            "RECRUITING",
                            "NOT_YET_RECRUITING"
                        ]
                    },
                    "updatedSince": {
                        "title": "Updated since",
                        "type": "string",
                        "description": "YYYY-MM-DD — only studies updated on/after this date. Combine with a schedule for a rolling watch."
                    },
                    "maxStudiesPerQuery": {
                        "title": "Max studies per query",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap per watched query.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
