---
title: "Screen the stock universe by combining optional range filters across datasets: market cap and price, sector and industry, 13F filer count and its change, institutional ownership and the 13F holder signals of the newest computed closed quarter (conviction share, crowding, private-fund adviser ownership, active holders' share change, holder tenure, and price versus the holders' estimated average cost), short interest and days to cover, composite short-squeeze and insider-sentiment scores, net insider buying (90d), the going-concern doubt flag, and daily-refreshed derived metrics (trailing P/E, dividend yield from split-restated TTM cash dividends per share divided by share price, revenue growth YoY, gross margin, average daily dollar volume, TTM net income). A bound on a metric excludes stocks with no data on that axis. Sorted by the chosen metric (default market cap, descending); page walks past the first page and vintages state each dataset's freshness."
method: GET
path: "/v1/screener/stocks"
tags: ["Screener"]
---

# Screen the stock universe by combining optional range filters across datasets: market cap and price, sector and industry, 13F filer count and its change, institutional ownership and the 13F holder signals of the newest computed closed quarter (conviction share, crowding, private-fund adviser ownership, active holders' share change, holder tenure, and price versus the holders' estimated average cost), short interest and days to cover, composite short-squeeze and insider-sentiment scores, net insider buying (90d), the going-concern doubt flag, and daily-refreshed derived metrics (trailing P/E, dividend yield from split-restated TTM cash dividends per share divided by share price, revenue growth YoY, gross margin, average daily dollar volume, TTM net income). A bound on a metric excludes stocks with no data on that axis. Sorted by the chosen metric (default market cap, descending); page walks past the first page and vintages state each dataset's freshness.

`GET /v1/screener/stocks`

## Request

- Base URL: `https://api.equibles.com`
- URL: `https://api.equibles.com/v1/screener/stocks`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/equibles/apis/equibles-api/docs/v1/screener/stocks/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `minMarketCap` number, double
- `maxMarketCap` number, double
- `minPrice` number, double
- `maxPrice` number, double
- `minFilerCount` integer
- `maxFilerCount` integer
- `minFilerDelta` integer
- `maxFilerDelta` integer
- `minShortInterestPercent` number, double
- `maxShortInterestPercent` number, double
- `minDaysToCover` number, double
- `maxDaysToCover` number, double
- `minSqueezeScore` number, double
- `maxSqueezeScore` number, double
- `minInsiderSentiment` number, double
- `maxInsiderSentiment` number, double
- `minNetInsiderBuy` number, double
- `maxNetInsiderBuy` number, double
- `hasGoingConcernDoubt` boolean
- `sector` string
- `industry` string
- `index` string
- `market` string
- `minPe` number, double
- `maxPe` number, double
- `minDividendYield` number, double
- `maxDividendYield` number, double
- `minRevenueGrowth` number, double
- `maxRevenueGrowth` number, double
- `minGrossMargin` number, double
- `maxGrossMargin` number, double
- `minDollarVolume` number, double
- `maxDollarVolume` number, double
- `minNetIncome` number, double
- `maxNetIncome` number, double
- `minInstitutionalOwnership` number, double
- `maxInstitutionalOwnership` number, double
- `minConvictionShare` number, double
- `maxConvictionShare` number, double
- `minCrowding` number, double
- `maxCrowding` number, double
- `minPrivateFundOwnership` number, double
- `maxPrivateFundOwnership` number, double
- `minActiveHolderChange` number, double
- `maxActiveHolderChange` number, double
- `minHolderTenure` number, double
- `maxHolderTenure` number, double
- `minEstimatedCostGap` number, double
- `maxEstimatedCostGap` number, double
- `sortBy` string
- `sortAscending` boolean
- `limit` integer
- `page` integer
- `tickers` string
- `format` string
- `cols` string

## Response `200`

OK

- ScreenerResponse
  - `totalCount` integer
  - `count` integer
  - `page` integer: The page actually served, 1-based. A requested page past the end is clamped to the last real page — compare with the request to detect it.
  - `totalPages` integer: Total pages at the requested limit.
  - `vintages` ScreenerVintagesDto: The data vintages behind the screener's mixed-cadence axes, so consumers can state how fresh each column is. Market cap and price are the latest exchange snapshot, insider flows a trailing-90-day window ending now, and fundamentals refresh daily from SEC filings — none of those carries a vintage date.
    - `shortInterestSettlementDate` string, date, nullable: FINRA settlement date behind the short-interest and squeeze columns; null when that axis has no data yet.
    - `thirteenFQuarterEnd` string, date, nullable: The completed 13F quarter (report date) behind the filer counts — the QoQ delta compares against the immediately prior quarter; null when that axis has no data yet.
    - `holderSignalsQuarterEnd` string, date, nullable: The closed 13F quarter (report date) behind the holder-signal fields (conviction, crowding, private-fund ownership, active holders' change, tenure and estimated cost gap); it can trail thirteenFQuarterEnd. Null when not computed yet.
  - `notFound` string[], nullable: Requested tickers that name nothing in the covered universe. Absent from the payload unless `tickers` was supplied, so a caller who did not ask sees the same wire shape as before. Resolved against the whole universe, not the filtered page.
  - `data` ScreenerRowDto[], nullable
    - `ticker` string, nullable
    - `name` string, nullable
    - `market` string, nullable: ISO country code of the listing market (US, GB, CN …).
    - `currency` string, nullable: ISO code of the currency the listing trades in.
    - `localPrice` number, double, nullable: A non-US listing's latest traded close in its trading currency, rounded to 4 decimal places; absent on US rows, whose price is already in USD.
    - `sector` string, nullable: The industry's parent sector from the shared taxonomy; null when unclassified.
    - `industry` string, nullable: Exact industry taxonomy name; null when unclassified.
    - `marketCap` number, double
    - `price` number, double, nullable
    - `priceDate` string, date, nullable: The session of the traded close behind price and localPrice, so a stale close is visible; null when the row has no close. A listing outside the US settles on its own exchange's calendar, so rows of one page can carry different dates.
    - `filerCount` integer, nullable
    - `filerDelta` integer, nullable
    - `shortInterestPercent` number, double, nullable
    - `daysToCover` number, double, nullable
    - `squeezeScore` number, double, nullable
    - `insiderSentimentScore` number, double, nullable
    - `netInsiderBuy` number, double, nullable
    - `hasGoingConcernDoubt` boolean
    - `priceToEarnings` number, double, nullable: Trailing-twelve-month price-to-earnings ratio.
    - `dividendYieldPercent` number, double, nullable: Trailing dividend yield in percent (split-restated TTM dividends per share over a positive share price).
    - `revenueGrowthYoYPercent` number, double, nullable: Revenue growth in percent, latest quarter vs the same quarter a year earlier.
    - `grossMarginPercent` number, double, nullable: Gross margin in percent (0-100).
    - `averageDollarVolume3Month` number, double, nullable: Trailing-3-month average daily dollar volume in USD.
    - `netIncomeTtm` number, double, nullable: Trailing-twelve-month net income in USD.
    - `institutionalOwnershipPercent` number, double, nullable: 13F shares held over today's shares outstanding, in percent; overlapping filings can push it past 100.
    - `convictionSharePercent` number, double, nullable: Percent of the stock's 13F filers holding it among their ten largest positions, for the quarter in vintages.holderSignalsQuarterEnd.
    - `crowdingPercent` number, double, nullable: Shares held by high-turnover 13F filers and private-fund advisers, in percent of shares outstanding; null where the share count is not one consolidated figure.
    - `privateFundOwnershipPercent` number, double, nullable: Shares held by 13F filers that advise private funds (Form ADV), in percent of shares outstanding.
    - `activeHolderChangePercent` number, double, nullable: Like-for-like share change of the actively managed 13F holders that filed both quarters, in percent.
    - `holderTenureQuarters` number, double, nullable: Value-weighted consecutive quarters the 13F filers have held the stock.
    - `estimatedCostGapPercent` number, double, nullable: Quarter-end price over the 13F holders' ESTIMATED average cost per share, less one, in percent; an estimate from quarter average prices, never a filed figure.

## Other responses

- `400`: Bad Request

---

[API](https://skmtc.dev/equibles/apis/equibles-api.md) - [All operations](https://skmtc.dev/equibles/apis/equibles-api/llms.txt) - [OpenAPI document](https://skmtc.dev/equibles/apis/equibles-api/revisions/666e06778588?raw)
