ClinicalTrials.gov v2 + openFDA + ChEMBL koppelen tot een licentieschoon endpoint voor geneesmiddeleninformatie

Farmaceutische R&D, medische AI-startups en geneesmiddelenbewakingsteams willen allemaal hetzelfde: één endpoint dat studies, etiketten, bijwerkingen en bioactiviteit op een licentieschone manier ophaalt. Hier is de werkende architectuur, met de valkuilen die teams in productie hebben verrast.
TL;DR
- •ClinicalTrials.gov v2 (REST + JSON) verving in 2024 de verouderde v1 — het schema is schoner, maar paginering, optionele velden en historische drift verrassen nieuwe integrators.
- •openFDA dekt geneesmiddeletiketten (SPL), FAERS-bijwerkingsmeldingen en terugroepgegevens, gratis; beperkt tot 240 req/min zonder authenticatie, 120k/dag met een sleutel.
- •ChEMBL geeft je bioactiviteit (IC50, Ki, Kd, EC50), targets en assays — de structurele / mechanistische dimensie die andere databases missen.
- •De commerciële licentie van DrugBank is de valkuil: academisch gebruik is toegestaan; elk product, zelfs een kleine SaaS, valt onder commerciële licentievoorwaarden die de meeste bouwers pas lezen wanneer ze een aanmaning ontvangen.
- •API Pick Clinical Search verpakt ClinicalTrials, openFDA, ChEMBL en de farmacologie van DrugBank in één POST-endpoint — 30 credits per call, licentieschoon, alleen bij succes afgerekend.
De vorm van het probleem
Drie doelgroepen hebben, om verschillende redenen, uiteindelijk ongeveer dezelfde pijplijn voor geneesmiddelengegevens nodig:
- Biofarmaceutische R&D- en drug-repurposingteams willen bioactiviteitsgegevens (ChEMBL), studiegeschiedenis (ClinicalTrials.gov) en bijwerkingssignalen (FAERS) samengevoegd om een kandidaat te beoordelen.
- Medische AI-startups die chatbots of lagen voor klinische beslissingsondersteuning bouwen, hebben geneesmiddeletiketten (openFDA SPL) en studiegegevens samengevoegd nodig om LLM-antwoorden te verankeren in regelgevingsbronnen.
- Geneesmiddelenbewakingsteams willen FAERS plus de gestructureerde velden van geneesmiddeletiketten plus mechanisme-informatie uit ChEMBL/DrugBank om de plausibiliteit van een signaal te beoordelen.
Elk van deze doelgroepen koppelt uiteindelijk vier databases aan elkaar: ClinicalTrials.gov, openFDA, ChEMBL en DrugBank. Elke database heeft zijn eigen schema, rate limits en licentievoorwaarden. DrugBank is degene die bijt — de clausule over commercieel gebruik betrapt teams die het tijdens de ontwikkeling integreerden zonder de licentie te lezen, en het versturen van aanmaningen aan kleine SaaS-oprichters is een reëel gegeven.
Hier is de architectuur die we aanbevelen, inclusief een licentieschoon alternatief pad dat de DrugBank-valkuil vermijdt.
De vier bronnen, één alinea per stuk
ClinicalTrials.gov v2
US National Library of Medicine. Het definitieve register voor in de VS geregistreerde klinische studies en de de facto wereldwijde standaard. v2 verscheen in 2024 — REST + JSON, ter vervanging van het CSV/XML van de verouderde v1. Gratis, met rate limit (10 req/sec). Documentatie op clinicaltrials.gov/data-api/api. Sterke punten: gezaghebbend, volledig, geen licentieproblemen. Zwakke punten: schaarste van optionele velden bij oudere studies, migratiewrijving bij het schema voor teams die nog op v1 zitten.
openFDA
Openbare API beheerd door de FDA. Dekt geneesmiddeletiketten (SPL — Structured Product Labels), FAERS (Adverse Event Reporting System), terugroepgegevens en equivalenten voor voeding/medische hulpmiddelen. Gratis, beperkt tot 240 req/min zonder authenticatie en 120.000 req/dag met een API-sleutel. Sterke punten: gezaghebbende regelgevingsbron, gestructureerde gegevens, brede dekking. Zwakke punten: het parsen van SPL vereist begrip van HL7-conventies; de deduplicatie van FAERS is het probleem van de gebruiker.
ChEMBL
EBI / EMBL-EBI. Gecureerde bioactiviteitsdatabase — IC50-, Ki-, Kd-, EC50-metingen over verbindingen, targets en assays. Gratis, REST + JSON, geen hoofdpijn over rate limits bij matige volumes. Sterke punten: structurele en mechanistische gegevens die niets anders dekt. Zwakke punten: de focus ligt op onderzoeksniveau; de therapeutische/klinische mappings zijn gedeeltelijk.
DrugBank
Ontstaan aan de University of Alberta, nu commercieel. Geneesmiddel-targetmappings, farmacologie, geneesmiddelinteracties, polyfarmacologie. Academisch gebruik is gratis; commercieel gebruik vereist een betaalde licentie. De licentie is van toepassing op elk commercieel product, inclusief gratis SaaS-tools — lees de voorwaarden vóór integratie.
API Pick Clinical Search (licentieschoon alternatief)
Semantisch zoeken over ClinicalTrials.gov, FDA-geneesmiddeletiketten, ChEMBL-bioactiviteit en farmacologische metadata van DrugBank die wij licentiëren. JSON in / JSON uit, 30 credits per call (~$0,03), facturering alleen bij succes. De output is consistent met de voorwaarden voor regelgevings- en structurele gegevens; geen valkuil van een commerciële licentie voor eindgebruikers.
Naast elkaar
| ClinicalTrials.gov v2 | openFDA | ChEMBL | DrugBank | API Pick Clinical | |
|---|---|---|---|---|---|
| Dekking | Studieregister | Etiketten + FAERS + terugroepacties | Bioactiviteit, targets, assays | Geneesmiddelen + targets + interacties | Alle vier, semantisch |
| Formaat | REST + JSON | REST + JSON | REST + JSON | REST + JSON / SQL-dumps | JSON, vooraf gevormde snippets |
| Rate limit | 10 req/sec | 240/min zonder auth, 120k/dag met sleutel | Ruim | Afhankelijk van licentieniveau | Per call (niet per gebruiker) |
| Licentie | Publiek domein | Publiek domein | CC-BY-SA | Academisch gratis / commercieel betaald | API Pick TOS |
| Beste toepassing | Studieprotocollen, sponsordesambiguatie | Regelgevingsetiketten, BW-signalen | Mechanistisch / structureel | Geneesmiddelinteracties, polyfarm. | AI-agent-ophaling over alles |
Werkende code: elke bron
ClinicalTrials.gov v2
import requests
# Trials for a specific condition + intervention
r = requests.get(
"https://clinicaltrials.gov/api/v2/studies",
params={
"query.cond": "non-small cell lung cancer",
"query.intr": "pembrolizumab",
"filter.overallStatus": "RECRUITING",
"pageSize": 25,
"format": "json",
},
)
studies = r.json()["studies"]
for s in studies[:3]:
proto = s["protocolSection"]
nct = proto["identificationModule"]["nctId"]
title = proto["identificationModule"]["briefTitle"]
sponsor = proto["sponsorCollaboratorsModule"]["leadSponsor"]["name"]
print(f"{nct}: {title} (sponsor: {sponsor})")openFDA: geneesmiddeletiket + FAERS-signaal
import requests
from collections import Counter
# Drug label lookup
r = requests.get(
"https://api.fda.gov/drug/label.json",
params={"search": "openfda.brand_name:Lipitor", "limit": 1},
).json()
label = r["results"][0]
print("Indications:", label.get("indications_and_usage", ["—"])[0][:200])
# FAERS — most reported adverse events for atorvastatin
r = requests.get(
"https://api.fda.gov/drug/event.json",
params={
"search": 'patient.drug.medicinalproduct:"ATORVASTATIN CALCIUM"',
"count": "patient.reaction.reactionmeddrapt.exact",
"limit": 10,
},
).json()
print("Top reported reactions:")
for r_ in r["results"]:
print(f" {r_['term']}: {r_['count']}")ChEMBL: bioactiviteit van een target
import requests
# Target search → activity for a specific target
r = requests.get(
"https://www.ebi.ac.uk/chembl/api/data/activity.json",
params={
"target_chembl_id": "CHEMBL204", # PD-L1
"standard_type": "IC50",
"limit": 25,
},
).json()
for a in r["activities"][:5]:
cid = a["molecule_chembl_id"]
val = a["standard_value"]
unit = a["standard_units"]
print(f"{cid}: IC50 = {val} {unit}")API Pick Clinical Search: één call, alle bronnen
import requests
r = requests.post(
"https://www.apipick.com/api/search/clinical",
headers={"x-api-key": "pk_yourkey"},
json={"query": "PD-L1 inhibitors in NSCLC trials and adverse events"},
)
for hit in r.json()["results"][:5]:
print(hit["title"], "→", hit["url"], f"(source: {hit.get('source')})")
# Returns ranked semantic matches across trials + labels + bioactivity.
# 30 credits per call, only on HTTP 200.Drie patronen die in productie opduiken
1. Screening voor drug repurposing
Neem een goedgekeurd geneesmiddel. Haal het werkingsmechanisme op (ChEMBL-targets), de huidige indicaties (openFDA-etiket) en alle studies die het testen bij nieuwe indicaties (ClinicalTrials.gov). Kruisverwijs met FAERS naar veiligheidssignalen bij de nieuwe indicatie. De agent stelt alle vier de stukken samen en brengt kandidaten aan het licht die de tijd van een farmacoloog waard zijn.
2. Triage van geneesmiddelenbewakingssignalen
Een uurlijkse cron haalt nieuwe FAERS-meldingen op voor een watchlist van geneesmiddelen. Bereken de Reporting Odds Ratio ten opzichte van de rest van de database. Markeer elk signaal waarbij ROR > 2 met een 95%-BI dat 1 uitsluit. Combineer met ClinicalTrials.gov om te controleren of de gebruiksindicatie on-label of off-label is. Output: een geprioriteerde lijst voor het ochtendoverzicht van het team — analoog aan het ochtendbriefingpatroon voor nieuws.
3. Verankering van een medische AI-assistent
Haal voor elk geneesmiddelgerelateerd antwoord dat de assistent geeft het openFDA-etiket op en gebruik het als de gezaghebbende grondwaarheid. Citeer de sectie van het FDA-etiket expliciet. Weiger doseringsgerelateerde vragen te beantwoorden wanneer het etiket niet kan worden opgehaald. Dit is het op citaten verankerde patroon uit het stuk over Britse jurisprudentie, toegepast op de geneeskunde — met nog hogere inzet.
De DrugBank-valkuil
Het is de moeite waard om dit nog eens te benadrukken. De academische licentie van DrugBank is welbekend, maar de voorwaarden verschuiven op het moment dat je iemand geld vraagt voor iets dat de gegevens gebruikt — inclusief een gratis product waarvan je de gebruikers later naar betaald wilt converteren. Diverse kleine SaaS-oprichters hebben dit op de harde manier ontdekt nadat er een aanmaning in hun inbox belandde.
Twee schone paden:
- Betaal de commerciële licentie. De standaardprijzen zijn ondoorzichtig; reken op onderhandelen. Voor volwassen producten met financiering is dit het juiste antwoord, omdat de geneesmiddelinteractiegegevens van DrugBank moeilijk te evenaren zijn.
- Gebruik licentieschone alternatieven voor de vroege fasen. ChEMBL dekt het merendeel van de mechanistische gegevens. RxNorm + DailyMed (NIH) dekken de normalisatie van geneesmiddelnamen en de etiketten. FAERS dekt de bijwerkingen. De combinatie mist enkele DrugBank-specifieke gegevens (rijke interactietabellen, polyfarmacologie) maar volstaat voor de meeste producten in een vroege fase. API Pick Clinical Search verpakt de licentieschone subset voor je.
Waar dit zich generaliseert
Het patroon 'koppel vier openbare databases aan elkaar met afhandeling van rate limits en licentiediscipline' duikt op in veel gereguleerde verticals — financiële deponeringen (SEC + earnings-transcripten + aandelenstatistieken), octrooien (USPTO + EPO + WIPO + JPO + KIPO + CNIPA), juridisch (Find Case Law + legislation.gov.uk + buitenlandse equivalenten). De variant met geneesmiddelengegevens is vooral ongebruikelijk omdat de licentiebasis meer omstreden is. Elke andere as — schemadiversiteit, rate limits, deduplicatie, mapping van identifiers tussen bronnen — generaliseert wel.
Voor ophaling in één call over de licentieschone bronnen van geneesmiddelengegevens verzorgt API Pick Clinical Search de koppeling. Voor de diepere integraties (volledige SPL-parsing, berekening van FAERS-signalen, ChEMBL-targetbomen) ga je nog steeds rechtstreeks naar elke bron. Kies het juiste abstractieniveau voor elk deel van de pijplijn.
Veelgestelde vragen
Wat is er in ClinicalTrials.gov v2 veranderd waardoor pijplijnen breken?
Drie dingen. (1) Endpointstructuur — v2 is REST + JSON in plaats van het CSV/XML van v1. (2) Veldnamen — de nieuwe protocolSection-wrapper en de overgang van snake_case naar camelCase vergen de meest voorkomende refactor. (3) Vulling van optionele velden — veel velden die als 'beschikbaar' zijn gedocumenteerd, zijn schaars gevuld, vooral bij oudere studies. De migratie kost meestal 2-3 dagen plus een week bugfixing naarmate randgevalstudies opduiken.
Hoe zit het met de licentie van DrugBank?
DrugBank is gratis voor academisch en persoonlijk onderzoek. Elk commercieel gebruik — waaronder een gratis SaaS-product, de MVP van een startup of een tool die in een betaalde consultancy wordt gebruikt — valt onder de commerciële licentievoorwaarden van DrugBank. De Thinklab-post 'Sounding the alarm on DrugBank's new license' van enkele jaren geleden is nog steeds het canonieke stuk. Veel bouwers integreren DrugBank tijdens de ontwikkeling zonder te beseffen dat de licentie van toepassing wordt op het moment dat ze een product uitbrengen. Lees de voorwaarden vóór integratie, of gebruik een licentieschoon alternatief.
Hoe doe ik basale signaaldetectie voor geneesmiddelenbewaking?
De standaardmaten voor disproportionaliteit — Reporting Odds Ratio (ROR), Proportional Reporting Ratio (PRR), Bayesiaanse BCPNN — over de FAERS-bijwerkingendatabase. Opensourcebibliotheken zoals vigipy implementeren deze. De valkuil is de deduplicatie van FAERS: veel meldingen zijn dubbele indieningen van dezelfde casus door verschillende partijen; bibliotheken zoals VigiMatch van de WHO handelen dit af, maar daar betaal je voor. Voor de meeste medische AI-toepassingen volstaat het FAERS-endpoint van openFDA plus een eenvoudige ROR-berekening om signalen aan het licht te brengen die het onderzoeken waard zijn.
Is API Pick Clinical Search HIPAA-compliant?
De databronnen die we verpakken (ClinicalTrials.gov, openFDA, ChEMBL, farmacologische metadata van DrugBank) bevatten geen beschermde gezondheidsinformatie — ze dekken studieprotocollen, geneesmiddeletiketten, geaggregeerde bijwerkingen en structurele/bioactiviteitsgegevens. HIPAA-naleving is van toepassing op PHI, die niet in onze index voorkomt. Als je een downstream-product bouwt dat wél PHI verwerkt (bijv. klinische beslissingsondersteuning over patiëntendossiers), moet je dat apart afhandelen. De gegevens die door ons endpoint stromen, zijn consistent met openbare regelgevingsgegevens.
Kan de output hiervan worden gebruikt voor klinische beslissingen?
Nee. De output van elke ophaal-API is informatief; het vormt geen medisch advies of klinische beslissingsondersteuning. Gebruik de gegevens ter ondersteuning van gekwalificeerd personeel — een apotheker, arts, regelgevingsspecialist — niet ter vervanging daarvan. Dit geldt voor API Pick Clinical Search en voor elke andere API in dit domein.
API's gebruikt in dit artikel
Sarah Choy is de CEO van API Pick. Ze schrijft over het bouwen van productieklare API's voor AI-agents en LLM-workflows.