> ## Documentation Index
> Fetch the complete documentation index at: https://fruitstand.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Get a List of Every US Stock and ETF Ticker in SQL

> Get a list of every US stock and ETF ticker in Snowflake with one SQL query: about 18,200 active stocks and 5,960 ETFs, by exchange, with ISINs and status.

*By [Fruit Stand Team](https://fruitstand.dev/about.md) · November 3, 2026 · Guides*

To get every US stock and ETF ticker in SQL, query a security master table
filtered to active stocks and ETFs. In Fruit Stand's Historical Stock Prices
listing on Snowflake, that's one query against `security_vw`, which returns
about 18,200 active stocks and 5,960 ETFs, each with its exchange, ISIN and
status.

The rest of this post shows that query, what's in the list by exchange, and
how to narrow it to what you need, such as exchange-listed stocks only or
tickers that traded recently.

## The query

Don't have stock data in Snowflake yet? [How to Get Historical Stock Prices
into Snowflake](https://fruitstand.dev/blog/historical-stock-prices-into-snowflake.md) covers the three
ways to load it, from a Marketplace listing to your own pipeline.

```sql theme={null}
select code, name, asset_class, exchange, isin
from security_vw
where exchange_code = 'US'
  and asset_class in ('stock', 'etf')
  and not is_inactive
order by code;
```

`asset_class` is `stock`, `etf` or `fund` (about 25,700 mutual funds are in
the same table). `is_inactive` marks securities that have stopped trading,
with the date in `inactive_date`, so leaving out that filter adds the 455
inactive stocks and ETFs we still carry.

## What's in the list

Counts of active securities as of November 2, 2026:

| Exchange | Stocks | ETFs |
| - | -: | -: |
| Nasdaq | 3,625 | 1,196 |
| NYSE | 2,595 | 230 |
| NYSE Arca | – | 2,490 |
| Cboe BZX (BATS) | – | 1,538 |
| NYSE American (AMEX) | 253 | – |
| OTC markets (Pink, OTCQB, OTCQX, Grey and others) | about 11,350 | about 210 |
| Total, including smaller groups | 18,228 | 5,959 |

The single biggest group is OTC stocks: about 8,450 on the Pink market
alone. Most lists you find online stop at exchange-listed stocks, which is
about 6,500 here. Whether you want OTC securities depends on the job.

## Narrowing the list

**Exchange-listed stocks only**, leaving out OTC:

```sql theme={null}
select code, name, exchange
from security_vw
where exchange_code = 'US'
  and asset_class = 'stock'
  and not is_inactive
  and exchange in ('NASDAQ', 'NYSE', 'AMEX')
order by code;
```

**Tickers that actually traded recently**, which drops securities that are
listed but quiet:

```sql theme={null}
select s.code, s.name, s.exchange, max(p.date) as last_trade
from security_vw s
join security_price_history_vw p
    on p.code = s.code and p.exchange_code = s.exchange_code
where s.exchange_code = 'US'
  and s.asset_class in ('stock', 'etf')
  and not s.is_inactive
  and p.date >= dateadd('day', -7, current_date())
  and p.volume > 0
group by s.code, s.name, s.exchange
order by s.code;
```

Run on November 2, 2026, it returned 18,282 stocks and ETFs with volume in
the previous seven days.

**Preferred shares** use a `-P` suffix in `code`, such as `JPM-PC`. Filter
with `code like '%-P%'` to include or exclude them.

## Things to watch

* **Tickers change.** Companies rename and reuse symbols. Join on `isin`
  where you can, and treat `code` as the current ticker rather than a
  permanent ID.
* **Share classes.** BRK-A and BRK-B, GOOGL and GOOG are separate rows.
  Count companies and tickers separately.
* **Duplicates across formats.** Some preferred shares appear in more than
  one ticker format. If you count preferreds, check for pairs such as
  `JPM-P-C` and `JPM-PC`.
* **Free lists go stale.** CSV ticker lists from websites are snapshots. A
  table that updates daily picks up new listings and delistings without
  another download.

## Where else to get a ticker list

* **Exchange symbol directories.** Nasdaq publishes daily symbol directory
  files covering Nasdaq-listed and other exchange-listed securities. They're
  free and authoritative for exchange listings but don't include OTC stocks
  or price history.
* **SEC company tickers file.** The SEC publishes a JSON file mapping tickers
  to company CIKs. It's useful for joining to filings, but it's keyed by
  company, not by every share class or ETF.
* **A Marketplace listing.** The list above comes with daily prices for every
  ticker in the same database, so the list and the data never drift apart.

## F.A.Q.

> [accordion] How many stocks are listed in the US?
>
> About 6,500 stocks trade on the main US exchanges (Nasdaq, NYSE and NYSE American) in our data, plus about 11,350 on OTC markets. Counts differ by source depending on whether OTC stocks, preferred shares and share classes are included.

> [accordion] How many ETFs are there in the US?
>
> About 5,960 active ETFs in our data, most listed on NYSE Arca (about 2,490), Cboe BZX (about 1,540) and Nasdaq (about 1,200).

> [accordion] Can I get delisted tickers too?
>
> The table keeps securities marked inactive, but the Historical Stock Prices listing doesn't carry full history for delisted companies. For survivorship-bias-free research, CRSP is the standard source.

> [accordion] Can I get mutual fund tickers the same way?
>
> Yes. Use `asset_class = 'fund'` for about 25,700 active US mutual funds, with daily NAV in the same price table.

To get the full list with daily prices for every ticker, start a free 30-day
trial of the [Historical Stock Prices listing on the Snowflake Marketplace](https://app.snowflake.com/marketplace/listing/GZTYZTG3LNFA).
The schema is in the [dataset docs](https://fruitstand.dev/datasets/historical-stock-prices.md).
Questions? Reach out at [contact@fruitstand.dev](mailto:contact@fruitstand.dev).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.