stocktwits.com APIstocktwits.com ↗
Get currently trending stock and crypto symbols from Stocktwits — with ticker, price, volume, trending scores, and market index data. Paginated, filterable by asset class.
curl -X GET 'https://api.parse.bot/scraper/09e16524-4533-449c-b713-8f1299802060/get_trending_symbols?limit=10' \ -H 'X-API-Key: $PARSE_API_KEY'
Get the list of currently trending stock ticker symbols on Stocktwits, including company names, trending scores, price data, volume, and community trend summaries. Results are paginated with up to 30 symbols per page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| class | string | Asset class filter. Accepted values: all, equity, crypto. |
| limit | integer | Number of trending symbols to return per page (max 30). |
| region | string | Region filter. Accepted values: US, CA, X (for crypto). |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"has_more": "boolean, whether more pages are available",
"market_indexes": "array of market index ETF objects with symbol, title, exchange, price, change, percent_change, and volume",
"total_returned": "integer, number of symbols returned on this page",
"trending_symbols": "array of trending symbol objects with rank, symbol, title, exchange, sector, industry, instrument_class, trending_score, watchlist_count, logo_url, trend_summary, trend_rank_all, trend_rank_region, price, change, percent_change, and volume"
},
"sample": {
"data": {
"page": 1,
"has_more": true,
"market_indexes": [
{
"price": 741.44,
"title": "SPDR S&P 500 ETF Trust",
"change": -6.73,
"symbol": "SPY",
"volume": 10355142,
"exchange": "NYSEArca",
"percent_change": -0.9
}
],
"total_returned": 30,
"trending_symbols": [
{
"rank": 1,
"price": 23.66,
"title": "Figma",
"change": 3.42,
"sector": "TechnologyServices",
"symbol": "FIG",
"volume": 30357600,
"exchange": "NYSE",
"industry": "PackagedSoftware",
"logo_url": "https://logos.stocktwits-cdn.com/FIG.png",
"trend_summary": "Figma is trending following a strong quarterly earnings report...",
"percent_change": 16.9,
"trend_rank_all": 1,
"trending_score": 19.78,
"watchlist_count": 16052,
"instrument_class": "Stock",
"trend_rank_region": 1
}
]
},
"status": "success"
}
}About the stocktwits.com API
The Stocktwits Trending Symbols API exposes one endpoint — get_trending_symbols — that returns up to 30 trending tickers per page, each with fields including trending_score, instrument_class, sector, industry, watchlist count, and current price data. It also includes a market_indexes array with ETF-level price and volume snapshots, giving a quick read on broader market context alongside community momentum signals.
What the API Returns
The get_trending_symbols endpoint returns a paginated list of tickers currently trending on Stocktwits. Each entry in the trending_symbols array includes the ticker symbol, company title, exchange, sector, industry, instrument_class, trending_score, and watchlist count. The trending_score is a numeric signal reflecting the relative volume of discussion for that symbol at the time of the request.
Filtering and Pagination
Results can be filtered using the class parameter, which accepts all, equity, or crypto. The region parameter narrows results to US, CA, or X (crypto). Use the limit parameter to request fewer than the maximum 30 results per page, and the page parameter to step through additional pages. The has_more boolean in the response indicates whether further pages exist.
Market Index Context
Alongside trending symbols, the response includes a market_indexes array. Each entry contains a market index ETF with its symbol, title, exchange, price, change, percent_change, and volume. This lets you cross-reference community trending activity against broad market movement without making a separate request.
Coverage Notes
The API covers equities listed on US and Canadian exchanges, as well as crypto assets. Sector and industry classifications are returned where available, but may be absent for certain instruments — particularly crypto assets, which often omit sector and industry fields. The watchlist field reflects community tracking counts on Stocktwits specifically and does not represent order flow or brokerage activity.
- Track which tickers are surging in social discussion before or after market open using
trending_score - Filter trending crypto assets separately from equities using the
class=cryptoparameter - Compare community momentum signals against market index ETF moves using the
market_indexesresponse field - Build a sector-level heat map of retail investor interest by aggregating
sectorandindustryfields - Monitor
watchlistcounts over time to detect growing retail attention in specific tickers - Scope trending activity to Canadian-listed securities using the
region=CAfilter - Page through full trending lists programmatically using the
pageandhas_morefields
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Stocktwits have an official developer API?+
What does the `trending_score` field represent?+
trending_score is a numeric value that reflects how actively a symbol is being discussed on Stocktwits relative to its baseline activity. It is not a sentiment polarity score — it measures discussion volume or velocity, not whether sentiment is bullish or bearish.Does the API return individual Stocktwits posts or sentiment breakdowns for each trending symbol?+
trending_score and watchlist counts, but does not return individual messages, bullish/bearish vote splits, or per-symbol sentiment percentages. You can fork this API on Parse and revise it to add an endpoint that fetches symbol-level message streams or sentiment data.Are all 30 trending symbols always returned in a single response?+
limit parameter controls how many symbols are returned per page, up to a maximum of 30. The total_returned field in the response confirms the actual count. If more results exist beyond the current page, has_more will be true and you can increment the page parameter to retrieve them.