Screener API
8 endpoints in this group.
POST /api/screener
Run Screener
Screen the maintained ticker universe.
Rows come from the maintained tickers table joined with SEC EDGAR
company_facts_snapshots (public_redistributable license tier
only) plus the live quote/technical/performance snapshots. Earlier
versions of this endpoint anchored on symbol_profile_snapshots and
related FVW2 tables that nothing in the pipeline writes, so every
screen always returned zero rows .
A few field groups are explicitly null because no approved live
source exists yet: enterprise_value, forward_pe, peg,
target_price_avg/target_price_high/target_price_low, and
the rating_consensus/rating_count analyst fields. market_cap
is computed from an approved quote price times EDGAR
shares_outstanding (also null when either input is missing),
never from unlicensed provider data. asset_type recognizes a
maintained ETF allowlist and otherwise reports equity.
dividend_yield, annual_dividend, and ex_dividend_date are
deprecated: no approved live dividend source exists, so they are
excluded from GET /api/screener/filters and rejected with
unsupported_field/unsupported_column if requested by key,
rather than silently reporting "no matches" against a field that can
never carry data.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
as_of_session | query | boolean | optional |
Request body: application/json
Responses
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
POST /api/screener/ai-build
Ai Build Screen
Build a screener spec from a natural-language prompt.
Gated by the master stock_screener_ai flag (503 when off). The LLM
engine is a separate opt-in flag; when off/unreachable the service falls
back to keyword rules and returns degraded=True.
Request body: application/json
Responses
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
POST /api/screener/export.csv
Export Screener Csv
Request body: application/json
Responses
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
GET /api/screener/filters
Screener Filters
Responses
| Code | Description |
|---|---|
200 | Successful Response |
POST /api/screener/run
Run Screener
Screen the maintained ticker universe.
Rows come from the maintained tickers table joined with SEC EDGAR
company_facts_snapshots (public_redistributable license tier
only) plus the live quote/technical/performance snapshots. Earlier
versions of this endpoint anchored on symbol_profile_snapshots and
related FVW2 tables that nothing in the pipeline writes, so every
screen always returned zero rows .
A few field groups are explicitly null because no approved live
source exists yet: enterprise_value, forward_pe, peg,
target_price_avg/target_price_high/target_price_low, and
the rating_consensus/rating_count analyst fields. market_cap
is computed from an approved quote price times EDGAR
shares_outstanding (also null when either input is missing),
never from unlicensed provider data. asset_type recognizes a
maintained ETF allowlist and otherwise reports equity.
dividend_yield, annual_dividend, and ex_dividend_date are
deprecated: no approved live dividend source exists, so they are
excluded from GET /api/screener/filters and rejected with
unsupported_field/unsupported_column if requested by key,
rather than silently reporting "no matches" against a field that can
never carry data.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
as_of_session | query | boolean | optional |
Request body: application/json
Responses
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
GET /api/screener/saved
List Saved Screens
Responses
| Code | Description |
|---|---|
200 | Successful Response |
POST /api/screener/saved
Save Screen
Request body: application/json
Responses
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
DELETE /api/screener/saved/{screen_id}
Delete Saved Screen
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
screen_id | path | integer | required |
Responses
| Code | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |