[ blog · tutorial ]11 min read

ClinicalTrials.gov v2 + openFDA + ChEMBL をライセンスクリーンな創薬インテリジェンスエンドポイントに束ねる

Sarah Choy公開: 2026年5月3日読了 11 分
ClinicalTrials.gov v2 + openFDA + ChEMBL をライセンスクリーンな創薬インテリジェンスエンドポイントに束ねる

製薬の R&D、医療 AI スタートアップ、ファーマコビジランスチーム — 全員が同じものを欲しがる:治験・添付文書・有害事象・バイオアクティビティをライセンスクリーンに 1 本のエンドポイントで引ける仕組み。本番でチームを驚かせてきた落とし穴も含め、動くアーキテクチャを示す。

要点

  • ClinicalTrials.gov v2(REST + JSON)は 2024 年に旧 v1 を置き換えた — スキーマはきれいになったが、ページネーション・任意フィールド・過去データのずれが新規統合者を引っかける。
  • openFDA は医薬品添付文書(SPL)、FAERS の有害事象報告、リコールデータを無料でカバー。レート制限は未認証で 240 req/min、キーありで 120k/day。
  • ChEMBL はバイオアクティビティ(IC50、Ki、Kd、EC50)、ターゲット、アッセイを提供する — 他のデータベースに欠ける構造的・機序的な次元。
  • DrugBank の商用ライセンスが罠:学術利用は許可されるが、小規模 SaaS であってもあらゆるプロダクトは商用ライセンス条項の対象になり、多くの開発者は通知が届くまで読まない。
  • API Pick Clinical Search は ClinicalTrials、openFDA、ChEMBL、DrugBank の薬理データを 1 本の POST エンドポイントに束ねる — 1 回 30 credits、ライセンスクリーン、成功時のみ課金。

問題の形

3 つの層が、理由はそれぞれ違えど、ほぼ同じ創薬データパイプラインを必要とする:

  • バイオ製薬の R&D とドラッグリパーパシングのチーム は、候補を評価するためにバイオアクティビティデータ(ChEMBL)、治験履歴(ClinicalTrials.gov)、有害事象シグナル(FAERS)を結合したい。
  • 医療 AI スタートアップ は、チャットボットや臨床判断支援レイヤーを作るために、LLM の回答を規制ソースに根拠づける目的で医薬品添付文書(openFDA SPL)と治験データを結合したい。
  • ファーマコビジランスチーム は、シグナルの妥当性を評価するために、FAERS に加えて添付文書の構造化フィールドと、ChEMBL/DrugBank の機序情報を欲しがる。

これらの層はいずれも結局、4 つのデータベース — ClinicalTrials.gov、openFDA、ChEMBL、DrugBank — を束ねることになる。各データベースには独自のスキーマ、レート制限、ライセンス条項がある。噛みつくのは DrugBank だ — その商用利用条項は、ライセンスを読まずに開発中に統合してしまったチームを引っかけるし、小規模 SaaS の創業者に通知が届くのは現実に起きていることだ。

ここで当社が推奨するアーキテクチャを示す。DrugBank の罠を避けるライセンスクリーンな代替経路も含めて。

4 つのソース、それぞれ一段落で

ClinicalTrials.gov v2

米国国立医学図書館。米国登録の臨床試験の決定版レジストリであり、事実上のグローバル標準。v2 は 2024 年にローンチ — REST + JSON で、旧 v1 の CSV/XML を置き換えた。無料、レート制限あり(10 req/sec)。ドキュメントは clinicaltrials.gov/data-api/api。強み:権威性、網羅性、ライセンス問題なし。弱み:古い試験での任意フィールドのまばらさ、まだ v1 にいるチームのスキーマ移行の摩擦。

openFDA

FDA が運営する公開 API。医薬品添付文書(SPL — Structured Product Labels)、FAERS(有害事象報告システム)、リコールデータ、食品/医療機器の同等物をカバー。無料、レート制限は未認証で 240 req/min、API キーありで 120,000 req/day。強み:権威ある規制ソース、構造化データ、広いカバレッジ。弱み:SPL のパースには HL7 規約の理解が必要、FAERS の重複排除は利用者側の課題。

ChEMBL

EBI / EMBL-EBI。キュレートされたバイオアクティビティデータベース — 化合物・ターゲット・アッセイにまたがる IC50、Ki、Kd、EC50 の測定値。無料、REST + JSON、中程度の量ならレート制限の頭痛なし。強み:他に類のない構造的・機序的データ。弱み:焦点が研究グレードで、治療的/臨床的なマッピングは部分的。

DrugBank

アルバータ大学発、現在は商用。薬物-ターゲットのマッピング、薬理、薬物間相互作用、ポリファーマコロジー。学術利用は無料、商用利用は有料ライセンスが必要。ライセンスは無料の SaaS ツールを含むあらゆる商用プロダクトに適用される — 統合前に条項を読むこと。

ClinicalTrials.gov、FDA 医薬品添付文書、ChEMBL バイオアクティビティ、そして当社がライセンスを取得した DrugBank 薬理メタデータを横断するセマンティック検索。JSON in / JSON out、1 回 30 credits(約 $0.03)、成功時のみ課金。出力は規制・構造データの条項と整合しており、エンドユーザーにとって商用ライセンスの罠がない。

横並び比較

執筆時点のスナップショット。商用統合の前に最新のレート制限とライセンスを確認してください。
ClinicalTrials.gov v2openFDAChEMBLDrugBankAPI Pick Clinical
カバレッジ治験レジストリ添付文書 + FAERS + リコールバイオアクティビティ、ターゲット、アッセイ薬物 + ターゲット + 相互作用上記 4 つすべて、セマンティック
形式REST + JSONREST + JSONREST + JSONREST + JSON / SQL ダンプJSON、スニペット整形済み
レート制限10 req/sec未認証 240/min、キーあり 120k/day寛容ライセンス階層依存呼び出し単位(ユーザー単位なし)
ライセンスパブリックドメインパブリックドメインCC-BY-SA学術無料 / 商用有料API Pick TOS
最適用途治験プロトコル、スポンサー名寄せ規制添付文書、AE シグナル機序的 / 構造的薬物間相互作用、ポリファーマシー全ソースに対する AI エージェント検索

動くコード:各ソース

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:医薬品添付文書 + FAERS シグナル

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:ターゲットのバイオアクティビティ

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:1 回の呼び出しで全ソース

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.

本番で出てくる 3 つのパターン

1. ドラッグリパーパシングのスクリーニング

承認済みの薬を 1 つ取る。その機序(ChEMBL のターゲット)、現在の適応(openFDA の添付文書)、新適応で試している治験(ClinicalTrials.gov)を引く。新適応における安全性シグナルを FAERS と相互参照する。エージェントが 4 つのピースすべてを組み立て、薬理学者の時間を割く価値のある候補を浮かび上がらせる。

2. ファーマコビジランスのシグナルトリアージ

毎時の cron が、ウォッチリストの薬について新しい FAERS 報告を引く。データベース全体に対して Reporting Odds Ratio を計算する。ROR > 2 かつ 95% CI が 1 を含まないシグナルにフラグを立てる。使用適応がオンラベルかオフラベルかを確認するために ClinicalTrials.gov と組み合わせる。チームの朝のレビュー向けにランク付きリストを出力する — ニュースの 朝のブリーフィングパターン に類似している。

3. AI 医療アシスタントの根拠づけ

アシスタントが返す薬関連の回答すべてについて、openFDA の添付文書を引き、それを権威ある根拠(グラウンドトゥルース)として使う。FDA 添付文書のセクションを明示的に引用する。添付文書が取得できないときは用量に関する質問への回答を拒否する。これは 英国判例法の解説 の引用根拠づけパターンを医療に適用したもの — しかも賭け金はさらに高い。

DrugBank の罠

改めて強調しておく価値がある。DrugBank の学術ライセンスはよく知られているが、その条項は、データを使う何かに対して誰かから金を取った瞬間に変わる — 後で有料に転換するつもりのユーザーを持つ無料プロダクトも含めて。複数の小規模 SaaS 創業者が、受信箱に通知が届いてから痛い目に遭ってこれを知った。

クリーンな道は 2 つ:

  • 商用ライセンスを払う。 標準価格は不透明で、交渉前提だと思っておくこと。資金のある成熟したプロダクトには、DrugBank の薬物間相互作用データは代替しにくいので、これが正解だ。
  • 初期段階ではライセンスクリーンな代替を使う。 ChEMBL が機序データのほとんどをカバーする。RxNorm + DailyMed(NIH)が薬名の正規化と添付文書をカバーする。FAERS が有害事象をカバーする。この組み合わせでは DrugBank 固有のデータ(リッチな相互作用テーブル、ポリファーマコロジー)の一部は欠けるが、ほとんどの初期段階プロダクトには十分だ。API Pick Clinical Search がライセンスクリーンなサブセットをあなたの代わりに束ねる。

これが一般化するところ

「レート制限対応とライセンス規律を伴って 4 つの公開データベースを束ねる」というパターンは、多くの規制バーティカルに現れる — 金融開示(SEC + 決算トランスクリプト + 株式統計)、特許(USPTO + EPO + WIPO + JPO + KIPO + CNIPA)、法律(Find Case Law + legislation.gov.uk + 外国の同等物)。創薬データ版が特殊なのは、主にライセンスの足場がより争われている点だ。それ以外の軸 — スキーマの多様性、レート制限、重複排除、ソース横断の識別子マッピング — はすべて一般化する。

ライセンスクリーンな創薬データソースを横断する 1 回の呼び出しでの検索なら、API Pick Clinical Search が束ね込みをやる。より深い統合(完全な SPL パース、FAERS シグナル計算、ChEMBL ターゲットツリー)は、依然として各ソースに直接当たる。パイプラインの各部分に対して、適切な抽象度を選ぼう。

よくある質問

ClinicalTrials.gov v2 で何が変わってパイプラインを壊すのか?

3 つ。(1) エンドポイント構造 — v2 は v1 の CSV/XML ではなく REST + JSON。(2) フィールド名 — 新しい protocolSection ラッパーと snake_case から camelCase への変更が最も多いリファクタ。(3) 任意フィールドの充足度 — 「利用可能」と文書化されているフィールドの多くが、特に古い試験ではまばらにしか埋まっていない。移行は通常 2〜3 日、加えてエッジケースの試験が出てくるにつれてバグ修正に 1 週間ほどかかる。

DrugBank のライセンスはどうなっているのか?

DrugBank は学術および個人研究には無料。無料の SaaS プロダクト、スタートアップの MVP、有料コンサルで使うツールを含む、あらゆる商用利用は DrugBank の商用ライセンス条項の対象になる。数年前の Thinklab の記事「Sounding the alarm on DrugBank's new license」が今も決定版の解説だ。多くの開発者は開発中に DrugBank を統合し、プロダクトを出荷した瞬間にライセンスが適用されることに気づかない。統合前に条項を読むか、ライセンスクリーンな代替を使うこと。

基本的なファーマコビジランスのシグナル検出はどうやるのか?

標準的な不均衡指標 — Reporting Odds Ratio(ROR)、Proportional Reporting Ratio(PRR)、ベイズ的な BCPNN — を FAERS の有害事象データベース上で計算する。vigipy のようなオープンソースライブラリがこれらを実装している。罠は FAERS の重複排除:多くの報告は同一症例を異なる当事者が重複提出したものだ。WHO の VigiMatch のようなライブラリがこれを扱うが、相応のコストがかかる。多くの医療 AI ユースケースでは、openFDA の FAERS エンドポイント + シンプルな ROR 計算で、調査に値するシグナルを浮かび上がらせるには十分。

API Pick Clinical Search は HIPAA 準拠か?

当社がラップするデータソース(ClinicalTrials.gov、openFDA、ChEMBL、DrugBank の薬理メタデータ)には保護対象保健情報(PHI)は含まれない — 試験プロトコル、医薬品添付文書、有害事象の集計、構造・バイオアクティビティデータをカバーするものだ。HIPAA 準拠は PHI に適用されるが、それは当社のインデックスには現れない。PHI を扱う下流プロダクト(例:患者記録に対する臨床判断支援)を作るなら、それは別途あなたが対応する必要がある。当社のエンドポイントを流れるデータは公開された規制データと整合している。

この出力を臨床判断に使えるか?

使えない。どの検索 API の出力も情報提供にすぎず、医療アドバイスや臨床判断支援を構成しない。データは、薬剤師・医師・規制スペシャリストといった有資格者を補助するために使うものであり、彼らを置き換えるためではない。これは API Pick Clinical Search にも、この領域の他のあらゆる API にも当てはまる。

この記事で使われている API

Sarah Choy
執筆
Sarah Choy
CEO, API Pick

API Pick の CEO。AI エージェントと LLM ワークフロー向けの本番運用可能な API について執筆。