View as markdown
Endpoints · Scan

Live scan

GET/v2/scan

Filter the live ticker universe with a SQL WHERE clause expressed in our SQL grammar. Returns matching tickers sorted by your chosen column. Columns in `q`, `order`, and `fields` are the customer-facing names listed on /api/schema and /api/flags. No translation layer.

Plan access

Included on every plan, Hobby through Enterprise.

Rate limit

Hobby 60/min · Pro 2,000/min · Scale 10,000/min.

Universe

All ~12,000 tracked tickers on every plan.

string

SQL WHERE expression. Required unless `rule` is supplied. Max 4000 chars. Semicolons, comments, and write-side keywords (INSERT/UPDATE/DELETE/DROP/etc.) are rejected.

string

Slug of a saved rule (see `/v2/rules`). Its `q`, `universe_id`, `order`, `dir`, and `fields` become defaults; any of those passed as query-string parameters override.

string

Slug of a system universe (`top_10`, `top_100`) or one of your own (`/v2/universes`). Scopes the scan to those tickers. When omitted, the scan runs across all ~12,000 tracked tickers.

string

Optional. Run the WHERE against historical daily state for the given `YYYY-MM-DD` (or full ISO). Plan history depth applies.

stringdefault day_change_pct

Column to sort by. Must be a valid identifier (lowercase letters, digits, underscore).

stringdefault desc

Sort direction.

string

Comma-separated list of extra columns to include in each result row. Default columns are always present: ticker, name, asset_type, price, day_change_pct, gap_pct, relative_volume, market_cap.

integerdefault 50

Page size. Max 100.

string

Opaque cursor from the previous response.

200
Page of matching rows with as_of, query, count, next_cursor, and results. If the response was scoped (explicit ?universe= or plan default), _meta.scope describes it.
400
Malformed q, unknown column, invalid order/dir/fields, or invalid cursor.
402
Query references a premium signal and your plan does not include premium signals.
404
Referenced rule or universe does not exist.