Lung Cancer Foundation of America
Next Breath
Clinical Trial Finder
LCFA Next Breath · Developer API

Build on the LCFA trial database

A public REST API over 14,500+ lung cancer clinical trials — sourced from ClinicalTrials.gov and 19 pharmaceutical registries, enriched with structured biomarkers and geocoded sites. Free for non-commercial use; request a key below.

Quickstart

Every request (except this page and /api/v1/docs) needs an API key. Pass it as a bearer token:

sh
curl -H "Authorization: Bearer lcfa_pk_..." \
  "https://lcfa-trial-finder.vercel.app/api/v1/trials?limit=5"

Successful responses use a consistent envelope:

json
{
  "data": [ /* array of trial objects */ ],
  "meta": {
    "total": 14534,
    "limit": 50,
    "offset": 0,
    "quota_used": 17,
    "quota_limit": 1000
  }
}

Check X-RateLimit-Limit and X-RateLimit-Remaining response headers, or hit /api/v1/meta for a quota snapshot without spending a call.

Rate limits

Daily quotas reset at UTC midnight. When you hit the limit you'll get a 429 with Retry-After set to seconds until reset. Tiers:

TierDaily quotaWho it's for
Free100 requests/dayFor personal or evaluation use. Any researcher or individual developer.
Standard1,000 requests/dayFor patient-advocacy apps, research dashboards, and production nonprofit tools.
Partner10,000 requests/dayNegotiated. For high-volume integrators and LCFA partner organizations.

Error responses: 401 missing/invalid key · 403 revoked · 429 quota exceeded.

Endpoints

GET/api/v1/trials

Search trials. Supports diagnosis, location, biomarker, mutation, phase, status, age/gender, and ZIP-radius filters. Paginated. Returns a 5-location sample per trial.

Query parameters (16)
diagnosisType
nsclc | sclc | unknown (default: unknown)
cancerStage
SCLC only: limited | extensive — restricts results to that stage. Inclusive: rows that mention the chosen stage OR have no stage signal at all are included; rows that explicitly mention the opposite stage are excluded.
country
us | international
state
Two-letter US state code (e.g. CA)
gender
male | female
age
Integer (years)
trialPhase
Phase I | Phase II | Phase III | Phase IV | Interventional | Observational | All Phases
trialStatus
Recruiting | Enrolling | Active | Completed | Closed
statusBuckets
Comma-separated: recruiting,active,completed,unknown (default: recruiting,active,unknown)
biomarkers
Comma-separated: EGFR, ALK, ROS1, KRAS, BRAF, MET, RET, NTRK, HER2, PD-L1
mutations
biomarker:mutationId pairs, e.g. EGFR:L858R,KRAS:G12C
firstPostedAfter
ISO date (YYYY-MM-DD) — only trials first posted on/after this date
zip
US ZIP code (5 digits) — requires radius
radius
Miles (max 500) — requires zip
limit
Integer 1-200 (default 50)
offset
Integer (default 0)
GET/api/v1/trials/:nct_id

Full detail for a single trial, including inclusion/exclusion criteria, outcomes, all locations with lat/lng, and structured biomarker requirements.

GET/api/v1/sources

List of data sources (ClinicalTrials.gov + 19 pharma registries) with approximate trial counts.

GET/api/v1/meta

Returns the calling key's label, tier, and today's quota usage. Does NOT count against the quota — safe to poll.

GET/api/v1/docs

Machine-readable JSON version of this documentation. Unauthenticated.

Examples

Save your key to an env var first (export LCFA_KEY=lcfa_pk_...), then:

Recruiting EGFR-L858R trials in California

Most common concrete use-case — biomarker + location filter.

sh
curl -H "Authorization: Bearer $LCFA_KEY" \
  "https://lcfa-trial-finder.vercel.app/api/v1/trials?trialStatus=Recruiting&biomarkers=EGFR&mutations=EGFR:L858R&state=CA&limit=10"
Trials within 50 miles of ZIP 94103

ZIP-radius search. US only; 97.7% of trial sites are geocoded.

sh
curl -H "Authorization: Bearer $LCFA_KEY" \
  "https://lcfa-trial-finder.vercel.app/api/v1/trials?zip=94103&radius=50&limit=20"
Full detail for one trial

Includes inclusion/exclusion criteria, all sites with lat/lng, and biomarkers.

sh
curl -H "Authorization: Bearer $LCFA_KEY" \
  "https://lcfa-trial-finder.vercel.app/api/v1/trials/NCT02193282"
Check your remaining quota

Does NOT count against your daily quota. Safe to poll.

sh
curl -H "Authorization: Bearer $LCFA_KEY" \
  "https://lcfa-trial-finder.vercel.app/api/v1/meta"

Response fields

List endpoint

GET /api/v1/trials returns each trial with these fields:

nct_idofficial_titlebrief_summaryphasestatussponsorconditionsurlpharma_urlpharma_source_slugstudy_typestudy_startfirst_postedprimary_completionlast_updatedlocation_countlocations_sample

Detail endpoint

GET /api/v1/trials/:nct_id adds these on top of the list fields:

detailed_descriptionconditions_arrinterventionenrollmentage_minage_maxsexes_eligibleinclusion_criteriaexclusion_criteriamesh_termskeywordsstudy_completionsourceplain_language_summaryprimary_outcomessecondary_outcomesstudy_documentspublicationslocationsbiomarkers

Data sources + freshness

Trial records come from ClinicalTrials.gov (NIH) plus 19 pharmaceutical sponsor registries (AstraZeneca, Genentech/Roche, Pfizer, Merck/Daiichi, Novartis, and others). The dataset is refreshed monthly via an orchestrated pipeline (CT.gov API sync → pharma CSV import → HTTP + Firecrawl scrape → GPT-4o biomarker extraction → Nominatim geocoding → auto-flag).

Current coverage: 14,534 trials, 376K trial sites (97.7% geocoded), 7,704 structured biomarker requirements across 3,383 trials, with mutation-level granularity for EGFR, KRAS, BRAF, MET, ALK/ROS1/RET fusions, and PD-L1 expression.

Fetch GET /api/v1/sources for a live list of sources with per-source trial counts.

Terms of use

  • Attribution is required: “Trial data via LCFA Next Breath (lcfa-trial-finder.vercel.app)” on any public surface using this data.
  • Do not present API output as medical advice. Always link patients back to ClinicalTrials.gov or the original sponsor page (we include the url field on every trial).
  • Don't re-host the full dataset as a competing database. Building search, decision support, notification, and analytics tools is encouraged.
  • Respect your quota. If you need more, request a Partner tier.
Request a key

Ready to build? Email us.

We manually provision every key — this keeps the service focused on legitimate patient-advocacy, research, and nonprofit use. Tell us who you are and what you're building, and we'll usually respond within a few business days.

Email trials@lungcancerfoundation.org

Include: organization name, what you're building, and expected daily request volume.

← Patient-facing searchMachine-readable docs (JSON)Privacy policy