Healthcare

Clinical Trial

/extract/json

Clinical trial registration and status information from ClinicalTrials.gov or equivalent registry.

Download the schemahealthcare/clinical-trial.json

clinical-trial.schema

// names marked ? are optional

nct_id:string// ClinicalTrials.gov NCT identifier. Commonly found in: ClinicalTrials.gov, trial registry.
title:string// Official title of the clinical trial. Commonly found in: ClinicalTrials.gov title field.
sponsor_name:string// Primary sponsor organization. Commonly found in: ClinicalTrials.gov sponsor field.
sponsor_type?:string// Type of primary sponsor. Commonly found in: ClinicalTrials.gov sponsor class. One of: industry, academic, nih, other.
collaborators?:string[]// List of collaborating organizations. Commonly found in: ClinicalTrials.gov collaborators section.
status:string// Current recruitment status of the trial. Commonly found in: ClinicalTrials.gov status field. One of: recruiting, active_not_recruiting, completed, terminated, withdrawn, suspended, other.
phase?:string// Clinical trial phase. Commonly found in: ClinicalTrials.gov phase field. One of: 1, 1_2, 2, 2_3, 3, 4, na, other.
study_type?:string// Type of study design. Commonly found in: ClinicalTrials.gov study type field. One of: interventional, observational, other.
conditions:string[]// Medical conditions or diseases being studied. Commonly found in: ClinicalTrials.gov conditions section.
interventions?:object[]// Interventions being tested. Commonly found in: ClinicalTrials.gov interventions section.
type:string// Type of intervention (e.g., Drug, Device, Procedure).
name:string// Name of the intervention.
description?:string// Description of the intervention.
primary_outcomes?:object[]// Primary outcome measures. Commonly found in: ClinicalTrials.gov outcome measures section.
measure:string// Description of the outcome measure.
timeframe?:string// Time point at which the outcome is measured.
enrollment_target?:number// Target number of participants. Commonly found in: ClinicalTrials.gov enrollment field.
enrollment_actual?:number// Actual number of participants enrolled. Commonly found in: ClinicalTrials.gov enrollment field.
start_date?:string// Study start date. Commonly found in: ClinicalTrials.gov dates section.
primary_completion_date?:string// Primary completion date. Commonly found in: ClinicalTrials.gov dates section.
locations?:object[]// Study locations. Commonly found in: ClinicalTrials.gov locations section.
facility?:string// Name of the facility.
city:string// City of the facility.
country:string// Country of the facility.
status?:string// Recruitment status at this location.
eligibility_min_age?:string// Minimum age for eligibility. Commonly found in: ClinicalTrials.gov eligibility criteria.
eligibility_max_age?:string// Maximum age for eligibility. Commonly found in: ClinicalTrials.gov eligibility criteria.
eligibility_sex?:string// Sex eligibility requirement. Commonly found in: ClinicalTrials.gov eligibility criteria.
results_available?:boolean// Whether results have been posted. Commonly found in: ClinicalTrials.gov results section.
page_title?:string// Title of the source page. Tabstack auto-fills this from page metadata when left empty.
favicon?:string// Favicon URL of the source page. Tabstack auto-fills this from page metadata when left empty.

Try it live

A sample Clinical Trial document, generated from the schema. Edit it, or paste a real response, and see it checked against the schema instantly. It runs in your browser, nothing is sent anywhere.

your-output.json
validation

Valid, matches Clinical Trial

Every required field is present and each value matches its type. Extra fields are allowed. A field the page does not carry is not guaranteed to come back as null, so check values rather than only checking for null.

/extract/json

Copy-paste usage

The same call in TypeScript, Python, and curl. Point it at your own URL and go. The schema drives the response, so you get back the fields you asked for instead of a page to parse.

Features

  • Typed TypeScript and Python SDKs
  • One call, no parsing code and no second LLM pass
  • The same field names on every request, even when the page layout changes
clinical-trial.ts
// curl -sfLO https://raw.githubusercontent.com/Mozilla-Ocho/tabstack-schemas/main/healthcare/clinical-trial.json
import Tabstack from '@tabstack/sdk'
import schema from './clinical-trial.json' with { type: 'json' }

const client = new Tabstack() // reads TABSTACK_API_KEY from the environment

try {
  const data = await client.extract.json({
    url: 'https://example.org/clinical-trial/NCT00000000',
    json_schema: schema,
    effort: 'standard', // 'min' | 'standard' | 'max'
  })

  console.log(data)
} catch (err) {
  console.error('Extraction failed:', err)
}

Ship this schema in one call.

Pass a URL, get matching JSON back. Free to start, no extraction layer to maintain.