Stock Screener
Screen securities by sending a POST request with a JSON body containing operator and clauses (and optional groups). Use query params for page size, sort order, and primary-only filter.
Use Case: Build stock screeners (e.g., large-cap value, high ROE, cash-rich) by defining conditions with field, operator, and value. Combine with AND, OR, or NOT.
Request body
Required. JSON with:| Field | Type | Required | Description |
|---|---|---|---|
operator | string | Yes | Logical operator: AND, OR, or NOT |
clauses | array | Yes* | List of conditions. Each has field, operator (eq, gt, gte, lt, lte, contains), and value (string). *At least one of clauses or groups must be non-empty. |
groups | array | No | Nested groups, each with operator and clauses, for complex logic. |
marketcap, pricetoearnings, roe, volume, open_price, dilutedeps, cashandequivalents, pricetobook, pricetosales, and others supported by the screener.
Query parameters
| Parameter | Type | Description |
|---|---|---|
page_size | integer | Results per request (1–50000). |
order_column | string | Sort by field (e.g. marketcap, pricetoearnings, roe, volume, open_price, dilutedeps, cashandequivalents). |
order_direction | string | asc or desc. |
primary_only | string | Use true or 1 to return only primary listings. |
Response
Success returns200 OK with a JSON array. Each element has:
- security — Identity and metadata:
id,company_id,stock_exchange_id,exchange,exchange_mic,name,code,currency,ticker,composite_ticker,figi,composite_figi,share_class_figi,primary_listing(fields may be null). - data — Array of screened tag values: each object has
tag(e.g. pricetoearnings, marketcap),number_value, andtext_value(one of which may be null).
Examples
Market cap + P/E filter
ROE + EPS filter
P/B and P/S (value stocks)
Volume + open price range
Cash-rich, large cap
Primary listings only
Authorizations
OAuth2 Bearer token: obtain an access token from the token endpoint and send it in the Authorization header.
Query Parameters
Number of results to return per page. Use smaller values (10–50) for UI screens, larger (100–500) for batch exports. Defaults to the upstream provider's default.
1 <= x <= 50000Which data column to sort the screened results by. Accepts any column the upstream screener exposes — not a fixed enum on our side. Common columns:
marketcap— market capitalization.pricetoearnings— trailing P/E ratio.pricetobook— price-to-book ratio.roe— return on equity.volume— average daily volume.open_price/close_price— most recent open / close.dilutedeps— diluted earnings per share (TTM).cashandequivalents— cash + cash equivalents on the balance sheet.
Pair with order_direction (asc / desc).
Direction to sort order_column in:
asc— ascending (smallest first).desc— descending (largest first). Sort direction for results. Use ascending for oldest or smallest first, descending for newest or largest first.
asc, desc "asc"
When true, return only the primary listing for each company (e.g. NYSE for a U.S. dual-listed stock) instead of every listing. Defaults to false.
Body
Screener request with operator (AND/OR), clauses (field, operator, value), and optional groups.
Request body for POST /v1/stock/screener. At least one of clauses or groups must be non-empty.