# Clinical Trials Normalizer (`wakey7dev/clinical-trials-normalizer`) Actor

Search clinicaltrials.gov and get cleaned, normalized trial data — drug names standardized, conditions unified, sponsors deduplicated.

- **URL**: https://apify.com/wakey7dev/clinical-trials-normalizer.md
- **Developed by:** [Chris Wakefield](https://apify.com/wakey7dev) (community)
- **Categories:** Business
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

![Chris The Dev](https://raw.githubusercontent.com/chriswakefield87/appstore-screenshot-translator/main/assets/actor-banner.png)

## Clinical Trials Normalizer

Search clinicaltrials.gov and get **cleaned, normalized trial data** — drug names standardized, medical conditions unified, and sponsor names deduplicated.

### What this Actor does

The clinicaltrials.gov database contains 500,000+ clinical trials, but the data is messy. The same drug appears under 5 different names, conditions are described inconsistently, and sponsors have duplicate entries. This Actor:

- 🔍 **Searches** clinicaltrials.gov by condition, drug, sponsor, status, phase, country, and date range
- 💊 **Normalizes drug names** — maps 200+ brand names to generics (Keytruda → Pembrolizumab, Ozempic → Semaglutide, etc.)
- 🏥 **Unifies conditions** — standardizes 80+ common disease abbreviations and synonyms
- 🏢 **Cleans sponsor names** — strips legal suffixes (Inc, LLC, Ltd) and normalizes formatting
- 📊 **Outputs structured data** — CSV/JSON with normalized fields, aggregate stats, and a human-readable summary

### Example

Search for "pembrolizumab" trials for "lung cancer":
```json
{
  "condition": "lung cancer",
  "intervention": "pembrolizumab",
  "status": "RECRUITING",
  "maxResults": 50
}
````

The Actor returns a clean dataset where:

- "KEYTRUDA", "Pembrolizumab (MK-3475)", and "pembrolizumab" all become **Pembrolizumab**
- "NSCLC", "Non-Small Cell Lung Cancer", and "non-small cell lung cancer" all become **Non-Small Cell Lung Cancer**
- "Merck Sharp & Dohme LLC", "Merck & Co., Inc." → **Merck Sharp & Dohme**

### Input Parameters

| Field | Description |
|---|---|
| `condition` | Medical condition (e.g. "asthma", "breast cancer") |
| `intervention` | Drug or treatment (e.g. "aspirin", "pembrolizumab") |
| `sponsor` | Organization name (e.g. "Pfizer", "NCI") |
| `status` | Recruitment status filter |
| `phase` | Trial phase (1-4) |
| `studyType` | Interventional, Observational, or Expanded Access |
| `locationCountry` | Country filter (e.g. "United Kingdom") |
| `startDateFrom` / `startDateTo` | Date range (YYYY-MM-DD) |
| `maxResults` | Max trials to return (default 100, max 1000) |

### Output

Each trial record includes:

- NCT ID, title, acronym, status, phase, study type
- **Normalized drug names** + raw names for comparison
- **Normalized conditions** + raw conditions
- Clean sponsor name, enrollment count, age range, sex
- Locations, countries, primary outcomes, FDA regulation flags
- Direct link to clinicaltrials.gov study page

Plus aggregate stats: top drugs, top conditions, top sponsors, top countries, status breakdowns.

### Use Cases

- **Pharma competitive intelligence** — track competitor trial pipelines
- **Biotech investment research** — identify active therapeutic areas
- **Meta-analysis / systematic reviews** — clean, consistent trial data for research
- **Patient recruitment** — find recruiting trials by location and condition
- **Regulatory monitoring** — track FDA-regulated drug and device trials

### Data Source

[ClinicalTrials.gov](https://clinicaltrials.gov/) is a database of privately and publicly funded clinical studies conducted around the world, maintained by the U.S. National Library of Medicine. The API is free and requires no authentication.

# Actor input Schema

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

Medical condition to search for (e.g. 'asthma', 'breast cancer', 'diabetes type 2'). Leave empty to search all conditions.

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

Drug or intervention to search for (e.g. 'aspirin', 'pembrolizumab', 'metformin').

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

Sponsoring organization (e.g. 'Pfizer', 'National Cancer Institute').

## `status` (type: `string`):

Filter by recruitment status.

## `phase` (type: `string`):

Filter by clinical trial phase.

## `studyType` (type: `string`):

Type of study.

## `locationCountry` (type: `string`):

Filter by country (e.g. 'United States', 'United Kingdom', 'Germany').

## `startDateFrom` (type: `string`):

Earliest trial start date (YYYY-MM-DD format).

## `startDateTo` (type: `string`):

Latest trial start date (YYYY-MM-DD format).

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

Maximum number of trials to return (default 100, max 1000).

## Actor input object example

```json
{
  "maxResults": 100
}
```

# Actor output Schema

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

Full dataset of normalized trial records.

## `summary` (type: `string`):

Human-readable summary of results.

## `stats` (type: `string`):

Aggregate statistics from the search.

# 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("wakey7dev/clinical-trials-normalizer").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("wakey7dev/clinical-trials-normalizer").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 '{}' |
apify call wakey7dev/clinical-trials-normalizer --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Clinical Trials Normalizer",
        "description": "Search clinicaltrials.gov and get cleaned, normalized trial data — drug names standardized, conditions unified, sponsors deduplicated.",
        "version": "1.0",
        "x-build-id": "VJnsivHDQYjdb6Xka"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/wakey7dev~clinical-trials-normalizer/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-wakey7dev-clinical-trials-normalizer",
                "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/wakey7dev~clinical-trials-normalizer/runs": {
            "post": {
                "operationId": "runs-sync-wakey7dev-clinical-trials-normalizer",
                "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/wakey7dev~clinical-trials-normalizer/run-sync": {
            "post": {
                "operationId": "run-sync-wakey7dev-clinical-trials-normalizer",
                "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 / Disease",
                        "type": "string",
                        "description": "Medical condition to search for (e.g. 'asthma', 'breast cancer', 'diabetes type 2'). Leave empty to search all conditions."
                    },
                    "intervention": {
                        "title": "Intervention / Drug",
                        "type": "string",
                        "description": "Drug or intervention to search for (e.g. 'aspirin', 'pembrolizumab', 'metformin')."
                    },
                    "sponsor": {
                        "title": "Sponsor / Organization",
                        "type": "string",
                        "description": "Sponsoring organization (e.g. 'Pfizer', 'National Cancer Institute')."
                    },
                    "status": {
                        "title": "Trial Status",
                        "enum": [
                            "",
                            "RECRUITING",
                            "ACTIVE_NOT_RECRUITING",
                            "COMPLETED",
                            "NOT_YET_RECRUITING",
                            "ENROLLING_BY_INVITATION",
                            "TERMINATED",
                            "WITHDRAWN",
                            "UNKNOWN"
                        ],
                        "type": "string",
                        "description": "Filter by recruitment status."
                    },
                    "phase": {
                        "title": "Trial Phase",
                        "enum": [
                            "",
                            "PHASE1",
                            "PHASE2",
                            "PHASE3",
                            "PHASE4",
                            "NA"
                        ],
                        "type": "string",
                        "description": "Filter by clinical trial phase."
                    },
                    "studyType": {
                        "title": "Study Type",
                        "enum": [
                            "",
                            "INTERVENTIONAL",
                            "OBSERVATIONAL",
                            "EXPANDED_ACCESS"
                        ],
                        "type": "string",
                        "description": "Type of study."
                    },
                    "locationCountry": {
                        "title": "Country",
                        "type": "string",
                        "description": "Filter by country (e.g. 'United States', 'United Kingdom', 'Germany')."
                    },
                    "startDateFrom": {
                        "title": "Start Date From",
                        "type": "string",
                        "description": "Earliest trial start date (YYYY-MM-DD format)."
                    },
                    "startDateTo": {
                        "title": "Start Date To",
                        "type": "string",
                        "description": "Latest trial start date (YYYY-MM-DD format)."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of trials to return (default 100, max 1000).",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
