## Search Screener

`client.V1.Screener.SearchScreener(ctx, body) (*V1ScreenerSearchScreenerResponse, error)`

**post** `/v1/screener`

Search instruments using structured filters.

Returns a columnar response where each row is an array of column objects.
Each column contains a human-readable name, a field reference, an optional
type hint (e.g. `CURR_USD`, `PERCENT`), and the value.

Use `columns` to select which columns appear in each row.
When omitted, the default field set is returned.

### Parameters

- `body V1ScreenerSearchScreenerParams`

  - `Columns param.Field[[]FieldRef]`

    Subset of fields to include in the response.

    - `Name string`

      The field name.

    - `Lookback FieldLookback`

      Optional historical lookback window.

      - `const FieldLookbackOneDay FieldLookback = "ONE_DAY"`

      - `const FieldLookbackOneWeek FieldLookback = "ONE_WEEK"`

      - `const FieldLookbackOneMonth FieldLookback = "ONE_MONTH"`

      - `const FieldLookbackThreeMonths FieldLookback = "THREE_MONTHS"`

      - `const FieldLookbackSixMonths FieldLookback = "SIX_MONTHS"`

      - `const FieldLookbackYearToDate FieldLookback = "YEAR_TO_DATE"`

      - `const FieldLookbackOneYear FieldLookback = "ONE_YEAR"`

    - `Period FieldPeriod`

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

      - `const FieldPeriodQuarter FieldPeriod = "QUARTER"`

      - `const FieldPeriodTrailingTwelveMonths FieldPeriod = "TRAILING_TWELVE_MONTHS"`

    - `ValueType FieldType`

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

      - `const FieldTypeDecimal FieldType = "DECIMAL"`

      - `const FieldTypeInteger FieldType = "INTEGER"`

      - `const FieldTypeString FieldType = "STRING"`

      - `const FieldTypeAnalystRating FieldType = "ANALYST_RATING"`

      - `const FieldTypeDate FieldType = "DATE"`

  - `FieldFilter param.Field[[]FieldRef]`

    Deprecated: use `columns` instead. Ignored when `columns` is provided.

    - `Name string`

      The field name.

    - `Lookback FieldLookback`

      Optional historical lookback window.

    - `Period FieldPeriod`

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

    - `ValueType FieldType`

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

  - `Filters param.Field[[]SearchFilter]`

    Filter conditions to apply.

    - `Left FieldRef`

      The field to filter on.

      - `Name string`

        The field name.

      - `Lookback FieldLookback`

        Optional historical lookback window.

      - `Period FieldPeriod`

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

      - `ValueType FieldType`

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

    - `Op FilterOpSpec`

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

      - `Name FilterOperator`

        The operator to apply.

        - `const FilterOperatorLessThan FilterOperator = "LESS_THAN"`

        - `const FilterOperatorLessOrEqual FilterOperator = "LESS_OR_EQUAL"`

        - `const FilterOperatorGreaterThan FilterOperator = "GREATER_THAN"`

        - `const FilterOperatorGreaterOrEqual FilterOperator = "GREATER_OR_EQUAL"`

        - `const FilterOperatorEqual FilterOperator = "EQUAL"`

        - `const FilterOperatorBetween FilterOperator = "BETWEEN"`

        - `const FilterOperatorNotBetween FilterOperator = "NOT_BETWEEN"`

        - `const FilterOperatorOneOf FilterOperator = "ONE_OF"`

        - `const FilterOperatorRegex FilterOperator = "REGEX"`

        - `const FilterOperatorBeginsWith FilterOperator = "BEGINS_WITH"`

        - `const FilterOperatorEndsWith FilterOperator = "ENDS_WITH"`

        - `const FilterOperatorContains FilterOperator = "CONTAINS"`

        - `const FilterOperatorIsNull FilterOperator = "IS_NULL"`

        - `const FilterOperatorIsNotNull FilterOperator = "IS_NOT_NULL"`

      - `Args []OperatorArg`

        Optional arguments that modify operator behavior.

        - `const OperatorArgLeftInclusive OperatorArg = "LEFT_INCLUSIVE"`

        - `const OperatorArgRightInclusive OperatorArg = "RIGHT_INCLUSIVE"`

        - `const OperatorArgLeftExclusive OperatorArg = "LEFT_EXCLUSIVE"`

        - `const OperatorArgRightExclusive OperatorArg = "RIGHT_EXCLUSIVE"`

        - `const OperatorArgCaseInsensitive OperatorArg = "CASE_INSENSITIVE"`

    - `Right []FilterValue`

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

      - `Value FilterValueValueUnion`

        - `float64`

        - `string`

      - `Variable Variable`

        A variable reference.

        - `Name string`

          The variable name.

        - `Lookback FieldLookback`

          Optional historical lookback window.

        - `Modifier Modifier`

          Optional arithmetic modifier.

          - `Args []ModifierArgUnion`

            - `float64`

            - `string`

          - `Name ModifierOp`

            The modifier operation.

            - `const ModifierOpAdd ModifierOp = "ADD"`

            - `const ModifierOpSubtract ModifierOp = "SUBTRACT"`

        - `Period FieldPeriod`

          Optional reporting period.

  - `PageSize param.Field[int64]`

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

  - `PageToken param.Field[string]`

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

  - `SortCaseSensitive param.Field[bool]`

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

  - `Sorts param.Field[[]SortSpec]`

    Multi-field sort specifications.

    - `Field FieldRef`

      The field to sort by.

    - `Direction SortDirection`

      Sort direction (defaults to DESC).

      - `const SortDirectionAsc SortDirection = "ASC"`

      - `const SortDirectionDesc SortDirection = "DESC"`

### Returns

- `type V1ScreenerSearchScreenerResponse struct{…}`

  - `Data ScreenerRowList`

    - `Field FieldRef`

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

      - `Name string`

        The field name.

      - `Lookback FieldLookback`

        Optional historical lookback window.

        - `const FieldLookbackOneDay FieldLookback = "ONE_DAY"`

        - `const FieldLookbackOneWeek FieldLookback = "ONE_WEEK"`

        - `const FieldLookbackOneMonth FieldLookback = "ONE_MONTH"`

        - `const FieldLookbackThreeMonths FieldLookback = "THREE_MONTHS"`

        - `const FieldLookbackSixMonths FieldLookback = "SIX_MONTHS"`

        - `const FieldLookbackYearToDate FieldLookback = "YEAR_TO_DATE"`

        - `const FieldLookbackOneYear FieldLookback = "ONE_YEAR"`

      - `Period FieldPeriod`

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

        - `const FieldPeriodQuarter FieldPeriod = "QUARTER"`

        - `const FieldPeriodTrailingTwelveMonths FieldPeriod = "TRAILING_TWELVE_MONTHS"`

      - `ValueType FieldType`

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

        - `const FieldTypeDecimal FieldType = "DECIMAL"`

        - `const FieldTypeInteger FieldType = "INTEGER"`

        - `const FieldTypeString FieldType = "STRING"`

        - `const FieldTypeAnalystRating FieldType = "ANALYST_RATING"`

        - `const FieldTypeDate FieldType = "DATE"`

    - `Name string`

      Human-readable display name for this field

    - `Value ScreenerColumnValueUnion`

      - `float64`

      - `string`

    - `Type 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.

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/clear-street/clear-street-go"
  "github.com/clear-street/clear-street-go/option"
)

func main() {
  client := clearstreet.NewClient(
    option.WithAPIKey("My API Key"),
  )
  response, err := client.V1.Screener.SearchScreener(context.TODO(), clearstreet.V1ScreenerSearchScreenerParams{

  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response)
}
```

#### Response

```json
{
  "data": [
    [
      {
        "field": {
          "name": "symbol"
        },
        "name": "Symbol",
        "value": "AAPL"
      },
      {
        "field": {
          "name": "price"
        },
        "name": "Price",
        "type": "CURR_USD",
        "value": 175.05
      },
      {
        "field": {
          "name": "market_cap"
        },
        "name": "Market Cap",
        "type": "CURR_USD",
        "value": 3500000000000
      },
      {
        "field": {
          "name": "beta"
        },
        "name": "Beta",
        "value": 1.2
      },
      {
        "field": {
          "lookback": "ONE_WEEK",
          "name": "change_pct"
        },
        "name": "Change (1W)",
        "type": "PERCENT",
        "value": 2.35
      },
      {
        "field": {
          "name": "consensus_rating"
        },
        "name": "Consensus Rating",
        "value": "STRONG_BUY"
      },
      {
        "field": {
          "name": "earnings_per_share",
          "period": "QUARTER"
        },
        "name": "EPS (Q)",
        "type": "CURR_USD",
        "value": 1.55
      }
    ],
    [
      {
        "field": {
          "name": "symbol"
        },
        "name": "Symbol",
        "value": "F"
      },
      {
        "field": {
          "name": "price"
        },
        "name": "Price",
        "type": "CURR_USD",
        "value": 12.5
      },
      {
        "field": {
          "name": "market_cap"
        },
        "name": "Market Cap",
        "type": "CURR_USD",
        "value": 45000000000
      },
      {
        "field": {
          "name": "beta"
        },
        "name": "Beta",
        "value": 1.5
      },
      {
        "field": {
          "lookback": "ONE_WEEK",
          "name": "change_pct"
        },
        "name": "Change (1W)",
        "type": "PERCENT",
        "value": -0.85
      },
      {
        "field": {
          "name": "consensus_rating"
        },
        "name": "Consensus Rating",
        "value": "HOLD"
      },
      {
        "field": {
          "name": "earnings_per_share",
          "period": "QUARTER"
        },
        "name": "EPS (Q)",
        "type": "CURR_USD",
        "value": 0.23
      }
    ]
  ],
  "metadata": {
    "next_page_token": "AAAAAAAAAAoAAAAAAAAAAg",
    "request_id": "abc-123"
  }
}
```
