Predefined stock screeners
Yahoo Finance's predefined screeners with full quotes: day_gainers, day_losers, most_actives, most_shorted_stocks, small_cap_gainers, undervalued_growth_stocks, undervalued_large_caps, aggressive_small_caps, growth_technology_stocks, top_mutual_funds, conservative_foreign_funds, high_yield_bond, portfolio_anchors, solid_large_growth_funds, solid_midcap_growth_funds, all_cryptocurrencies_us and more (known_screeners). Or screen stocks with your own criteria (any of sector, industry, exchange, region, market_cap_min, market_cap_max, price_min, price_max, volume_min, sort, sort_order; not together with id): the response has id custom and echoes the applied criteria. Pages with offset/count; pass next_offset (null on the last page).
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
id | string | Screener id (default day_gainers). Example: day_gainers |
count | integer | Results per page (default 25, up to 250). |
offset | integer | Result offset. Pass next_offset from the previous response. |
sector | string | Custom screen: comma-separated sectors: Basic Materials, Communication Services, Consumer Cyclical, Consumer Defensive, Energy, Financial Services, Healthcare, Industrials, Real Estate, Technology, Utilities. |
industry | string | Custom screen: comma-separated industry names, e.g. Semiconductors, Software - Infrastructure. |
exchange | string | Custom screen: comma-separated exchange codes, e.g. NMS (Nasdaq), NYQ (NYSE), ASE (NYSE American). |
region | string | Custom screen: market, two-letter country code (default us), e.g. gb, de, in. |
market_cap_min | number | Custom screen: minimum market cap in the listing currency, e.g. 10000000000. |
market_cap_max | number | Custom screen: maximum market cap. |
price_min | number | Custom screen: minimum share price. |
price_max | number | Custom screen: maximum share price. |
volume_min | number | Custom screen: minimum volume today. |
sort | market_cap | percent_change | volume | price | avg_volume | pe | Custom screen: order by (default market_cap). |
sort_order | desc | asc | Custom screen: desc (default) or asc. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/yahoo-finance/v1/screener?id=day_gainers" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/yahoo-finance/v1/screener",
params={"id": "day_gainers"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/yahoo-finance/v1/screener");
url.searchParams.set("id", "day_gainers");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).