Stock Screener
Screen and filter the entire market based on dynamic financial metrics, ratios, and conditions. Fetch exactly the columns and data points you need for your analysis.
https://data.businessquant.com/screener?page={page}&limit={limit}&api_key={api_key}
Parameters & Payload
The Screener endpoint requires authentication and pagination parameters passed in the URL (Query), alongside a JSON body payload defining your exact SQL-like filtering conditions and requested output columns.
Query Parameters
| Parameter | Description |
|---|---|
| api_key |
Required
Your unique API key for authentication.
|
| page |
Optional
The page number for pagination. Default is 1.
Format:
page=1 |
| limit |
Optional
The maximum number of records to return per page. Default is 10000.
Format:
limit=500 |
JSON Body (Payload)
| Key | Description |
|---|---|
| conditions |
Required
String
A SQL-like syntax string to filter the market. Supports standard logical operators like AND, OR, and parentheses () for complex grouping. Wrap all metric names in double quotes " ".
Format:
"conditions": "\"P/E Ratio\" < 15 AND (\"sector\" = 'Technology' OR \"sector\" = 'Healthcare')" |
| preferred_columns |
Optional
Array
An array of specific metric column names you want returned in the response alongside the base identification columns.
Format:
"preferred_columns": ["Revenue (Yr)", "Net Income (Yr)"] |
curl -X POST "https://data.businessquant.com/screener?page=1&limit=50&api_key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"conditions": "\"Market Capitalization\" > 5000000000 AND \"P/E Ratio\" < 15 AND (\"sector\" = '\'Technology\'' OR \"sector\" = '\'Healthcare\'')",
"preferred_columns": [
"Revenue (Yr)",
"Net Income (Yr)",
"Dividend Yield"
]
}'
{
"metadata": {
"total_records": 438,
"total_pages": 9,
"page": 1,
"limit": 50
},
"data": [
{
"ticker": "AAPL",
"cik": 320193,
"name": "Apple Inc.",
"name_short": "Apple",
"sector": "Technology",
"industry": "Consumer Electronics",
"Market Capitalization": 2850000000000.0,
"P/E Ratio": 18.52,
"Revenue (Yr)": 383285000000.0,
"Net Income (Yr)": 96995000000.0,
"Dividend Yield": "0.53%"
},
{
"ticker": "JNJ",
"cik": 200406,
"name": "Johnson & Johnson",
"name_short": "J&J",
"sector": "Healthcare",
"industry": "Drug Manufacturers",
"Market Capitalization": 375000000000.0,
"P/E Ratio": 10.85,
"Revenue (Yr)": 85159000000.0,
"Net Income (Yr)": 35000000000.0,
"Dividend Yield": "3.05%"
}
]
}
Understanding the Syntax (Operators & Escaping Quotes)
Because the conditions parameter is passed as a single string within a JSON payload, any internal double quotes used to identify metric names must be escaped using a backslash (\"). Standard text values (like sector names) should use single quotes. You can build highly complex logical structures using AND, OR, and parentheses.
1. Standard SQL Logic:
AND "P/E Ratio" < 15
AND ("sector" = 'Technology' OR "sector" = 'Healthcare')
2. Final Escaped JSON (Paste directly into Postman Body):
{
"page": 1,
"limit": 50,
"conditions": "\"Market Capitalization\" > 5000000000 AND \"P/E Ratio\" < 15 AND (\"sector\" = 'Technology' OR \"sector\" = 'Healthcare')",
"preferred_columns": [
"Revenue (Yr)",
"Net Income (Yr)",
"Dividend Yield"
]
}
Fetch Screener Metadata (Schema)
Before querying the screener, you can dynamically fetch the master list of all valid metric strings and datatypes available in our database using the /metadata endpoint.
https://data.businessquant.com/metadata?table=screener&api_key={api_key}
curl -X GET "https://data.businessquant.com/metadata?table=screener&api_key=YOUR_API_KEY"
Understanding the Schema Response
The metadata endpoint acts as a programmatic dictionary for the screener. Use it to populate your UI filters or validate user inputs before sending a POST request.
metric_full: The exact string required for yourconditionsandpreferred_columnspayload parameters.metric_short: A condensed, UI-friendly display name.datatype: Tells your application how to format the result (e.g., as anumber, or as a%).statement: The financial category where this metric originates (e.g., Overview, Valuation Ratios).
[
{
"metric_full": "Market Capitalization",
"metric_short": "Market Cap",
"datatype": "number",
"statement": "Overview"
},
{
"metric_full": "P/E Ratio",
"metric_short": "P/E Ratio",
"datatype": "number",
"statement": "Valuation Ratios"
},
{
"metric_full": "Gross Profit Margin (Yr)",
"metric_short": "Gross Margin (Yr)",
"datatype": "%",
"statement": "Profitability"
},
{
"metric_full": "Return on Equity (Yr)",
"metric_short": "ROE (Yr)",
"datatype": "%",
"statement": "Management Effectiveness"
},
{
"metric_full": "Revenue Growth (YoY)",
"metric_short": "Rev Growth (YoY)",
"datatype": "%",
"statement": "Growth Ratios"
}
]