A Python client for interacting with the ClinicalTrials.gov API v2. This library provides an easy-to-use interface for fetching and analyzing clinical trial data.
You can install the package via pip:
pip install pyctrialsfrom pyctrials import ClinicalTrialsAPI
# Initialize the client
client = ClinicalTrialsAPI()
# Fetch trials for a specific condition
trials = client.fetch_trials("Pompe Disease")
# Display results
print(f"Found {len(trials)} trials")
print(trials[['nct_id', 'brief_title', 'overall_status']].head())- Easy-to-use interface for ClinicalTrials.gov API
- Automatic pagination handling
- Retry mechanism for failed requests
- Data parsing and cleanup
- DataFrame-based output for easy analysis
- Comprehensive trial information including:
- Trial identification
- Status information
- Sponsor details
- Study design
- Location information
- And more...
The main class for interacting with the API.
client = ClinicalTrialsAPI(max_retries=5, retry_delay=5)Parameters:
max_retries(int): Maximum number of retry attempts for failed requestsretry_delay(int): Delay between retry attempts in seconds
trials = client.fetch_trials(
condition="Pompe Disease",
status="RECRUITING",
page_size=10
)Parameters: other parameters will follow
condition(str): Medical condition to search forstatus(str): Trial status filter (default: 'RECRUITING') (ACTIVE_NOT_RECRUITING ┃ COMPLETED ┃ ENROLLING_BY_INVITATION ┃ NOT_YET_RECRUITING ┃ RECRUITING ┃ SUSPENDED ┃ TERMINATED ┃ WITHDRAWN ┃ AVAILABLE ┃ NO_LONGER_AVAILABLE ┃ TEMPORARILY_NOT_AVAILABLE ┃ APPROVED_FOR_MARKETING ┃ WITHHELD ┃ UNKNOWN) --> visit https://clinicaltrials.gov/data-api/api#get-/studies for more infopage_size(int): Number of results per page (default: 10)
Returns:
- pandas.DataFrame containing the trial data
from pyctrials import ClinicalTrialsAPI
# Initialize client
client = ClinicalTrialsAPI()
# Fetch trials
trials = client.fetch_trials("Spinal Muscular Atrophy")
# Show unique sponsors
print(trials['sponsor'].unique())
# Get trials by phase
phase_counts = trials['phase'].value_counts()
print(phase_counts)try:
trials = client.fetch_trials("Rare Disease")
except Exception as e:
print(f"An error occurred: {e}")Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to ClinicalTrials.gov for providing the API
- Built with Python, pandas, and requests
If you use this package in your research, please cite:
@software{pyctrials,
author = {Anass Tinakoua},
title = {Clinical Trials API Client},
year = {2024},
publisher = {GitHub},
url = {https://github.com/atinak/pyctrials}
}