# ClinicalTrials.gov Biotech Sponsor & PI Contact Leads Scraper (`apex-b2b-data/clinicaltrials-gov-sponsor-leads`) Actor

Extract verified clinical trial sponsors, biotechnology companies, lead principal investigators (PIs), and central trial contacts (direct emails & phone numbers) from the official ClinicalTrials.gov REST API v2. Filter by disease condition, trial phase, recruitment status, and industry vs academic s

- **URL**: https://apify.com/apex-b2b-data/clinicaltrials-gov-sponsor-leads.md
- **Developed by:** [George Barnes](https://apify.com/apex-b2b-data) (community)
- **Categories:** Lead generation, Business, AI
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.05 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Sponsor Leads & Clinical Trial Contact Extractor (`$1.50 / 1K`)

**Extract verified clinical trial sponsors, biotechnology companies, lead principal investigators (PIs), and central trial contacts (direct emails & phone numbers) from the official ClinicalTrials.gov REST API v2.**

Target decision-makers across pharmaceutical sponsors, clinical research organizations (CROs), medical universities, cancer research centers, and hospital site networks. Filter by disease condition, trial phase, recruitment status, intervention name, and commercial industry vs. academic sponsor class with automated B2B lead scoring (`0–100`).

***

### Why Choose This ClinicalTrials.gov Actor? (Comparison)

| Capability | This Actor | Standard Web Scrapers | Manual ClinicalTrials.gov Search | Legacy Data Brokers |
| :--- | :--- | :--- | :--- | :--- |
| **Pricing per 1,000 Leads** | **`$1.50 / 1K` (`$0.0015` / lead)** | `$5.00 – $15.00 / 1K` | Hours of manual copy-paste | `$500 – $2,000 / month` |
| **Data Source** | **Official REST API v2 (`api/v2/studies`)** | Unstable HTML scraping | Web UI | Stale pre-packaged CSVs |
| **Central Contact Emails & Phones** | ✅ Cleaned, formatted & normalized | ⚠️ Incomplete or masked | Manual lookup per page | Frequently outdated |
| **Principal Investigator (PI) Extraction** | ✅ Named PI & academic affiliation | ❌ Rarely parsed | Manual lookup | Partial |
| **Commercial vs. Academic Filtering** | ✅ `INDUSTRY`, `NIH`, `OTHER`, `OTHER_GOV` | ❌ No | Keyword only | Tiered paywall |
| **Multi-Phase & Status Essie Filtering** | ✅ Native Essie expressions (`AREA[Phase]`) | ❌ Fails on multiple phases | Web form only | Static filters |
| **Cursor Pagination (`nextPageToken`)** | ✅ Fully automated cursor walking | ❌ Broken by offset barriers | 10–50 studies/page | N/A |
| **B2B Lead Opportunity Score (`0–100`)** | ✅ Built-in opportunity scoring | ❌ No | ❌ No | Proprietary black box |
| **Automated B2B Segmentation Tags** | ✅ `lead_segments` for CRM/Clay | ❌ No | ❌ No | ❌ No |
| **Residential Proxy Costs** | **`$0.00` (Direct public API)** | `$10 – $30` per 10k pages | `$0.00` | N/A |

***

### Transparent Pricing (`$1.50` per 1,000 Leads)

Pay **only for actual trial records delivered** (`$0.0015` per lead via Apify Pay-Per-Event). Zero monthly commitments:

| Workflow | Records Returned | Total Cost | Ideal For |
| :--- | :--- | :--- | :--- |
| **Quick Test Run** | `25` leads | **`$0.0375` (~4 cents)** | Validating contact coverage & schema |
| **Weekly Disease Focus Feed** | `250` leads | **`$0.375`** | CRO business development & investigator matching |
| **Targeted Multi-Phase Campaign** | `1,000` leads | **`$1.50`** | Life science SDR outreach & trial recruiting |
| **Full Therapeutic Area TAM Export** | `10,000` leads | **`$15.00`** | Market intelligence & competitive clinical pipeline analysis |

***

### High-Intent B2B Playbooks (Copy-Paste Inputs)

#### 1. Commercial Oncology Phase 2 & 3 Trial Leads for CROs & Site Networks

Target high-budget commercial pharmaceutical and biotech sponsors running active recruiting Phase 2 and Phase 3 clinical oncology trials. Requires verified contact emails for immediate outreach:

```json
{
  "condition": "oncology",
  "overallStatus": "RECRUITING",
  "studyPhase": ["PHASE2", "PHASE3"],
  "sponsorClass": "INDUSTRY",
  "requireContactEmail": true,
  "pageSize": 50,
  "maxItems": 500
}
```

#### 2. Rare Disease & Gene Therapy Clinical Investigators

Find pioneering principal investigators and research centers conducting clinical trials for rare genetic disorders and novel gene therapies:

```json
{
  "condition": "rare disease",
  "searchQuery": "gene therapy",
  "overallStatus": "RECRUITING",
  "sponsorClass": "ALL",
  "requireContactEmail": false,
  "pageSize": 50,
  "maxItems": 250
}
```

#### 3. Medical Device & Diagnostic Clinical Trials

Target medical device manufacturers and diagnostic innovators testing novel diagnostic tools, implants, and surgical equipment:

```json
{
  "condition": "cardiovascular",
  "searchQuery": "device",
  "overallStatus": "RECRUITING",
  "sponsorClass": "INDUSTRY",
  "requireContactEmail": true,
  "pageSize": 50,
  "maxItems": 300
}
```

#### 4. Direct Pharmaceutical Sponsor Pipeline Audit

Monitor specific pharmaceutical sponsors (e.g. Pfizer, AstraZeneca, Novartis, Roche) across all recruiting studies with direct study contact coordinates:

```json
{
  "sponsorName": "Pfizer",
  "overallStatus": "RECRUITING",
  "sponsorClass": "INDUSTRY",
  "pageSize": 50,
  "maxItems": 200
}
```

***

### Sample Output Record

```json
{
  "nct_id": "NCT06787053",
  "brief_title": "Selecting Hypoxic Tumours for Treatment Modification",
  "overall_status": "RECRUITING",
  "study_phase": "Phase 2",
  "lead_sponsor_name": "University of Manchester",
  "lead_sponsor_class": "OTHER",
  "principal_investigator": "Ananya Choudhury, Professor",
  "central_contact_name": "Rachel Reed, MSc",
  "central_contact_email": "rachel.reed@manchester.ac.uk",
  "central_contact_phone": "+44 161 918 4780 ext. 7480",
  "enrollment_count": 30,
  "lead_opportunity_score": 95,
  "extracted_at": "2026-11-04T00:21:19Z",
  "study_url": "https://clinicaltrials.gov/study/NCT06787053",
  "lead_score": 95,
  "lead_segments": [
    "ACADEMIC_OR_GOV",
    "ACTIVE_RECRUITING",
    "DIRECT_EMAIL_AVAILABLE",
    "PI_IDENTIFIED"
  ],
  "start_date": "2024-10-16",
  "principal_investigator_affiliation": "University of Manchester",
  "conditions": [
    "Bladder Cancer",
    "Prostate Cancer"
  ],
  "interventions": [
    "Hypoxia-targeted radiotherapy"
  ],
  "locations_count": 1
}
```

***

### Output Fields Reference

#### Core Overview Fields (Table View)

| Field Name | Type | Description |
| :--- | :--- | :--- |
| `nct_id` | String | Unique ClinicalTrials.gov study identifier (e.g. `NCT06787053`) |
| `brief_title` | String | Official study title |
| `overall_status` | String | Recruitment status (`RECRUITING`, `NOT_YET_RECRUITING`, etc.) |
| `study_phase` | String | Standardized trial phase (`Phase 1`, `Phase 2`, `Phase 3`, etc.) |
| `lead_sponsor_name` | String | Legal organization or company sponsoring the trial |
| `lead_sponsor_class` | String | Sponsor class: `INDUSTRY`, `NIH`, `OTHER`, `OTHER_GOV` |
| `principal_investigator` | String | Name of the lead Principal Investigator or Study Chair |
| `central_contact_name` | String | Lead study coordinator or regulatory contact person |
| `central_contact_email` | String | Normalized, lowercased contact email address |
| `central_contact_phone` | String | Formatted contact phone number with extension if applicable |
| `enrollment_count` | Integer | Total target or actual patient enrollment |
| `lead_opportunity_score` | Integer | B2B lead score (`0–100`) based on sponsor, contacts, and trial scale |
| `extracted_at` | String | UTC ISO 8601 extraction timestamp |

#### Additional Enriched Attributes

| Field Name | Type | Description |
| :--- | :--- | :--- |
| `study_url` | String | Direct URL to study on ClinicalTrials.gov (`https://clinicaltrials.gov/study/{nct_id}`) |
| `lead_segments` | Array | Segmentation tags (`INDUSTRY_SPONSORED`, `ACTIVE_RECRUITING`, `MEGA_TRIAL_500_PLUS`, etc.) |
| `start_date` | String | Study start date (`YYYY-MM-DD`) |
| `principal_investigator_affiliation` | String | University, hospital, or research institution affiliation of the PI |
| `conditions` | Array | Medical diseases and conditions evaluated in the trial |
| `interventions` | Array | Specific drugs, biological agents, or devices tested |
| `locations_count` | Integer | Number of trial sites / hospital locations |

***

### Integration Snippets

#### Python (Apify Client)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")

run_input = {
    "condition": "oncology",
    "overallStatus": "RECRUITING",
    "studyPhase": ["PHASE2", "PHASE3"],
    "sponsorClass": "INDUSTRY",
    "requireContactEmail": True,
    "maxItems": 100,
}

## Run the Actor and wait for completion
run = client.actor("clinicaltrials-gov-sponsor-leads").call(run_input=run_input)

## Fetch results from the default dataset
dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items
for item in dataset_items:
    print(f"[{item['nct_id']}] {item['lead_sponsor_name']} - PI: {item['principal_investigator']} - Contact: {item['central_contact_email']}")
```

#### cURL / Direct REST API (Synchronous Execution)

Run synchronously and immediately retrieve JSON output into Clay, n8n, Make, or your custom pipeline:

```bash
curl -X POST "https://api.apify.com/v2/acts/clinicaltrials-gov-sponsor-leads/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "condition": "diabetes",
    "overallStatus": "RECRUITING",
    "sponsorClass": "INDUSTRY",
    "maxItems": 50
  }'
```

***

### Standalone Local Execution

This Actor can also be run locally from the command line without an Apify account:

```bash
git clone https://github.com/apify/clinicaltrials-gov-sponsor-leads.git
cd clinicaltrials-gov-sponsor-leads
pip install -r requirements.txt

## Run with default inputs
python3 src/main.py

## Output records are written to:
## storage/datasets/default/results.json
```

# Actor input Schema

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

Medical condition or disease to search (e.g. 'oncology', 'lung cancer', 'diabetes', 'alzheimer', 'rare disease').

## `overallStatus` (type: `string`):

Filter by trial recruitment status. Select 'ALL' to include all statuses or pick a specific recruitment status.

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

Number of clinical trial leads to request per batch from the API (1 to 1000).

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

Maximum number of total clinical trial leads to extract across cursor pagination (e.g. 20, 50, 500).

## `studyPhase` (type: `array`):

Filter by trial phase: 'EARLY_PHASE1', 'PHASE1', 'PHASE2', 'PHASE3', 'PHASE4'. Leave empty to include all phases.

## `sponsorClass` (type: `string`):

Filter by sponsor category: 'INDUSTRY' (commercial pharmaceutical/biotech), 'NIH', 'OTHER' (academic hospitals and research universities), 'OTHER_GOV', or 'ALL'.

## `sponsorName` (type: `string`):

Target specific pharmaceutical sponsor or institution (e.g. 'Pfizer', 'Novartis', 'AstraZeneca', 'Memorial Sloan').

## `intervention` (type: `string`):

Filter by specific drug, biological therapy, vaccine, or medical device (e.g. 'pembrolizumab', 'CAR-T', 'mRNA').

## `searchQuery` (type: `string`):

Full-text search term across study titles, abstracts, and eligibility criteria.

## `requireContactEmail` (type: `boolean`):

Filter out clinical trials that lack a public central contact email or investigator email.

## `requireContactPhone` (type: `boolean`):

Filter out clinical trials that lack a phone number.

## Actor input object example

```json
{
  "condition": "oncology",
  "overallStatus": "RECRUITING",
  "pageSize": 20,
  "maxItems": 20,
  "studyPhase": [],
  "sponsorClass": "ALL",
  "sponsorName": "",
  "intervention": "",
  "searchQuery": "",
  "requireContactEmail": false,
  "requireContactPhone": false
}
```

# Actor output Schema

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

Structured JSON records produced by ClinicalTrials.gov Biotech Sponsor & PI Contact Leads Scraper in the default dataset.

# 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("apex-b2b-data/clinicaltrials-gov-sponsor-leads").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("apex-b2b-data/clinicaltrials-gov-sponsor-leads").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 apex-b2b-data/clinicaltrials-gov-sponsor-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apex-b2b-data/clinicaltrials-gov-sponsor-leads"
        }
    }
}
```

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/zr07X6zrOrDgN8eTU/builds/ZcPbvpypkz1HDSX9a/openapi.json
