Live scan
https://api.tickerbot.io/v2/scanFilter the live ticker universe with a SQL WHERE clause expressed in our SQL grammar. Send q and the other parameters in a JSON body — no URL-encoding, no length limits to fight, and the same shape on every paging request. Columns in q, order, and fields are the customer-facing names listed on /docs/schema and /docs/flags. No translation layer. The same endpoint also accepts GET with parameters in the query string — handy for short queries and quick interactive testing.
Plan access
Included on every plan, Free through Enterprise.
Rate limit
Hobby 600/min · Pro 6,000/min · Scale 60,000/min.
Universe
All 12,947+ tracked tickers on every plan.
Body parameters
stringrequiredSQL WHERE expression. Max 4000 chars. Semicolons, comments, and write-side keywords (INSERT/UPDATE/DELETE/DROP/etc.) are rejected. See the schema for columns + flags you can compose.
stringSlug 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,947 tracked tickers.
stringOptional. Run the WHERE against historical daily state for the given `YYYY-MM-DD` (or full ISO). Plan history depth applies. See [As-of scan](/docs/endpoints/scan/asof) for the dedicated reference.
stringdefault day_change_pctColumn to sort by. Must be a valid identifier (lowercase letters, digits, underscore).
stringdefault descSort direction.
stringComma-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 50Page size. Max 100.
stringOpaque cursor from the previous response. Pass the prior `next_cursor` to get the next page.
Status codes
200as_of, query, count, next_cursor, and results. If the response was scoped (explicit universe or plan default), _meta.scope describes it.400q, unknown column, invalid order/dir/fields, or invalid cursor.404universe does not exist.