Skip to content
Start Trading

Search Screener

POST/v1/screener

Search instruments using structured filters.

Compose a request with filters, plus optional sorts, columns, and page_size/page_token for pagination. Each filter pairs a field reference (left) with an operator (op, e.g. GREATER_OR_EQUAL, BETWEEN) and comparison values (right), which can be literals or date variables such as today with a modifier. Field names, periods, and lookbacks come from the screener field catalog. sorts order results; columns selects which fields appear in each row (the default field set when omitted).

The response is a paginated, columnar list of matching instruments. Each row is an array of column objects, each with a display name, the field reference, an optional value type hint (e.g. CURR_USD, PERCENT), and the value. An instrument_id column is always prepended. Metadata carries total_items, total_pages, and next_page_token for paging.

Screener results can shuffle between calls; reconcile by re-checking rows across pages rather than assuming stable ordering.

Body ParametersJSONExpand Collapse
columns: optional array of FieldRef { name, lookback, period, value_type }

Subset of fields to include in the response.

name: string

The field name.

lookback: optional FieldLookback

Optional historical lookback window.

One of the following:
"ONE_DAY"
"ONE_WEEK"
"ONE_MONTH"
"THREE_MONTHS"
"SIX_MONTHS"
"YEAR_TO_DATE"
"ONE_YEAR"
period: optional FieldPeriod

Optional reporting period (e.g. quarter or TTM).

One of the following:
"QUARTER"
"TRAILING_TWELVE_MONTHS"
"ANNUAL"
value_type: optional FieldType

The data type of the field value. Present only in responses.

One of the following:
"DECIMAL"
"INTEGER"
"STRING"
"ANALYST_RATING"
"DATE"
filters: optional array of SearchFilter { left, op, right }

Filter conditions to apply.

left: FieldRef { name, lookback, period, value_type }

The field to filter on.

name: string

The field name.

lookback: optional FieldLookback

Optional historical lookback window.

One of the following:
"ONE_DAY"
"ONE_WEEK"
"ONE_MONTH"
"THREE_MONTHS"
"SIX_MONTHS"
"YEAR_TO_DATE"
"ONE_YEAR"
period: optional FieldPeriod

Optional reporting period (e.g. quarter or TTM).

One of the following:
"QUARTER"
"TRAILING_TWELVE_MONTHS"
"ANNUAL"
value_type: optional FieldType

The data type of the field value. Present only in responses.

One of the following:
"DECIMAL"
"INTEGER"
"STRING"
"ANALYST_RATING"
"DATE"
op: optional FilterOpSpec { name, args }

The operator and optional arguments. Omit together with right for an unenabled filter.

The operator to apply.

One of the following:
"LESS_THAN"
"LESS_OR_EQUAL"
"GREATER_THAN"
"GREATER_OR_EQUAL"
"EQUAL"
"BETWEEN"
"NOT_BETWEEN"
"ONE_OF"
"REGEX"
"BEGINS_WITH"
"ENDS_WITH"
"CONTAINS"
"IS_NULL"
"IS_NOT_NULL"
args: optional array of OperatorArg

Optional arguments that modify operator behavior.

One of the following:
"LEFT_INCLUSIVE"
"RIGHT_INCLUSIVE"
"LEFT_EXCLUSIVE"
"RIGHT_EXCLUSIVE"
"CASE_INSENSITIVE"
right: optional array of FilterValue { value, variable }

The value(s) to compare against. Omit together with op for an unenabled filter.

value: optional number or string
One of the following:
number
string
variable: optional Variable { name, lookback, modifier, period }

A variable reference.

name: string

The variable name.

lookback: optional FieldLookback

Optional historical lookback window.

One of the following:
"ONE_DAY"
"ONE_WEEK"
"ONE_MONTH"
"THREE_MONTHS"
"SIX_MONTHS"
"YEAR_TO_DATE"
"ONE_YEAR"
modifier: optional Modifier { args, name }

Optional arithmetic modifier.

args: array of number or string
One of the following:
number
string

The modifier operation.

One of the following:
"ADD"
"SUBTRACT"
period: optional FieldPeriod

Optional reporting period.

One of the following:
"QUARTER"
"TRAILING_TWELVE_MONTHS"
"ANNUAL"
page_size: optional number

The number of items to return per page (only used when page_token is not provided)

minimum1
page_token: optional string

Token for retrieving the next page of results. Contains encoded pagination state (limit + offset). When provided, page_size is ignored.

formatbyte
sort_case_sensitive: optional boolean

Whether string sorts should be case-sensitive (default: false).

sorts: optional array of SortSpec { field, direction }

Multi-field sort specifications.

field: FieldRef { name, lookback, period, value_type }

The field to sort by.

name: string

The field name.

lookback: optional FieldLookback

Optional historical lookback window.

One of the following:
"ONE_DAY"
"ONE_WEEK"
"ONE_MONTH"
"THREE_MONTHS"
"SIX_MONTHS"
"YEAR_TO_DATE"
"ONE_YEAR"
period: optional FieldPeriod

Optional reporting period (e.g. quarter or TTM).

One of the following:
"QUARTER"
"TRAILING_TWELVE_MONTHS"
"ANNUAL"
value_type: optional FieldType

The data type of the field value. Present only in responses.

One of the following:
"DECIMAL"
"INTEGER"
"STRING"
"ANALYST_RATING"
"DATE"
direction: optional SortDirection

Sort direction (defaults to DESC).

One of the following:
"ASC"
"DESC"
ReturnsExpand Collapse
data: ScreenerRowList { field, name, value, type }
field: FieldRef { name, lookback, period, value_type }

Field reference (same shape as filter/sort field references)

name: string

The field name.

lookback: optional FieldLookback

Optional historical lookback window.

One of the following:
"ONE_DAY"
"ONE_WEEK"
"ONE_MONTH"
"THREE_MONTHS"
"SIX_MONTHS"
"YEAR_TO_DATE"
"ONE_YEAR"
period: optional FieldPeriod

Optional reporting period (e.g. quarter or TTM).

One of the following:
"QUARTER"
"TRAILING_TWELVE_MONTHS"
"ANNUAL"
value_type: optional FieldType

The data type of the field value. Present only in responses.

One of the following:
"DECIMAL"
"INTEGER"
"STRING"
"ANALYST_RATING"
"DATE"
name: string

Human-readable display name for this field

value: number or string
One of the following:
number
string
type: optional string

Value format hint: “CURR_USD”, “PERCENT”, etc. Omitted when not applicable. When a null/undefined value is observed, it indicates it does not apply.

Search Screener

curl https://api.clearstreet.com/v1/screener \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $API_KEY" \
    -d '{}'
{
  "data": [
    [
      {
        "field": {
          "name": "instrument_id"
        },
        "name": "Instrument ID",
        "value": "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"
      },
      {
        "field": {
          "name": "symbol",
          "value_type": "STRING"
        },
        "name": "Symbol",
        "value": "AAPL"
      },
      {
        "field": {
          "name": "price",
          "value_type": "DECIMAL"
        },
        "name": "Price",
        "type": "CURR_USD",
        "value": "305.91"
      },
      {
        "field": {
          "name": "market_cap",
          "value_type": "DECIMAL"
        },
        "name": "Market Cap",
        "type": "CURR_USD",
        "value": "3561234567890"
      },
      {
        "field": {
          "name": "beta",
          "value_type": "DECIMAL"
        },
        "name": "Beta",
        "value": "1.20"
      },
      {
        "field": {
          "lookback": "ONE_WEEK",
          "name": "change_pct",
          "value_type": "DECIMAL"
        },
        "name": "Change (Lookback) % (1w)",
        "type": "PERCENT",
        "value": "2.35"
      },
      {
        "field": {
          "name": "consensus_rating",
          "value_type": "ANALYST_RATING"
        },
        "name": "Consensus Rating",
        "value": "STRONG_BUY"
      },
      {
        "field": {
          "name": "earnings_per_share",
          "period": "QUARTER",
          "value_type": "DECIMAL"
        },
        "name": "Earnings Per Share (q)",
        "type": "CURR_USD",
        "value": "1.55"
      }
    ],
    [
      {
        "field": {
          "name": "instrument_id"
        },
        "name": "Instrument ID",
        "value": "b2b3b4b5-c2c3-d2d3-e2e3-e4e5e6e7e8e9"
      },
      {
        "field": {
          "name": "symbol",
          "value_type": "STRING"
        },
        "name": "Symbol",
        "value": "F"
      },
      {
        "field": {
          "name": "price",
          "value_type": "DECIMAL"
        },
        "name": "Price",
        "type": "CURR_USD",
        "value": "12.50"
      },
      {
        "field": {
          "name": "market_cap",
          "value_type": "DECIMAL"
        },
        "name": "Market Cap",
        "type": "CURR_USD",
        "value": "45000000000"
      },
      {
        "field": {
          "name": "beta",
          "value_type": "DECIMAL"
        },
        "name": "Beta",
        "value": "1.50"
      },
      {
        "field": {
          "lookback": "ONE_WEEK",
          "name": "change_pct",
          "value_type": "DECIMAL"
        },
        "name": "Change (Lookback) % (1w)",
        "type": "PERCENT",
        "value": "-0.85"
      },
      {
        "field": {
          "name": "consensus_rating",
          "value_type": "ANALYST_RATING"
        },
        "name": "Consensus Rating",
        "value": "HOLD"
      },
      {
        "field": {
          "name": "earnings_per_share",
          "period": "QUARTER",
          "value_type": "DECIMAL"
        },
        "name": "Earnings Per Share (q)",
        "type": "CURR_USD",
        "value": "0.23"
      }
    ]
  ],
  "metadata": {
    "next_page_token": "AAAAAAAAAAoAAAAAAAAAAg",
    "page_number": 1,
    "request_id": "1a2b3c4d-5e6f-7890-1234-5a6b7c8d9e0f",
    "total_items": 142,
    "total_pages": 6
  }
}
{
  "error": {
    "code": 422,
    "message": "Failed to deserialize the JSON body into the target type: invalid digit found in string at line 1 column 29"
  },
  "metadata": {
    "request_id": "69f02ce8-20e3-4bcd-a134-bb006eca5749"
  }
}
Returns Examples
{
  "data": [
    [
      {
        "field": {
          "name": "instrument_id"
        },
        "name": "Instrument ID",
        "value": "a1a2a3a4-b1b2-c1c2-d1d2-d3d4d5d6d7d8"
      },
      {
        "field": {
          "name": "symbol",
          "value_type": "STRING"
        },
        "name": "Symbol",
        "value": "AAPL"
      },
      {
        "field": {
          "name": "price",
          "value_type": "DECIMAL"
        },
        "name": "Price",
        "type": "CURR_USD",
        "value": "305.91"
      },
      {
        "field": {
          "name": "market_cap",
          "value_type": "DECIMAL"
        },
        "name": "Market Cap",
        "type": "CURR_USD",
        "value": "3561234567890"
      },
      {
        "field": {
          "name": "beta",
          "value_type": "DECIMAL"
        },
        "name": "Beta",
        "value": "1.20"
      },
      {
        "field": {
          "lookback": "ONE_WEEK",
          "name": "change_pct",
          "value_type": "DECIMAL"
        },
        "name": "Change (Lookback) % (1w)",
        "type": "PERCENT",
        "value": "2.35"
      },
      {
        "field": {
          "name": "consensus_rating",
          "value_type": "ANALYST_RATING"
        },
        "name": "Consensus Rating",
        "value": "STRONG_BUY"
      },
      {
        "field": {
          "name": "earnings_per_share",
          "period": "QUARTER",
          "value_type": "DECIMAL"
        },
        "name": "Earnings Per Share (q)",
        "type": "CURR_USD",
        "value": "1.55"
      }
    ],
    [
      {
        "field": {
          "name": "instrument_id"
        },
        "name": "Instrument ID",
        "value": "b2b3b4b5-c2c3-d2d3-e2e3-e4e5e6e7e8e9"
      },
      {
        "field": {
          "name": "symbol",
          "value_type": "STRING"
        },
        "name": "Symbol",
        "value": "F"
      },
      {
        "field": {
          "name": "price",
          "value_type": "DECIMAL"
        },
        "name": "Price",
        "type": "CURR_USD",
        "value": "12.50"
      },
      {
        "field": {
          "name": "market_cap",
          "value_type": "DECIMAL"
        },
        "name": "Market Cap",
        "type": "CURR_USD",
        "value": "45000000000"
      },
      {
        "field": {
          "name": "beta",
          "value_type": "DECIMAL"
        },
        "name": "Beta",
        "value": "1.50"
      },
      {
        "field": {
          "lookback": "ONE_WEEK",
          "name": "change_pct",
          "value_type": "DECIMAL"
        },
        "name": "Change (Lookback) % (1w)",
        "type": "PERCENT",
        "value": "-0.85"
      },
      {
        "field": {
          "name": "consensus_rating",
          "value_type": "ANALYST_RATING"
        },
        "name": "Consensus Rating",
        "value": "HOLD"
      },
      {
        "field": {
          "name": "earnings_per_share",
          "period": "QUARTER",
          "value_type": "DECIMAL"
        },
        "name": "Earnings Per Share (q)",
        "type": "CURR_USD",
        "value": "0.23"
      }
    ]
  ],
  "metadata": {
    "next_page_token": "AAAAAAAAAAoAAAAAAAAAAg",
    "page_number": 1,
    "request_id": "1a2b3c4d-5e6f-7890-1234-5a6b7c8d9e0f",
    "total_items": 142,
    "total_pages": 6
  }
}
{
  "error": {
    "code": 422,
    "message": "Failed to deserialize the JSON body into the target type: invalid digit found in string at line 1 column 29"
  },
  "metadata": {
    "request_id": "69f02ce8-20e3-4bcd-a134-bb006eca5749"
  }
}