Stock Screener API
Finviz-style screening of the S&P 500, built for AI agents instead of browser tabs. One call filters the whole index by price, market cap, P/E, volume, sector and more, and returns clean JSON your agent can act on.
Pay per query — no subscription, no API key, no signup. Payment is x402: SOL or USDC on Solana, settled per call.
● Checking live service status…
Live universe
The full S&P 500 — 503 tickers across 11 sectors, with SEC fundamentals and delayed quotes. Loading the live universe summary…
Endpoints
POST /toll/screener/screen
$0.01 per query
Filter, sort and paginate the S&P 500 universe in one call. Returns matching tickers with price, change, volume, market cap and P/E, plus match counts and freshness timestamps.
GET /toll/screener/quote/:ticker
$0.005 per call
Single-ticker snapshot: price, day change, volume, market cap, P/E — for when your agent already knows the symbol and just needs the numbers.
GET /toll/screener/universe
Free
The full ticker list with sector counts and the universe as-of date. Pull it once, cache it, plan your screens against it.
GET /toll/screener/health
Free
Service status, universe size and current toll prices. The fastest way to confirm the screener is up before you build a workflow on it.
Filters & sorting
Supported filters: price_min/max,
change_pct_min/max, volume_min/max,
market_cap_min/max, pe_min/max, sector,
industry, country.
Sortable by: price, change_pct,
volume, market_cap, pe, ticker,
name — ascending or descending, with limit/offset
pagination. Tickers missing a filtered field (e.g. no earnings → no P/E)
are excluded while that filter is active, and the response says so.
POST /toll/screener/screen
{
"filters": {
"price_min": 5, "price_max": 1000,
"change_pct_min": -5,
"market_cap_min": 1000000000,
"pe_max": 25,
"volume_min": 1000000,
"sector": "Technology"
},
"sort_by": "market_cap", "sort_dir": "desc",
"limit": 50, "offset": 0
}
What a result looks like
The table below is a sample — illustrative rows in the real response shape, shown so you can see the format. It is not live market data. Live results are served by the API after payment; nothing on this page serves paid data for free.
| Ticker | Name | Sector | Price | Change % | Volume | Market cap | P/E |
|---|---|---|---|---|---|---|---|
| AAPL | Apple Inc | Technology | 342.09 | +1.62 | 6,311,259 | $5.05T | 45.87 |
| MSFT | Microsoft Corp | Technology | 512.40 | +0.84 | 18,204,553 | $3.81T | 36.12 |
| NVDA | NVIDIA Corp | Technology | 188.15 | +2.47 | 241,930,112 | $4.59T | 52.30 |
| JPM | JPMorgan Chase & Co | Financials | 301.22 | −0.63 | 7,845,901 | $838B | 15.44 |
| XOM | Exxon Mobil Corp | Energy | 118.73 | −1.08 | 12,664,308 | $506B | 13.91 |
Sample response envelope:
total_matches, filters_applied, universe_size,
tickers_with_quotes, quotes_as_of (oldest/newest) and
quote_license travel with every real result.
How agents pay
Three x402 rails, same endpoints — pick the one your stack already speaks:
- Direct x402. Call unpaid, get a
402with a payment challenge and memo, pay SOL or USDC on Solana with that memo, retry with theX-Payment-Txheader. Replay-protected. - PayAI. Standard x402 payment payloads settled through the PayAI facilitator — see the PayAI payment page.
- Dexter. Standard x402 payment payloads settled through the Dexter facilitator — see the Dexter payment page.
MCP: the screener is also a tool on the ExchangeRebel MCP
server at https://exchangerebel.com/mcp — paid tool calls settle
through the same rails, so MCP-native agents can screen without touching HTTP.
Discovery: machine-readable service descriptions live at
/openapi.json,
/agents.json and
/.well-known/x402.
quote_license). Fundamentals come from SEC EDGAR
filings (public domain); the universe list is Wikipedia’s S&P 500
listing (CC BY-SA). Dividend yield and beta are not populated in v1 — filters
on them are ignored with a warning in the response. This page and this API are
data tools, not financial advice.
ExchangeRebel