Search
Arbitrary multi-field filtering across all assets
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.
Tier Access
Free Up to 2 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
| Parameter | Type | Required | Description |
|---|---|---|---|
filters | JSON array | Yes | Array of filter objects. Each filter has field, op, and value. |
date | string | No | Query a historical date (YYYY-MM-DD). Defaults to latest. Tier-gated depth. |
timeframe | string | No | daily (default) or weekly |
sort_by | string | No | Field name to sort results by |
sort_direction | string | No | asc or desc (default: desc) |
limit | integer | No | Max results to return. Tier-gated maximum. |
fields | JSON array or string | No | Columns 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:
| Field | Type | Description |
|---|---|---|
field | string | The field to filter on (e.g. rsi_zone, sector, asset_class). Use /v1/schema/fields to discover all queryable fields. |
op | string | Comparison operator |
value | any | Value to compare against. Type depends on the field. |
Operators
| Operator | Description | Example |
|---|---|---|
eq | Equal to | {"field": "rsi_zone", "op": "eq", "value": "oversold"} |
neq | Not equal to | {"field": "asset_class", "op": "neq", "value": "crypto"} |
in | In list | {"field": "rsi_zone", "op": "in", "value": ["oversold", "deep_oversold"]} |
gt | Greater than | {"field": "volume.percentile", "op": "gt", "value": 90} |
gte | Greater than or equal | {"field": "trend.duration_days", "op": "gte", "value": 10} |
lt | Less than | {"field": "extremes.condition_percentile", "op": "lt", "value": 10} |
lte | Less 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":"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":"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":"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
| Field | Type | Description |
|---|---|---|
results | array | Array of matching assets with their current field values |
total | integer | Total number of matching assets |
returned | integer | Number of results returned (capped by limit) |
timeframe | string | The timeframe queried |
date | string | The date of the data |
fields | array | The field names included in each result (present when fields param is used) |
Example Response
JSON
{
"results": [
{
"ticker": "AAPL",
"asset_class": "stock",
"sector": "Technology",
"rsi_zone": "oversold",
"trend_direction": "downtrend",
"volatility_regime": "high",
"valuation_zone": "undervalued"
},
{
"ticker": "MSFT",
"asset_class": "stock",
"sector": "Technology",
"rsi_zone": "oversold",
"trend_direction": "downtrend",
"volatility_regime": "above_normal",
"valuation_zone": "fair_value"
}
],
"total": 47,
"returned": 2,
"timeframe": "daily",
"date": "2026-04-04"
}
Credit Cost
Each search request costs 1 credit.