StockTwits Scraper
Pricing
from $1.00 / 1,000 results
StockTwits Scraper
Scrape StockTwits messages with likes, replies and charts, posts by user, the most-engaged posts, 0-100 sentiment and message-volume scores per symbol (now to all-time) and 7 trending lists incl. crypto and top gainers. Date filter. No login or API key.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Sheshinmcfly
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
💬 StockTwits Scraper
Trader sentiment from StockTwits as structured data: messages with likes, replies and charts, posts from any user, the most-engaged posts, 0-100 sentiment and message-volume scores per symbol, and every trending list, including crypto. No login, no account, no API key.
StockTwits is where retail traders say what they think about a stock or coin. This actor turns it into clean JSON or CSV. You can pull the latest posts for your tickers or follow specific traders. You can also get one row per symbol with the same sentiment, message-volume and participation scores StockTwits shows on its symbol pages, for now, the last 24 hours and every timeframe from 1 day to all-time. Or you can take the trending, most-bullish, most-active or top-gainer lists, with market data attached.
| ⚡ Fast | About 6 seconds for 30 posts and about 14 seconds for 300. Sentiment for 5 symbols takes about 5 seconds. |
| 💬 5 data types | Messages by symbol, messages by user, popular messages, sentiment scores and trending lists. |
| ❤️ Engagement | Likes, replies, reshares, reply/reshare links, attached chart images and shared links on every post. |
| 📈 Sentiment scores | 0-100 sentiment, message volume and participation, for now / 24h / 1D / 1W / 1M / 3M / 6M / 1Y / ALL. |
| 🔥 7 trending lists | Trending, most bullish, most bearish, most active, most watched, top gainers and top losers, for all assets, crypto only or equities only. |
| 📅 Date filter | Only posts since a date, or since "24 hours" or "7 days" ago. |
| 🔓 No credentials | Nothing to sign up for. |
What data does it extract?
Messages (recordType: "message", from symbol streams, user streams and popular messages):
- Post:
id,body,createdAt,sentiment(Bullish / Bearish / null),priceAtPost,symbolsMentioned,url - Engagement:
likesCount,repliesCount,resharesCount,isReply,parentMessageId,inReplyToMessageId,isReshare,resharedMessageId - Media and links:
chartImageUrl,mediaUrls,links(title + URL),mentionedUsers,postedFrom - Author:
authorUsername,authorName,authorFollowers,authorFollowing,authorIdeasCount,authorLikeCount,authorJoinDate,authorOfficial,authorAvatarUrl - Context:
source(symbol / user / popular),querySymbol,queryUsername,scrapedAt
Sentiment scores (recordType: "sentiment", one row per symbol):
- Now and 24h:
sentimentScore(0-100),sentimentLabel,sentimentScore24h,sentimentLabel24h,sentimentChange24h,messageVolumeScore,messageVolumeLabel,messageVolume24h,messageVolumeChange24h - Timeframes:
timeframesholds an entry for each of1D,1W,1M,3M,6M,1YandALL. Each entry hassentimentScore/sentimentLabel/sentimentChange,messageVolumeScore/messageVolume/messageVolumeLabel/messageVolumeChangeandparticipationScore/participationLabel/participationChange. - Quote:
price,priceChange,priceChangePercent,previousClose,open,high,low,volume,extendedHoursPrice,extendedHoursChangePercent,extendedHoursType,priceTime - Topics and identity:
trendingTopics(label, description, message count),title,exchange,sector,industry,instrumentClass,isin,cusip,watchlistCount
The scores are the ones StockTwits shows on its symbol pages. Each one compares today's reading with that symbol's own history, from 0 (extremely bearish / extremely low) to 100 (extremely bullish / extremely high).
Trending lists (recordType: "trending"):
list,trendingRank,symbol,title,instrumentClass,trendingScore,watchlistCount,trends(rank breakdown plus StockTwits' summary of why the symbol is trending)- Market data:
marketCap(USD),peRatio,eps,beta,high52Week,low52Week,movingAverage50Day,avgDailyVolume1M,dividendRate,isin,cusip,sector,industry,exchange
Who uses this, and for what
- Sentiment signals: track the 0-100 sentiment and message-volume score of a watchlist every hour, and flag sudden spikes in chatter before a move.
- Earnings and news reactions: pull every post since the announcement with the date filter, then measure the bullish/bearish split and engagement.
- Crypto research: get the most-bullish, most-active or top-gainer crypto lists, or the posts for
BTC.X,ETH.Xand other coins. - Influencer tracking: follow specific traders' posts and see which of them get the most likes and replies.
- Screening ideas: start from top gainers, most watched or most active, then dig into the sentiment of each name.
- NLP and research datasets: get labelled (Bullish/Bearish) financial text with the price at the time of posting.
Quick start: copy an input and run
Latest posts for your tickers
{ "dataType": "messages", "symbols": ["AAPL", "TSLA", "BTC.X"], "maxResultsPerSymbol": 100 }
Only bullish posts from the last 24 hours
{ "dataType": "messages", "symbols": ["NVDA"], "maxResultsPerSymbol": 500, "sinceDate": "24 hours", "sentimentFilter": "Bullish" }
Sentiment scores for a watchlist
{ "dataType": "sentiment", "symbols": ["AAPL", "SPY", "BTC.X", "ETH.X"] }
Posts from specific traders
{ "dataType": "userMessages", "usernames": ["howardlindzon"], "maxResultsPerSymbol": 60 }
Most-engaged posts for a symbol (or leave symbols empty for the whole platform)
{ "dataType": "popularMessages", "symbols": ["AAPL"], "maxResultsPerSymbol": 40 }
Most bullish crypto right now
{ "dataType": "trending", "trendingList": "most_bullish", "assetClass": "crypto", "maxTrendingResults": 50 }
How to use
- Pick a Data type.
- Add Symbols for messages, sentiment or per-symbol popular messages. Add Usernames for user messages. Tickers,
$TICKER,@userand StockTwits URLs all work. Crypto uses the.Xsuffix (BTC.X). - Optionally limit posts with Only messages since and Sentiment filter, and cap them with Max messages per symbol / user.
- For trending, choose the Trending list, the Asset class and Max trending results.
- Run, then export as JSON, CSV, Excel or via API. The dataset has a ready-made table view for each data type.
Input parameters
| Field | Title | Description |
|---|---|---|
dataType | Data type | messages, userMessages, popularMessages, sentiment or trending. |
symbols | Symbols | Stock or crypto tickers (AAPL, BTC.X). Required for messages and sentiment; optional for popular messages. |
usernames | Usernames | StockTwits usernames for userMessages. |
maxResultsPerSymbol | Max messages per symbol / user | Messages per symbol or user (default 30). |
sinceDate | Only messages since | YYYY-MM-DD, an ISO date-time, or 24 hours / 7 days / 2 weeks. |
sentimentFilter | Sentiment filter | Bullish or Bearish only. Leave it empty for all posts. |
trendingList | Trending list | trending, most_bullish, most_bearish, most_active, top_watched, top_gainers or top_losers. |
assetClass | Asset class | all, crypto or equities, for trending lists. |
maxTrendingResults | Max trending results | Symbols to return from the list (default 30). |
Output example
Message
{"recordType": "message","source": "symbol","id": 667505060,"querySymbol": "SPY","body": "$SPY $QQQ $SLV.X $USO 27$ Brett tank loading.. as long as Bibi not in power.. wohoo! $APP","createdAt": "2026-10-28T02:36:06Z","sentiment": "Bullish","priceAtPost": 769.99,"symbolsMentioned": ["SPY", "QQQ", "SLV.X", "USO", "APP"],"likesCount": 2,"repliesCount": 0,"resharesCount": 0,"isReply": false,"isReshare": false,"chartImageUrl": "https://media.stocktwits-cdn.com/api/3/media/15291186/original.png","links": [],"postedFrom": "StockTwits Web","url": "https://stocktwits.com/MomentumWins/message/667505060","authorUsername": "MomentumWins","authorFollowers": 965,"authorIdeasCount": 40484,"authorJoinDate": "2015-01-26"}
Sentiment scores (timeframes shortened)
{"recordType": "sentiment","symbol": "AAPL","title": "Apple Inc","isin": "US0378331005","watchlistCount": 998778,"sentimentScore": 25,"sentimentLabel": "BEARISH","sentimentScore24h": 22,"sentimentLabel24h": "EXTREMELY_BEARISH","sentimentChange24h": -12,"messageVolumeLabel": "NORMAL","messageVolume24h": 49131,"messageVolumeChange24h": 1.8868,"timeframes": {"1W": {"sentimentScore": 21, "sentimentLabel": "EXTREMELY_BEARISH", "sentimentChange": -16,"messageVolumeScore": 53, "messageVolume": 49080, "messageVolumeLabel": "NORMAL","participationScore": 19, "participationLabel": "EXTREMELY_LOW", "participationChange": 18.75}},"price": 347.1,"priceChangePercent": 0.928,"previousClose": 343.91,"extendedHoursType": "PostMarket","priceTime": "2026-10-27T20:00:00Z","trendingTopics": [{ "label": "📱 CrackGate", "description": "Users are reporting widespread hardware failures and hinge-line cracking on the new foldable smartphone launch, sparking debates over durability.", "messageCount": 82 }]}
Trending list
{"recordType": "trending","list": "trending","trendingRank": 2,"symbol": "HOOD","title": "Robinhood Markets Inc","instrumentClass": "Stock","trendingScore": 12.3978,"watchlistCount": 101836,"marketCap": 85017216797,"peRatio": 41.87,"beta": 2.7306,"high52Week": 150.47,"low52Week": 63.515,"sector": "Finance","url": "https://stocktwits.com/symbol/HOOD"}
Performance & cost
| Job | Typical time |
|---|---|
| 30 posts for 1 symbol | ~6 s |
| 60 posts each for 3 symbols | ~10 s |
| 300 posts for 1 symbol | ~14 s |
| Sentiment scores for 5 symbols | ~5 s |
| A trending list (30 to 100 symbols) | ~5 s |
Large watchlists stay fast. With a date filter you only wait for, and pay for, posts inside your date range.
Pricing
Pay per result: $0.001 per result. A result is one message, one symbol's sentiment row, or one symbol from a trending list.
| Results | Estimated cost |
|---|---|
| 100 | $0.10 |
| 1,000 | $1.00 |
| 10,000 | $10.00 |
Symbols and users that don't exist on StockTwits are skipped and not charged. The run's status message names them. The Apify Free plan includes $5 of free usage to get started.
FAQ
Do I need a StockTwits account or API key? No. Nothing to sign up for.
Does it work for crypto?
Yes. Use the .X suffix (BTC.X, ETH.X, SOL.X) for messages and sentiment, and set Asset class to crypto for trending lists.
Why do most posts have sentiment: null?
Tagging a post Bullish or Bearish is optional on StockTwits, and most people don't. Use Sentiment filter to keep only tagged posts, or the Sentiment scores data type for the aggregate reading.
What does a sentiment score of 25 mean?
The score runs from 0 to 100 and compares the current reading with that symbol's own history. 25 means more bearish than usual for that symbol. The label (EXTREMELY_BEARISH … EXTREMELY_BULLISH) is the same reading in words.
How far back can I go? Symbol and user streams go back as far as you ask, page by page. Busy tickers produce thousands of posts a day, so pair a large limit with Only messages since.
Why is a field null?
Because StockTwits has no value for it: a coin has no P/E, an ETF has no ISIN on some lists, a new symbol may have no timeframe history yet. Nothing is invented to fill the gap.
Keywords
stocktwits scraper, stocktwits api, stock sentiment data, trader sentiment api, social sentiment score, stocktwits sentiment, trending stocks scraper, most bullish stocks, top gainers list, crypto sentiment, retail trader chatter, social trading data, stock market sentiment, financial nlp dataset.
Related actors
- Yahoo Finance Scraper: quotes, fundamentals, screener and options chains.
- FinViz Stock Screener: screen the US market with up to 108 data points per stock.
- Reddit Thread Scraper: posts and comment threads from any subreddit.
- TradingView Screener: screen global markets by technical and fundamental filters.
Disclaimer
This actor collects only publicly visible StockTwits data. It does not access private or authenticated content. Use the data responsibly, in line with StockTwits' terms and applicable law. You are responsible for how you use it. Nothing here is investment advice.
Changelog
| Version | Date | Changes |
|---|---|---|
| 1.1 | 2026-10-28 | New data types: messages by user, popular messages, sentiment scores (0-100, now/24h/1D-ALL, plus quote and trending topics) and 7 trending lists with crypto/equities filter and market data. Messages now include likes, replies, reshares, chart images and links. New "only messages since" filter. Message links now open the post correctly. Faster runs. |
| 1.0 | 2026-07-14 | Initial release: messages with sentiment and trending symbols. |