Stock universe
GET/api/v1/families/us-equities/universe/catalog
Every listed US stock with its name, sector, industry, country, and market cap, plus the members of every sector and industry, in one call. Pro and Unlimited.
Description
Returns the whole stock universe: one entry per ticker, then one entry per sector and industry listing its members from the largest market cap down. Ticker entries carry name, sector, industry, the matching SECTOR: and INDUSTRY: keys, the sector ETF (XLK through XLU), market cap in USD, country, IPO year, commonEquity (false for ETFs, funds, warrants, rights, units, preferred shares, and notes), and classificationSource: primary (the company list classification), profile (the company’s own profile, for names the list misses), fallback (secondary labels, used only in an emergency), or unclassified (no operating sector, mostly ETFs, funds, preferreds, and warrants, which stay listed under Unknown). They also carry lastSale, netChange, pctChange, and volume as of the last refresh; these are not live quotes. The universe refreshes once a week; refreshed_at says when. Filter with kind=ticker,sector,industry, sector=, or industry= (names or keys, comma-separated). format=csv returns the same universe as a CSV file with the columns Symbol, Name, Last Sale, Net Change, % Change, Market Cap, Country, IPO Year, Volume, Sector, and Industry, followed by classificationSource, commonEquity, and sectorEtf (and sourceIndustry, the original industry name, when an industry was folded into Others). An industry with fewer than 5 common stocks is not a peer group: its stocks are listed under the industry Others (INDUSTRY:others), keep their own ratings, and still count in their sector. INDUSTRY:others has no P/E, rating, chart, or statements of its own; it is served with available false and reason others-not-a-group, and the industry keys it replaced resolve to it (named in aliases). Look up keys instead: GET /api/v1/families/us-equities/universe/symbols?symbols=AAPL,SECTOR:technology (max 500), POST the same path with {"symbols": [...]} for up to 5,000, or GET /api/v1/families/us-equities/universe/symbols/{key} for one. Keys are listed tickers (AAPL, BRK.B becomes BRK-B), SECTOR:name, or INDUSTRY:name. Names normalize like valuation keys (sector:Consumer Discretionary becomes SECTOR:consumer-discretionary, Oil & Gas E&P becomes oil-gas-e-p). Sector and industry names follow the current classification (for example SECTOR:consumer-discretionary, SECTOR:consumer-staples, SECTOR:communication, SECTOR:finance, INDUSTRY:software-infrastructure). Earlier sector keys still work: SECTOR:consumer-cyclical, SECTOR:consumer-defensive, SECTOR:communication-services, SECTOR:financial-services, and SECTOR:telecommunications return the current sector. Earlier industry keys work where one successor holds most of the old group. The response lists each one under aliases. With asof, a sector is answered under the name that day used. Retired keys return 404 with a hint. Full table: GET /api/v1/families/us-equities/fundamentals/groups/aliases. Unknown keys come back null.
Authentication
v1 is client_id plus client_secret on every protected GET. A browser session is not enough. Google sign-in is for the website only — do not send a session cookie to v1.
- HTTP Basic —
Authorization: Basic base64(client_id:client_secret) - Headers —
X-Client-IdandX-Client-Secret
Create or rotate credentials on Account. Full notes are on Authentication.
Path parameters
This path has no parameters.
Query parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
kind | query | string | No | Comma-separated ticker, sector, industry. Default all three. |
sector | query | string | No | Only tickers in these sectors, and only those sector entries. Example: technology or SECTOR:healthcare. |
industry | query | string | No | Only tickers in these industries, and only those industry entries. Example: semiconductors. |
format | query | "json" | "csv" | No | csv returns the whole universe as one CSV file. Cannot be combined with kind, sector, or industry. |
Example request
curl -sS -u "$CLIENT_ID:$CLIENT_SECRET" \
https://barquant.dev/api/v1/families/us-equities/universe/catalog?sector=technologyResponse attributes
| Field | Type | Description |
|---|---|---|
family | string | Always us-equities-universe. |
as_of | string | null | Day of the last refresh, YYYY-MM-DD. |
refreshed_at | string | null | When the universe was last refreshed. |
count | number | Entries in symbols. |
symbols | object | Tickers first, then SECTOR: and INDUSTRY: keys. |
symbols[ticker].kind | "ticker" | A listed US stock. |
symbols[ticker].name | string | null | Company and share class name. |
symbols[ticker].sector | string | Sector name. Unknown when not classified. |
symbols[ticker].industry | string | Industry name. Unknown when not classified; Others when its industry has fewer than 5 common stocks. |
symbols[ticker].sourceIndustry | string | The original industry name. Differs from industry only for stocks listed under Others (sourceIndustryKey is its key). |
symbols[ticker].sectorKey | string | SECTOR: key, the same one valuation and sector fundamentals use. Also industryKey. |
symbols[ticker].marketCap | number | null | Market cap in USD at the last refresh. |
symbols[ticker].country | string | null | Country of the issuer. |
symbols[ticker].ipoYear | number | null | Year of the listing, when known. |
symbols[ticker].lastSale | number | null | Price at the last refresh. Also netChange, pctChange, and volume. Not live. |
symbols[ticker].commonEquity | boolean | false for ETFs, funds, warrants, rights, units, preferred shares, notes, and debentures. |
symbols[ticker].classificationSource | "primary" | "profile" | "fallback" | "unclassified" | Where sector and industry came from. unclassified names sit in the Unknown sector and industry. |
symbols[ticker].sectorEtf | string | null | Sector ETF for the sector (XLK through XLU), when there is one. |
symbols[group].kind | "sector" | "industry" | What the key names. |
symbols[group].name | string | Sector or industry name. |
symbols[group].etf | string | null | Sector ETF, or SMH for INDUSTRY:semiconductors; null otherwise. |
symbols[group].count | number | Members in the group. |
symbols[group].grouped | boolean | false only for INDUSTRY:others, a list of stocks from small industries rather than a peer group (reason others-not-a-group). |
symbols[group].reason | string | null | others-not-a-group on INDUSTRY:others; null otherwise. |
symbols[group].foldedIndustries | object[] | INDUSTRY:others only: each industry listed under it, with key, name, sectors, and members. Empty on every other group. |
symbols[group].membersBySector | object | null | INDUSTRY:others only: its members by sector key (SECTOR:name to tickers, largest market cap first). Null on every other group. |
symbols[group].members | string[] | Every member ticker, largest market cap first. Valuation and sector fundamentals use up to 25 of the largest common-equity members that have financial statements; each of those responses lists its own members in `symbols`. |
pending | boolean | true until the first universe is published. |
Sample response
{
"family": "us-equities-universe",
"as_of": "2026-09-21",
"refreshed_at": "2026-09-21T21:41:07.000Z",
"count": 3,
"symbols": {
"IBM": {
"kind": "ticker",
"symbol": "IBM",
"name": "International Business Machines Corporation",
"sector": "Technology",
"industry": "Information Technology Services",
"sectorKey": "SECTOR:technology",
"industryKey": "INDUSTRY:information-technology-services",
"marketCap": 175600000000,
"country": "US",
"ipoYear": null,
"lastSale": 188.42,
"netChange": 1.22,
"pctChange": 0.652,
"volume": 3881100,
"commonEquity": true,
"classificationSource": "primary",
"sectorEtf": "XLK"
},
"NVDA": {
"kind": "ticker",
"symbol": "NVDA",
"name": "NVIDIA Corporation",
"sector": "Technology",
"industry": "Semiconductors",
"sectorKey": "SECTOR:technology",
"industryKey": "INDUSTRY:semiconductors",
"marketCap": 4285000000000,
"country": "US",
"ipoYear": 1999,
"lastSale": 175.9,
"netChange": -2.31,
"pctChange": -1.296,
"volume": 190331215,
"commonEquity": true,
"classificationSource": "primary",
"sectorEtf": "XLK"
},
"SECTOR:technology": {
"kind": "sector",
"key": "SECTOR:technology",
"name": "Technology",
"etf": "XLK",
"count": 2,
"members": [
"NVDA",
"IBM"
]
}
},
"pending": false
}Errors
| Status | When |
|---|---|
| 400 | symbols is missing or over the key limit, kind is not ticker, sector, or industry, or format=csv is combined with a filter. |
| 401 | Missing or wrong client_id / client_secret. |
| 403 | Authenticated, but this plan does not include the stock universe. It starts on Pro. |
| 404 | The single-key path names a ticker, sector, or industry that is not in the universe. |
| 429 | Daily quota or per-minute plan quota. Read Retry-After and X-RateLimit-* headers. |
401 body:
{
"error": "Unauthorized"
}403 body:
{
"error": "This plan does not include that family.",
"plan": "basic",
"requiredPlan": "pro"
}429 body (per-minute / daily):
{
"error": "Too many requests."
}Plan access
Pro and Unlimited. Free and Basic receive 403. Every request counts as one API request against the plan quota, however many tickers it returns.
Daily and per-minute quotas live on Plans and limits.
© 2026–2035 Barquant