Clinical trial signals, insider buying patterns, PDUFA catalysts, and AI-computed conviction scores for 981 biotech and healthcare companies — in a single REST API.
Two methods — pick what fits your stack.
Best for server-side integrations, scripts, and automated pipelines. Generate a key from your dashboard — one call, store it, use forever.
curl -H "X-API-Key: bts_live_..." \
"https://biotechsign.com/api/v2/company/AGEN"Best for browser-based apps or when you already have a BiotechSigns session token. Use the token returned on login — expires after 30 days.
curl -H "Authorization: Bearer <jwt>" \
"https://biotechsign.com/api/v2/screener?min_score=80"Three lines to get your first signal.
# Get a company with all derived signals
curl -H "X-API-Key: bts_live_your_key" \
"https://biotechsign.com/api/v2/company/AGEN"
# Screen for high-conviction names
curl -H "X-API-Key: bts_live_your_key" \
"https://biotechsign.com/api/v2/screener?min_score=75&min_phase3=1&min_insider_buys=200"
# Get upcoming PDUFA dates
curl -H "X-API-Key: bts_live_your_key" \
"https://biotechsign.com/api/v2/calendar?days=90"Every GET /api/v2/company/{ticker} response includes a derived object with computed metrics not available in raw data.
Start free. Scale when you need it. No rate-limit surprises.
Not financial advice. API data is for informational purposes only.
Base URL: https://biotechsign.com/api/v2
Every API response includes rate limit headers. When you exceed your daily limit, the API returnsHTTP 429 with a JSON error body.
# Response headers on every call
X-RateLimit-Limit: 100
HTTP/429 when limit exceeded:
{
"error": "rate_limit_exceeded",
"message": "Daily limit of 100 calls reached for free plan",
"calls_today": 100,
"limit": 100,
"upgrade_url": "https://biotechsign.com/app/developers"
}