Skip to main content

Alternative data

Registry-grade alt-data tied to the parent entity — trials, FDA events, federal-court litigation, and government contracts. Each is a nested sub-graph on Entity, so a single batch request can mix market data, regulatory, and alt-data without extra round trips.

Sub-graphDefault relevance
clinicalTrialsPharma / biotech sponsors & collaborators
fdaEventsDrug & device manufacturers
litigationAny US-party entity
governmentContractsAny federal-contractor entity

All four sub-graphs return [] (not null) when the entity is outside the relevant sector — no client-side branching needed.

Clinical trials

Entity.clinicalTrials(filter: ClinicalTrialFilterInput) returns registered clinical-trial studies where the entity is a lead sponsor or collaborator.

{
entityByTicker(ticker: "MRNA") {
clinicalTrials(filter: { phase: "PHASE3", status: "RECRUITING", limit: 5 }) {
nctId
title
phase
status
conditions
interventions
startDate
enrollment
}
}
}

Filter dimensions: phase, status, since/until (on startDate), limit, offset, sort.

FDA adverse events & recalls

Entity.fdaEvents(filter: FdaEventFilterInput) unifies three FDA streams — drug adverse events, device adverse events, and drug recalls — under one typed feed.

{
entityByTicker(ticker: "PFE") {
fdaEvents(filter: { types: [DRUG_RECALL], limit: 5 }) {
id
type
reportDate
severity
summary
product
}
}
}

severity is the FDA recall class (CLASS I / II / III) for recalls, or the most severe outcome flag for adverse events. type is the discriminator between the three streams.

Federal court litigation

Entity.litigation(filter: LitigationFilterInput) returns federal court dockets where the entity appears as a party. Use onlyActive: true to filter out terminated cases.

{
entityByTicker(ticker: "GOOG") {
litigation(filter: {
onlyActive: true
natureOfSuit: "PATENT"
limit: 5
}) {
id
caseName
court
dateFiled
docketNumber
natureOfSuit
absoluteUrl
}
}
}

court and natureOfSuit are case-insensitive substring matches, so "N.D. Cal" and "patent" both work.

Government contracts

Entity.governmentContracts(filter: GovernmentContractFilterInput) returns federal contract awards where the entity is the recipient. Amounts are nullable — values are redacted on some records.

{
entityByTicker(ticker: "LMT") {
governmentContracts(filter: { minAmount: 1000000, limit: 5 }) {
awardId
recipient
actionDate
amount
agency
awardType
description
}
}
}

Combining alt-data in one request

The whole point of sub-graphs — pull trials, FDA events, litigation and contracts in a single round trip.

{
entitiesByTickers(tickers: ["MRNA", "PFE", "LMT"]) {
name
tickers
clinicalTrials(filter: { status: "RECRUITING", limit: 3 }) { nctId title phase }
fdaEvents(filter: { types: [DRUG_RECALL], limit: 3 }) { id type severity product }
litigation(filter: { onlyActive: true, limit: 3 }) { caseName court dateFiled }
governmentContracts(filter: { minAmount: 1000000, limit: 3 }) { awardId amount agency }
}
}

See Filtering & sorting for the full filter reference and Sub-graphs for how batching works under the hood.