Search

Arbitrary multi-field filtering across all assets

GET https://api.tickerdb.com/v1/search

Search across all assets using arbitrary filter combinations. Build complex queries like "all oversold tech stocks with high volume" or "crypto in strong uptrend with a squeeze active." Filters are passed as a JSON array.

Request And Response Names
For /v1/search, canonical request fields, fields[], sort_by, and result keys all use the same flat snake_case names returned by /v1/schema/fields, such as momentum_rsi_zone, trend_direction, and fundamentals_valuation_zone.
Compatibility Aliases
Schema returns canonical flat names only. For example, insider_activity_zone is accepted as a compatibility alias, but the canonical search/schema field is insider_zone. Search still accepts a few older aliases for backwards compatibility, such as rsi_zone → momentum_rsi_zone and trend.direction → trend_direction. New clients and generated agents should use the canonical flat names everywhere.
Result Nullability
Search returns computed snapshot fields for the asset/date you queried. The response keys use the same canonical flat snake_case names you send in filters, fields, and sort_by. A documented field can still be null for a given row when that classification or source dataset is unavailable for that asset/date. That most commonly affects some fundamentals and insider fields, and may also appear on older rows before a newer classification has been backfilled.
Derived Insider Fields
Public search responses keep insider data derived-only. Use insider_zone, insider_net_direction, and insider_quarter rather than raw transaction counts or share totals.
Tier Access
Starter Up to 3 filters, 25 results, 30-day history.
Plus Up to 5 filters, 100 results, 2-year history.
Pro Up to 10 filters, 500 results, 5-year history.

Parameters

ParameterTypeRequiredDescription
filtersJSON arrayYesArray of filter objects. Each filter has field, op, and value. Prefer canonical flat field names from /v1/schema/fields.
datestringNoQuery a historical date (YYYY-MM-DD). Defaults to latest. Tier-gated depth.
timeframestringNodaily (default) or weekly
sort_bystringNoCanonical field name to sort results by
sort_directionstringNoasc or desc (default: desc)
limitintegerNoMax results to return. Tier-gated maximum.
fieldsJSON array or stringNoColumns to return. JSON array (e.g. ["ticker","sector","momentum_rsi_zone"]) or comma-separated (e.g. ticker,sector,momentum_rsi_zone). Use ["*"] for all fields. Omit for a default core subset. ticker is always included. Invalid fields return an error pointing to /v1/schema/fields.

Filter Object

Each filter in the filters array has three fields:

FieldTypeDescription
fieldstringThe field to filter on (e.g. momentum_rsi_zone, sector, asset_class). Use /v1/schema/fields to discover all queryable fields.
opstringComparison operator
valueanyValue to compare against. Type depends on the field.

Operators

OperatorDescriptionExample
eqEqual to{"field": "momentum_rsi_zone", "op": "eq", "value": "oversold"}
neqNot equal to{"field": "asset_class", "op": "neq", "value": "crypto"}
inIn list{"field": "momentum_rsi_zone", "op": "in", "value": ["oversold", "deep_oversold"]}
gtGreater than{"field": "volume_percentile", "op": "gt", "value": 90}
gteGreater than or equal{"field": "trend_duration_days", "op": "gte", "value": 10}
ltLess than{"field": "extremes_condition_percentile", "op": "lt", "value": 10}
lteLess than or equal{"field": "volatility_squeeze_days", "op": "lte", "value": 5}

Examples

Find oversold stocks

curl
curl -G "https://api.tickerdb.com/v1/search" \ --data-urlencode 'filters=[{"field":"momentum_rsi_zone","op":"eq","value":"oversold"}]' \ -H "Authorization: Bearer YOUR_API_KEY"

Oversold tech stocks with high volume

curl
curl -G "https://api.tickerdb.com/v1/search" \ --data-urlencode 'filters=[{"field":"momentum_rsi_zone","op":"in","value":["oversold","deep_oversold"]},{"field":"sector","op":"eq","value":"Technology"},{"field":"volume_ratio_band","op":"in","value":["high","extremely_high"]}]' \ -H "Authorization: Bearer YOUR_API_KEY"

Crypto in strong uptrend with squeeze

curl
curl -G "https://api.tickerdb.com/v1/search" \ --data-urlencode 'filters=[{"field":"asset_class","op":"eq","value":"crypto"},{"field":"trend_direction","op":"eq","value":"strong_uptrend"},{"field":"volatility_squeeze_active","op":"eq","value":true}]' \ -H "Authorization: Bearer YOUR_API_KEY"

Return only specific fields (reduces token usage)

curl
curl -G "https://api.tickerdb.com/v1/search" \ --data-urlencode 'filters=[{"field":"momentum_rsi_zone","op":"eq","value":"oversold"}]' \ --data-urlencode 'fields=["ticker","sector","momentum_rsi_zone"]' \ -H "Authorization: Bearer YOUR_API_KEY"

Sort by valuation percentile (cheapest first)

curl
curl -G "https://api.tickerdb.com/v1/search" \ --data-urlencode 'filters=[{"field":"fundamentals_valuation_zone","op":"in","value":["deep_value","undervalued"]}]' \ --data-urlencode 'sort_by=fundamentals_valuation_percentile' \ --data-urlencode 'sort_direction=asc' \ -H "Authorization: Bearer YOUR_API_KEY"

Response

FieldTypeDescription
resultsarrayArray of matching assets with their current field values. Individual columns may be null when a source classification is unavailable for that row.
timeframestringThe timeframe queried
datestring | nullThe resolved snapshot date used for the query
fieldsarrayThe canonical field names included in each result
filter_countintegerNumber of filters applied to the query
result_countintegerNumber of results returned

Example Response

JSON
{ "timeframe": "daily", "date": "2026-04-04", "fields": ["ticker", "asset_class", "sector", "momentum_rsi_zone", "trend_direction", "volatility_regime", "fundamentals_valuation_zone"], "filter_count": 2, "result_count": 2, "results": [ { "ticker": "AAPL", "asset_class": "stock", "sector": "Technology", "momentum_rsi_zone": "oversold", "trend_direction": "downtrend", "volatility_regime": "high", "fundamentals_valuation_zone": "undervalued" }, { "ticker": "MSFT", "asset_class": "stock", "sector": "Technology", "momentum_rsi_zone": "oversold", "trend_direction": "downtrend", "volatility_regime": "above_normal", "fundamentals_valuation_zone": "fair_value" } ] }

Credit Cost

Each search request costs 1 credit.