Pass a SQL filter, get the tickers that match right now. Same flag vocabulary as Finviz, delivered as JSON and webhooks. 100+ queryable fields across ~12,000 tickers, recomputed every minute.
GET /v2/scan
Compose a WHERE clause using any of 100+ queryable fields: boolean flags (gap_up_3pct, volume_unusual_2x, breakout, rsi_oversold…) and numeric columns (market_cap, price, day_change_pct…). Hit the endpoint; get the list of tickers that match this minute.
-- small caps gapping up on real volume
gap_up_3pct
AND volume_unusual_2x
AND market_cap < 2_000_000_000| ticker | gap_pct | day_change_pct | relative_volume |
|---|---|---|---|
| RKLB | +6.30% | +8.20% | 3.1× |
| IONQ | +8.40% | +11.30% | 5.2× |
| RIOT | +7.20% | +8.41% | 4.7× |
| MARA | +4.80% | +5.74% | 2.1× |
| ACHR | +5.10% | +6.90% | 2.8× |
| BBAI | +3.60% | +5.20% | 2.3× |
endpoints you’ll use
Five endpoint families combine for the full pattern: scan, scope, save, subscribe.
/v2/scanPass a SQL WHERE clause, get matching tickers. The screen itself.
Docs →/v2/universesScope a screen to your own ticker list. Reference by slug from /scan.
Docs →/v2/rulesSave a screen by name. Run it from /scan?rule= or attach to a webhook.
Docs →/v2/webhooksSubscribe a screen for push delivery. We POST on every new match.
Docs →why this works
~12,000 US equities + top 100 cryptos, recomputed every minute. Boolean flags (breakout, gap_up_3pct, volume_unusual_2x, rsi_oversold…) plus numeric columns. Compose any subset with SQL.
Save any screen as a named rule. Scope to a custom universe (your own ticker list) for repeated use. Both count by plan tier (5 / 25 / 100 / unlimited).
Promote any /scan query (or saved rule) to a webhook subscription; we POST your endpoint the moment a new ticker enters the match set.
Same SQL, pass ?asof=YYYY-MM-DD; see who matched on any past day across your plan’s history window (up to 5 years on Pro, all-time on Scale).
comparison
UI screener, manual workflow
SQL API + webhooks, code-first
works with your agent
Your agent writes a SQL filter, runs it against the live universe, and iterates on the result. The grammar is restricted on purpose: flat WHERE clauses, no joins, no window functions, so the agent can’t paint itself into a corner.
ship it