All APIsexpand_more
Stock screener
/stable/screener10 tokens per callPopularFilters Japanese stocks by combining conditions such as market cap, PER, PBR, ROE and dividend yield. All conditions are optional; stocks meeting every condition you set are returned, ordered by the metric you choose. Ratios (ROE, ROA, dividend yield) are 0–1 decimals (0.1 = 10%).
What you can do with this API
- check_circleFind candidates with a high dividend yield and a low PBR
- check_circleLook for high-ROE stocks within a sector
- check_circleList small and mid caps within a market-cap range
Example URL
https://api.zenithcode.net/stable/screener?marketCapMoreThan=100000000000&marketCapLowerThan=1000000000000&perMoreThan=5&perLowerThan=15&pbrLowerThan=1&roeMoreThan=0.1&roaMoreThan=0.05÷ndYieldMoreThan=0.03÷ndYieldLowerThan=0.08&evToEbitdaLowerThan=10&isEtf=false&sortBy=dividendYield&order=desc&limit=50Shown without percent-encoding for readability. Non-ASCII values are encoded automatically when sent.
Parameters
| Parameter | Required | Description | Example |
|---|---|---|---|
marketCapMoreThanstring | Optional | Minimum market cap (JPY) | 100000000000 |
marketCapLowerThanstring | Optional | Maximum market cap (JPY) | 1000000000000 |
perMoreThanstring | Optional | Minimum PER (times) | 5 |
perLowerThanstring | Optional | Maximum PER (times) | 15 |
pbrMoreThanstring | Optional | Minimum PBR (times) | |
pbrLowerThanstring | Optional | Maximum PBR (times) | 1 |
roeMoreThanstring | Optional | Minimum ROE (0–1 decimal; 0.1 = 10%) | 0.1 |
roaMoreThanstring | Optional | Minimum ROA (0–1 decimal; 0.05 = 5%) | 0.05 |
dividendYieldMoreThanstring | Optional | Minimum dividend yield (0–1 decimal; 0.03 = 3%) | 0.03 |
dividendYieldLowerThanstring | Optional | Maximum dividend yield (0–1 decimal; 0.08 = 8%) | 0.08 |
evToEbitdaLowerThanstring | Optional | Maximum EV/EBITDA (times) | 10 |
sectorstring | Optional | TSE 33-sector code (e.g. 3700 = Transportation Equipment). See /stable/available-sectors | |
isEtfstring | Optional | true = ETFs/REITs only, false = exclude ETFs/REITs | false |
sortByselect | Optional | Metric to sort by. Defaults to marketCap. Allowed values (marketCap, per, pbr, psr, roe, roa, dividendYield, evToEbitda, changePct1d, changePct1w, changePct1m, changePctYtd, dividendCagr3y, dividendCagr5y, revenueCagr3y, revenueCagr5y, epsCagr3y, epsCagr5y, progressiveDividendYears) Allowed values: marketCap, per, pbr, psr, roe, roa, dividendYield, evToEbitda, changePct1d, changePct1w, changePct1m, changePctYtd, dividendCagr3y, dividendCagr5y, revenueCagr3y, revenueCagr5y, epsCagr3y, epsCagr5y, progressiveDividendYears | dividendYield |
orderselect | Optional | Sort order: desc = largest first (default), asc = smallest first Allowed values: asc, desc | desc |
limitnumber | Optional | Maximum number of rows to return (default 50, max 100) | 50 |
Try it
Run it with your own parameters and check the response as a table, JSON or CSV. Sign-in required; each run uses 10 tokens.
travel_exploreTry in the API ViewerResponse example (real data)
Response fields
symbol証券コード(4 桁。英字を含むコードもある) | string | 証券コード(4 桁。英字を含むコードもある) |
nameJa会社名(日本語) | string | 会社名(日本語) |
nameEn会社名(英語)。無ければ null | string | 会社名(英語)。無ければ null |
sector東証 33 業種コード(4 桁。例: 3700) | string | 東証 33 業種コード(4 桁。例: 3700) |
priceThe close on the latest trading day (split-adjusted). This is exchange data and is shown only to signed-in users. | number | The close on the latest trading day (split-adjusted). This is exchange data and is shown only to signed-in users.How it is calculated → |
marketCapThe close multiplied by shares outstanding excluding treasury shares (both split-adjusted). | number | The close multiplied by shares outstanding excluding treasury shares (both split-adjusted).How it is calculated → |
perPrice divided by earnings per share (split-adjusted EPS). key-metrics-latest and similar endpoints use the latest close and the latest full-year EPS; key-metrics uses the price at each period end and that period’s EPS. | number | Price divided by earnings per share (split-adjusted EPS). key-metrics-latest and similar endpoints use the latest close and the latest full-year EPS; key-metrics uses the price at each period end and that period’s EPS.How it is calculated → |
pbrPrice divided by book value per share (split-adjusted BPS). | number | Price divided by book value per share (split-adjusted BPS).How it is calculated → |
roeNet income attributable to owners of the parent divided by average equity (opening and closing). For example, 0.098 in the API is 9.8% on screen. | number | Net income attributable to owners of the parent divided by average equity (opening and closing). For example, 0.098 in the API is 9.8% on screen.How it is calculated → |
dividendYieldThe annual dividend divided by the price: 0.0323 in the API is 3.23% on screen. | number | The annual dividend divided by the price: 0.0323 in the API is 3.23% on screen.How it is calculated → |
changePctYtdThe change of the latest adjusted close from the adjusted close on the base date. The base date is the last trading day on or before the calendar look-back date. | number | The change of the latest adjusted close from the adjusted close on the base date. The base date is the last trading day on or before the calendar look-back date.How it is calculated → |
assetType銘柄の種類(EQUITY = 株式 / ETF / REIT) | string | 銘柄の種類(EQUITY = 株式 / ETF / REIT) |
Related APIs
FAQ
What happens if I set no conditions?expand_more
No filtering is applied; the top rows by the sort metric (market cap by default) are returned.
How many tokens does one call use?expand_more
10 tokens per call, regardless of how many rows come back. Your monthly allowance depends on your plan.
Do I need an account to try it?expand_more
Use the API Viewer to run it with your own parameters. Sign up for free and sign in (no credit card). Each run uses this API's tokens.
Can I get CSV instead of JSON?expand_more
Add format=csv to the URL to get CSV, ready for spreadsheets or pandas.
Can I get labels in English?expand_more
With neither lang nor Accept-Language, labels such as sector names are returned in English; add lang=ja or send Accept-Language: ja for Japanese. Company and sector names are always returned in both languages as nameJa / nameEn and sectorJa / sectorEn. Field names are the same in both languages.

