
Clinical Trials Search
- 16 installs
- 869 repo stars
- Updated June 8, 2026
- beita6969/scienceclaw
clinical-trials-search is a skill that searches ClinicalTrials.gov with natural-language queries using Valyu's semantic-search API.
About
Clinical-trials-search is a skill that searches the ClinicalTrials.gov database using natural-language queries powered by Valyu's semantic-search API. A developer uses it to find trials, eligibility criteria, recruiting status, and outcomes without building search parameters. It returns ranked JSON results and integrates via a bundled script or the Valyu Python and TypeScript SDKs. It requires a Valyu API key.
- Searches ClinicalTrials.gov with natural-language queries via Valyu semantic search
- Returns full trial content, phases, conditions, and outcomes as JSON
- Requires a Valyu API key with a one-time setup step
Clinical Trials Search by the numbers
- 16 all-time installs (skills.sh)
- Ranked #1,318 of 2,065 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
clinical-trials-search capabilities & compatibility
Valyu API key with $10 free credits, then per-query cost (~0.025 in docs example)
- Capabilities
- clinicaltrials database · clinical trial · semantic search
- Use cases
- research · web search
- Pricing
- Freemium
What clinical-trials-search says it does
Search ClinicalTrials.gov with natural language queries. Find clinical trials, enrollment, and outcomes using Valyu semantic search.
Valyu API key from https://platform.valyu.ai ($10 free credits)
Just pass natural language queries directly - no need to construct complex search parameters
npx skills add https://github.com/beita6969/scienceclaw --skill clinical-trials-searchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 16 |
|---|---|
| repo stars | ★ 869 |
| Last updated | June 8, 2026 |
| Repository | beita6969/scienceclaw ↗ |
What it does
Search ClinicalTrials.gov with natural-language queries using Valyu semantic search.
Who is it for?
Natural-language semantic search over ClinicalTrials.gov trials
When should I use this skill?
Finding trials, eligibility criteria, recruiting status, or outcomes via natural-language search
By the numbers
- Valyu API key comes with $10 free credits
- example search cost 0.025 per query in docs
Files
Clinical Trials Search
Search the complete ClinicalTrials.gov database of clinical studies using natural language queries powered by Valyu's semantic search API.
Why This Skill is Powerful
- No API Parameter Parsing: Just pass natural language queries directly - no need to construct complex search parameters
- Semantic Search: Understands the meaning of your query, not just keyword matching
- Full-Text Access: Returns complete trial information including phases, conditions, interventions, and outcomes
- Image Links: Includes data visualizations when available
- Comprehensive Coverage: Access to all ClinicalTrials.gov data
Requirements
1. Node.js 18+ (uses built-in fetch) 2. Valyu API key from https://platform.valyu.ai ($10 free credits)
CRITICAL: Script Path Resolution
The scripts/search commands in this documentation are relative to this skill's installation directory.
Before running any command, locate the script using:
CLINICAL_TRIALS_SCRIPT=$(find ~/.claude/plugins/cache -name "search" -path "*/clinical-trials-search/*/scripts/*" -type f 2>/dev/null | head -1)Then use the full path for all commands:
$CLINICAL_TRIALS_SCRIPT "CAR-T cell therapy trials" 15API Key Setup Flow
When you run a search and receive "setup_required": true, follow this flow:
1. Ask the user for their API key: "To search ClinicalTrials.gov, I need your Valyu API key. Get one free ($10 credits) at https://platform.valyu.ai"
2. Once the user provides the key, run:
scripts/search setup <api-key>3. Retry the original search.
When to Use This Skill
- Finding ongoing and completed clinical trials
- Identifying trial eligibility criteria
- Recruiting status and enrollment information
- Comparing treatment approaches in trials
- Patient recruitment and enrollment research
- Outcomes and safety data from trials
Output Format
{
"success": true,
"type": "clinical_trials_search",
"query": "CAR-T cell therapy trials",
"result_count": 10,
"results": [
{
"title": "Trial Title",
"url": "https://clinicaltrials.gov/...",
"content": "Trial details, phase, conditions, outcomes...",
"source": "clinical-trials",
"relevance_score": 0.95,
"images": []
}
],
"cost": 0.025
}Processing Results
With jq
# Get trial titles
scripts/search "query" 10 | jq -r '.results[].title'
# Get URLs
scripts/search "query" 10 | jq -r '.results[].url'
# Extract full content
scripts/search "query" 10 | jq -r '.results[].content'Common Use Cases
Drug Development
# Find drug trials
scripts/search "phase 2 trials for Alzheimer's disease" 50Treatment Research
# Search for treatment studies
scripts/search "checkpoint inhibitor combinations in lung cancer" 20Medical Device Studies
# Find device trials
scripts/search "continuous glucose monitoring device studies" 15Intervention Analysis
# Search for intervention studies
scripts/search "behavioral interventions for obesity" 25Error Handling
All commands return JSON with success field:
{
"success": false,
"error": "Error message"
}Exit codes:
0- Success1- Error (check JSON for details)
API Endpoint
- Base URL:
https://api.valyu.ai/v1 - Endpoint:
/search - Authentication: X-API-Key header
Architecture
scripts/
├── search # Bash wrapper
└── search.mjs # Node.js CLIDirect API calls using Node.js built-in fetch(), zero external dependencies.
Adding to Your Project
If you're building an AI project and want to integrate Clinical Trials Search directly into your application, use the Valyu SDK:
Python Integration
from valyu import Valyu
client = Valyu(api_key="your-api-key")
response = client.search(
query="your search query here",
included_sources=["valyu/valyu-clinical-trials"],
max_results=20
)
for result in response["results"]:
print(f"Title: {result['title']}")
print(f"URL: {result['url']}")
print(f"Content: {result['content'][:500]}...")TypeScript Integration
import { Valyu } from "valyu-js";
const client = new Valyu("your-api-key");
const response = await client.search({
query: "your search query here",
includedSources: ["valyu/valyu-clinical-trials"],
maxResults: 20
});
response.results.forEach((result) => {
console.log(`Title: ${result.title}`);
console.log(`URL: ${result.url}`);
console.log(`Content: ${result.content.substring(0, 500)}...`);
});See the Valyu docs for full integration examples and SDK reference.
#!/bin/bash
# Search CLI wrapper
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SCRIPT_PATH="${SCRIPT_DIR}/search"
# Special commands for discoverability
case "$1" in
--path|--location|--where)
echo "$SCRIPT_PATH"
exit 0
;;
--script-dir)
echo "$SCRIPT_DIR"
exit 0
;;
esac
node "${SCRIPT_DIR}/search.mjs" "$@"
#!/usr/bin/env node
/**
* ClinicalTrials Search via Valyu API
* Full-text search across ClinicalTrials with semantic search capabilities
*/
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
import { homedir } from 'os';
import { join } from 'path';
const VALYU_API_BASE = 'https://api.valyu.ai/v1';
const CONFIG_DIR = join(homedir(), '.valyu');
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
/**
* Get API key from multiple sources (in order of priority):
* 1. Environment variable (VALYU_API_KEY)
* 2. Config file (~/.valyu/config.json)
*/
function getApiKey() {
if (process.env.VALYU_API_KEY) {
return process.env.VALYU_API_KEY;
}
if (existsSync(CONFIG_FILE)) {
try {
const config = JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
if (config.apiKey) {
return config.apiKey;
}
} catch (e) {
// Ignore parse errors
}
}
return null;
}
/**
* Save API key to config file
*/
function saveApiKey(apiKey) {
if (!existsSync(CONFIG_DIR)) {
mkdirSync(CONFIG_DIR, { recursive: true });
}
let config = {};
if (existsSync(CONFIG_FILE)) {
try {
config = JSON.parse(readFileSync(CONFIG_FILE, 'utf-8'));
} catch (e) {
// Start fresh if parse fails
}
}
config.apiKey = apiKey;
writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
return true;
}
/**
* Return setup required response
*/
function setupRequiredResponse() {
return {
success: false,
setup_required: true,
message: "Valyu API key not configured. Get your free API key ($10 credits) at https://platform.valyu.ai"
};
}
/**
* Search ClinicalTrials via Valyu API
*/
async function searchClinicalTrials(query, maxResults = 10) {
const apiKey = getApiKey();
if (!apiKey) {
return setupRequiredResponse();
}
try {
const response = await fetch(`${VALYU_API_BASE}/search`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': apiKey
},
body: JSON.stringify({
query: query,
search_type: 'proprietary',
included_sources: ['valyu/valyu-clinical-trials'],
limit: maxResults
})
});
const data = await response.json();
if (!response.ok) {
return {
success: false,
error: data.detail || data.message || `HTTP ${response.status}`,
status: response.status
};
}
return {
success: true,
type: 'clinical_trials_search',
query: query,
result_count: data.results?.length || 0,
results: data.results || [],
cost: data.cost || 0
};
} catch (error) {
return {
success: false,
error: error.message
};
}
}
/**
* Setup command - save API key
*/
function setup(apiKey) {
if (!apiKey) {
return {
success: false,
error: "API key required. Usage: search setup <api-key>"
};
}
saveApiKey(apiKey);
return {
success: true,
type: 'setup',
message: "API key saved to ~/.valyu/config.json"
};
}
// Main CLI handler
const [,, command, ...args] = process.argv;
(async () => {
let result;
if (command === 'setup') {
result = setup(args[0]);
} else {
// Treat first arg as query, second as maxResults
const query = command || '';
const maxResults = args[0] ? parseInt(args[0], 10) : 10;
if (!query) {
result = {
success: false,
error: "Query required. Usage: search <query> [maxResults]"
};
} else {
result = await searchClinicalTrials(query, maxResults);
}
}
console.log(JSON.stringify(result, null, 2));
process.exit(result.success ? 0 : 1);
})();
Related skills
FAQ
What API key does clinical-trials-search require?
A Valyu API key from platform.valyu.ai, which comes with $10 free credits.
How is clinical-trials-search different from a parameter-based API?
It uses semantic search, so you pass natural-language queries instead of constructing search parameters.