Filtering & sorting
Filter inputs for array sub-graphs.
Most array sub-graphs (news, research, filings, OHLCV history, …) accept an optional filter argument. The generic shape is ArrayFilterInput (date range + limit + sort), but a few fields use domain-specific inputs where the extra dimensions matter — options chains, regulatory filings, risk signals, and futures.
ArrayFilterInput — the generic filter
input ArrayFilterInput {
since: String # ISO 8601 — only items on/after this timestamp
until: String # ISO 8601 — only items on/before this timestamp
limit: Int # Cap result count (default 20)
sort: SortDirection # ASC | DESC (default DESC — newest first)
}
enum SortDirection { ASC, DESC }
Applies to: Entity.news, Entity.research, Entity.predictions, Entity.discussions, Entity.insiderTrades, Entity.earnings, Entity.earningsPressReleases, Entity.periodicFilings, Entity.segmentedRevenue, Entity.institutionalHoldings, Social.reddit, Social.redditComments, MarketData.history, MarketData.keyEvents, MarketData.shortInterest, FinancialStatements.{income,balanceSheet,cashFlow}, and the top-level gdp, inflation, interestRates, sp500Multiples, famaFrenchFactors, shortInterest queries.
query {
entitiesByTickers(tickers: ["AAPL"]) {
news(filter: {
since: "2025-01-01T00:00:00Z"
limit: 10
sort: DESC
}) { title date }
}
}
Slicing OHLCV history
MarketData.history can return thousands of candles. Pair priceHistory's range / interval with a filter to cap the payload.
query {
entitiesByTickers(tickers: ["AAPL"]) {
market {
history(filter: { since: "2024-01-01", limit: 60 }) {
date close volume
}
}
}
}
FilingsFilterInput — regulatory filings
Filter SEC filings by type in addition to date / limit / sort:
input FilingsFilterInput {
types: [FilingType!] # e.g. [FILING_10K, FILING_10Q]
since: String
until: String
limit: Int # default 20
sort: SortDirection # default DESC
}
query {
entitiesByTickers(tickers: ["AAPL"]) {
regulatory {
filings(filter: { types: [FILING_10K, FILING_10Q], limit: 5 }) {
type date url
}
}
}
}
RiskSignalFilterInput — risk signals
Hide low-confidence noise by filtering on signal type and severity:
input RiskSignalFilterInput {
types: [RiskSignalType!] # SANCTIONS, LITIGATION, REGULATORY_ACTION, ADVERSE_MEDIA, PEP
severities: [Severity!] # LOW, MEDIUM, HIGH, CRITICAL
since: String
until: String
limit: Int
sort: SortDirection
}
query {
entitiesByTickers(tickers: ["Gazprom"]) {
risk {
signals(filter: { severities: [HIGH, CRITICAL] }) {
type severity description source date
}
}
}
}
FuturesCurveFilterInput — futures curve
Date-ranges on expiration. Defaults to ASC so the nearest contract comes first.
input FuturesCurveFilterInput {
since: String # expirations on/after
until: String # expirations on/before
limit: Int # default 50
sort: SortDirection # default ASC (nearest first)
}
OptionsChainFilterInput — always pass this in production
Options chains on liquid underliers can exceed 5000 rows. Filter aggressively:
input OptionsChainFilterInput {
since: String # expirations on/after
until: String # expirations on/before
strikeMin: Float
strikeMax: Float
optionType: OptionType # CALL | PUT
minVolume: Float
minOpenInterest: Float
limit: Int # default 100
sort: OptionsChainSort # default EXPIRATION_ASC
}
enum OptionType { CALL, PUT }
enum OptionsChainSort {
EXPIRATION_ASC
EXPIRATION_DESC
STRIKE_ASC
STRIKE_DESC
VOLUME_DESC
OPEN_INTEREST_DESC
}
query {
entitiesByTickers(tickers: ["BTC"]) {
derivatives {
options(filter: {
optionType: CALL
strikeMin: 60000
strikeMax: 80000
minOpenInterest: 100
sort: VOLUME_DESC
limit: 25
}) {
contractSymbol expiration strike lastTradePrice volume openInterest
}
}
}
}
Defaults at a glance
| Filter | Default limit | Default sort |
|---|---|---|
ArrayFilterInput | 20 | DESC |
FilingsFilterInput | 20 | DESC |
RiskSignalFilterInput | 20 | DESC |
FuturesCurveFilterInput | 50 | ASC |
OptionsChainFilterInput | 100 | EXPIRATION_ASC |
Omitting the filter argument entirely on an ArrayFilterInput field returns the full upstream set; passing an empty filter: {} applies the default cap. Domain-specific filters always apply their defaults.