Stocktwits Scraper - Messages, Sentiment & Trending Symbols
Pricing
from $0.69 / 1,000 messages
Stocktwits Scraper - Messages, Sentiment & Trending Symbols
Collect Stocktwits messages for any ticker or user, the trending feed and the ranked trending-symbols board, with author sentiment, price targets, engagement and Stocktwits sentiment scores. No login.
Pricing
from $0.69 / 1,000 messages
Rating
0.0
(0)
Developer
ClearPath
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
From Clearpath, creators of Bluesky Scraper, Reddit Search Scraper and Reddit Comments Scraper. 250,000+ combined lifetime runs across those two Reddit scrapers.
Posts, sentiment and the people behind them
- Fast bulk exports. Three 1,000-post TSLA exports finished in 33.8 to 37.6 seconds. Timing varies with the ticker, stream depth and settings; replies and separate symbol rows were off in those runs.
- Get more than the post text. Author Bullish or Bearish tags, price targets, likes, replies, reshares, media and trader profiles, where available. Posts without a sentiment tag stay unlabeled.
- Add the ticker's sentiment scores. Include Stocktwits' own sentiment and message-volume scores alongside the posts. Follow individual tickers and traders, or explore the trending feeds.
Try AAPL and TSLA
Open the input page, switch to JSON and paste:
{"symbols": ["AAPL","TSLA"],"maxMessagesPerSource": 25,"maxResults": 52,"includeSymbolRows": true,"includeSymbolSentiment": true}
This collects up to 25 posts per ticker and adds a profile row for each ticker with Stocktwits sentiment scores. Symbol rows are billed separately from posts; see current pricing. Change the tickers or add usernames for your own research. Crypto tickers end in .X, for example BTC.X.
The image uses a saved AAPL example: the author's Bullish tag and price target are separate from Stocktwits' own ticker sentiment. Values change over time. The small trial does not reproduce the 1,000-post benchmark.
| Clearpath social research • Posts, sentiment & audiences |
➤ You are here Posts & audiences Keyword monitoring Full threads & replies |
Copy to your AI assistant
Help me use clearpath/stocktwits-scraper on Apify. Read https://apify.com/clearpath/stocktwits-scraper.md for documentation, input schema, pricing and limits. symbols and usernames choose what to collect, maxMessagesPerSource caps each ticker, user or feed and maxResults caps the whole run; trendingSymbols adds the ranked trending board, billed per symbol row. Choose settings for my requested outcome. If you cannot retrieve the page, ask me to paste the relevant sections. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
How to scrape Stocktwits
- Enter ticker symbols (
AAPL,$TSLA,BTC.Xor a stocktwits.com/symbol link), usernames (howardlindzon,@nameor a profile link), or turn on the trending feed or trending board. - Choose how many messages per ticker, user or feed (default 100,
0for everything Stocktwits still shows). - Run, then download the dataset as JSON, CSV, Excel or HTML, or read it from your own code.
Messages come newest first. A message that matches two of your inputs is saved once; matchedInput names the first input that found it.
Options
| Option | What it does | Default |
|---|---|---|
symbols | Tickers whose message streams to collect. Stocks, ETFs, indexes and crypto (.X). | none |
usernames | Users whose posts to collect. | none |
maxMessagesPerSource | Messages per ticker, user and the trending feed. 0 collects everything still shown. | 100 |
trendingMessages | Also collect the Stocktwits trending feed. | off |
trendingSymbols | Also save the ranked trending-symbols board, one row per symbol. | off |
maxTrendingSymbols | Board rows to save. 0 saves the whole board (500+ symbols). | 100 |
messagesFromTrendingSymbols | Also collect messages for the top N trending symbols. | 0 (off) |
trendingSymbolsClass | all or crypto board. | all |
maxResults | Cap on saved rows for the whole run. | no cap |
sentiment | all, bullish, bearish or unlabeled (author's own tag). | all |
contentFilter | For tickers: all, charts (chart, image or GIF) or links. | all |
onlyPriceTargets | Only messages with a price target. Price targets are rare, so the run reads many more messages to find them. | off |
postedAfter | Only messages after a date (2026-11-01) or a period (7 days, 12 hours). | none |
newerThanMessageId / olderThanMessageId | Collect only new messages since your last run, or continue further back. | none |
includeReplies | Also save the replies of each collected message that started a conversation. Replies follow the same filters, do not count toward maxMessagesPerSource, and each is a billed message; maxResults caps them. | off |
includeSymbolRows | Also save one symbol row per ticker you entered (watchers, Stocktwits sentiment and message volume). Billed as a symbol. | off |
includeSymbolSentiment | Stocktwits' sentiment and message-volume scores on every symbol row. No extra charge. | on |
Every filter is off by default, so you get everything Stocktwits shows unless you narrow it.
More examples
Only bullish messages with a chart for Nvidia, last 7 days:
{"symbols": ["NVDA"],"sentiment": "bullish","contentFilter": "charts","postedAfter": "7 days","maxMessagesPerSource": 0}
The ranked trending board with sentiment scores, top 300:
{"trendingSymbols": true,"maxTrendingSymbols": 300}
Messages for today's top 10 trending tickers, 200 each:
{"messagesFromTrendingSymbols": 10,"maxMessagesPerSource": 200}
Price targets across several tickers:
{"symbols": ["TSLA", "NVDA", "AAPL", "AMD", "PLTR"],"onlyPriceTargets": true,"maxMessagesPerSource": 20}
New messages since your last run (use the highest messageId you saved):
{"symbols": ["GME"],"newerThanMessageId": 667990000,"maxMessagesPerSource": 0}
A user's posts with the replies to them:
{"usernames": ["howardlindzon"],"includeReplies": true,"maxMessagesPerSource": 100}
What data can you extract from Stocktwits?
Two kinds of rows, told apart by recordType: message and symbol. The dataset has a Messages view and a Symbols view.
Message rows
| Field | Meaning |
|---|---|
messageId, url, createdAt | Message ID, link and time (UTC). |
body, bodyTokens, symbols, mentions, hashtags | Text, its cashtag/mention/link pieces, tickers, mentioned users and hashtags. |
sentiment, sentimentScore | Author's tag: Bullish (1), Bearish (-1) or none (0). |
likeCount, replyCount, reshareCount, likedByUserIds, resharedByUserIds | Engagement. |
isReply, isConversationStart, conversationParentMessageId, inReplyToMessageId, conversation | Reply context. |
isReshare, resharedMessageId, resharedMessage, reshareInfo | Reshare context, with the original message in full. |
priceTarget, priceTargetCurrency, priceTargetDate, priceTargetDateTime, priceTargetStartDate, priceTargetStartingPrice, priceTargetCurrentPrice, priceTargetChangePercent, priceTargetSentiment, priceTargetStatus, priceTargetIsHit, priceTargetSymbol, priceTargetDetails | The author's price prediction, when set. |
priceSincePost | Price change of the mentioned ticker since the post, when Stocktwits shows it. |
chartUrl, chart, mediaUrl, media, mediaCount, giphyId | Charts, images, videos and GIFs. |
links, linkCount | Linked pages with title, description, image and site. |
pricesAtPost, symbolDetails | Price of each ticker when posted; full ticker details (exchange, watchers, sector, sentiment and volume change). |
userId, username, userDisplayName, userAvatarUrl, userProfileUrl, userFollowers, userFollowing, userIdeas, userLikeCount, userWatchlistCount, userOfficial, userIdentity, userJoinDate, userHomeCountry, userClassification, author | Author profile. |
sourceId, sourceTitle, sourceUrl | App the message was posted from. |
isDiscussion, discussionId, discussionType, discussable | Discussions, polls and earnings summaries attached to the message. |
matchedInput, inputType, scrapedAt | Which input found the row (symbol, user, trending, reply, trendingSymbolMessages) and when. |
A real message row (one ticker stream, likedByUserIds shortened):
{"recordType": "message","messageId": 667997694,"url": "https://stocktwits.com/GoDeepinBashersMom/message/667997694","body": "$SMCI do you even understand what will happen ? $PLTR $NVDA $BTC.X","createdAt": "2026-11-03T11:18:02Z","sentiment": "Bullish","sentimentScore": 1,"symbols": ["SMCI","PLTR","NVDA","BTC.X"],"mentions": [],"hashtags": [],"likeCount": 2,"replyCount": 0,"reshareCount": 0,"isReshare": false,"isReply": false,"isConversationStart": false,"isDiscussion": false,"conversationParentMessageId": null,"inReplyToMessageId": null,"resharedMessageId": null,"userId": 9101175,"username": "GoDeepinBashersMom","userDisplayName": "Sick Mode","userAvatarUrl": "https://avatars.stocktwits.com/production/9101175/thumb-1718829899.png","userProfileUrl": "https://stocktwits.com/GoDeepinBashersMom","userFollowers": 199,"userFollowing": 19,"userIdeas": 4738,"userLikeCount": 9344,"userWatchlistCount": 76,"userOfficial": false,"userIdentity": "User","userJoinDate": "2024-05-28","userHomeCountry": "CZ","userClassification": [],"chartUrl": "https://media.stocktwits-cdn.com/api/3/media/15395634/original.png","mediaUrl": "https://media.stocktwits-cdn.com/api/3/media/15395634/original.png","mediaCount": 2,"linkCount": 0,"priceTarget": null,"priceTargetCurrency": null,"priceTargetDate": null,"priceTargetDateTime": null,"priceTargetStartDate": null,"priceTargetStartingPrice": null,"priceTargetCurrentPrice": null,"priceTargetChangePercent": null,"priceTargetSentiment": null,"priceTargetStatus": null,"priceTargetIsHit": null,"priceTargetSymbol": null,"sourceId": 2095,"sourceTitle": "StockTwits For Android","sourceUrl": "http://www.stocktwits.com/mobile","discussionId": null,"discussionType": null,"matchedInput": "NVDA","inputType": "symbol","scrapedAt": "2026-11-03T11:41:26.347Z","author": {"id": 9101175,"username": "GoDeepinBashersMom","name": "Sick Mode","avatarUrl": "https://avatars.stocktwits.com/production/9101175/thumb-1718829899.png","avatarUrlSsl": "https://avatars.stocktwits.com/production/9101175/thumb-1718829899.png","joinDate": "2024-05-28","official": false,"identity": "User","classification": [],"badges": [],"homeCountry": "CZ","searchRegions": [],"followers": 199,"following": 19,"ideas": 4738,"watchlistStocksCount": 76,"likeCount": 9344,"plusTier": "","premiumRoom": "","tradeApp": false,"tradeStatus": "PENDING_MFA","profileUrl": "https://stocktwits.com/GoDeepinBashersMom"},"symbolDetails": [{"id": 3563,"symbol": "SMCI","symbolMic": "SMCI.XNAS","symbolDisplay": "SMCI","exchange": "NASDAQ","region": "US","logoUrl": "https://logos.stocktwits-cdn.com/SMCI.png","title": "Super Micro Computer Inc","aliases": [],"deeplink": "symbol/SMCI","externalId": null,"isFollowing": false,"watchlistCount": 93804,"hasPricing": true,"instrumentClass": "Stock","liveEvent": false,"earningsCta": "up_earn_tab","earningsId": "891fbadb-5086-4f50-9d05-989f64a1afa9","tradeStatus": "FRACTIONAL","sentimentChange": -2.44,"volumeChange": 14.05,"url": "https://stocktwits.com/symbol/SMCI"},{"id": 8993,"symbol": "PLTR","symbolMic": "PLTR.XNAS","symbolDisplay": "PLTR","exchange": "NASDAQ","region": "US","logoUrl": "https://logos.stocktwits-cdn.com/PLTR.png","title": "Palantir Technologies Inc","aliases": [],"deeplink": "symbol/PLTR","externalId": null,"isFollowing": false,"watchlistCount": 325871,"hasPricing": true,"instrumentClass": "Stock","liveEvent": false,"tradeStatus": "FRACTIONAL","sentimentChange": -7.8,"volumeChange": 138.58,"url": "https://stocktwits.com/symbol/PLTR"},{"id": 2925,"symbol": "NVDA","symbolMic": "NVDA.XNAS","symbolDisplay": "NVDA","exchange": "NASDAQ","region": "US","logoUrl": "https://logos.stocktwits-cdn.com/NVDA.png","title": "NVIDIA Corp","aliases": [],"deeplink": "symbol/NVDA","externalId": null,"isFollowing": false,"watchlistCount": 674411,"hasPricing": true,"instrumentClass": "Stock","liveEvent": false,"earningsCta": "up_earn_tab","earningsId": "f2a0f14c-7f7a-41de-b687-f8404e5de42b","tradeStatus": "FRACTIONAL","sentimentChange": -5.46,"volumeChange": 6.54,"url": "https://stocktwits.com/symbol/NVDA"},{"id": 11418,"symbol": "BTC.X","symbolMic": "BTC.X","symbolDisplay": "BTC","exchange": "CRYPTO","region": "X","logoUrl": "https://logos.stocktwits-cdn.com/BTC.X.webp","title": "Bitcoin","aliases": ["BTCUSD"],"deeplink": "coins/bitcoin","externalId": "bitcoin","isFollowing": false,"watchlistCount": 685726,"hasPricing": true,"instrumentClass": "CRYPTO","liveEvent": false,"sentimentChange": -0.42,"volumeChange": 4.88,"url": "https://stocktwits.com/symbol/BTC.X"}],"pricesAtPost": [{"id": 3563,"symbol": "SMCI","symbolMic": "SMCI.XNAS","price": 31.17},{"id": 8993,"symbol": "PLTR","symbolMic": "PLTR.XNAS","price": 165.35},{"id": 2925,"symbol": "NVDA","symbolMic": "NVDA.XNAS","price": 204.99},{"id": 11418,"symbol": "BTC.X","symbolMic": "BTC.X","price": 77116.0}],"conversation": null,"chart": {"id": 15395634,"type": "image","thumb": "https://media.stocktwits-cdn.com/api/3/media/15395634/thumb.webp","medium": "https://media.stocktwits-cdn.com/api/3/media/15395634/medium.webp","large": "https://media.stocktwits-cdn.com/api/3/media/15395634/large.webp","original": "https://media.stocktwits-cdn.com/api/3/media/15395634/original.png","url": "https://media.stocktwits-cdn.com/api/3/media/15395634/default.webp","height": 2712,"width": 1220,"ratio": 0.449852},"media": [{"id": 15395634,"type": "image","thumb": "https://media.stocktwits-cdn.com/api/3/media/15395634/thumb.webp","medium": "https://media.stocktwits-cdn.com/api/3/media/15395634/medium.webp","large": "https://media.stocktwits-cdn.com/api/3/media/15395634/large.webp","original": "https://media.stocktwits-cdn.com/api/3/media/15395634/original.png","url": "https://media.stocktwits-cdn.com/api/3/media/15395634/default.webp","height": 2712,"width": 1220,"ratio": 0.449852,"provider": null,"providerId": null},{"id": 15395635,"type": "image","thumb": "https://media.stocktwits-cdn.com/api/3/media/15395635/thumb.webp","medium": "https://media.stocktwits-cdn.com/api/3/media/15395635/medium.webp","large": "https://media.stocktwits-cdn.com/api/3/media/15395635/large.webp","original": "https://media.stocktwits-cdn.com/api/3/media/15395635/original.png","url": "https://media.stocktwits-cdn.com/api/3/media/15395635/default.webp","height": 2712,"width": 1220,"ratio": 0.449852,"provider": null,"providerId": null}],"giphyId": null,"links": [],"priceTargetDetails": null,"priceSincePost": null,"discussable": null,"likedByUserIds": [11153998,1483108],"resharedByUserIds": [],"bodyTokens": [{"type": "cashTag","text": "$SMCI","symbol": "SMCI","symbolDisplay": "SMCI","logoUrl": "https://logos.stocktwits-cdn.com/SMCI.png","deeplink": "symbol/SMCI"},{"type": "text","text": " do you even understand what will happen ? "},{"type": "cashTag","text": "$PLTR","symbol": "PLTR","symbolDisplay": "PLTR","logoUrl": "https://logos.stocktwits-cdn.com/PLTR.png","deeplink": "symbol/PLTR"},{"type": "text","text": " "},{"type": "cashTag","text": "$NVDA","symbol": "NVDA","symbolDisplay": "NVDA","logoUrl": "https://logos.stocktwits-cdn.com/NVDA.png","deeplink": "symbol/NVDA"},{"type": "text","text": " "},{"type": "cashTag","text": "$BTC","symbol": "BTC.X","symbolDisplay": "BTC","logoUrl": "https://logos.stocktwits-cdn.com/BTC.X.webp","deeplink": "coins/bitcoin"}],"reshareInfo": null,"resharedMessage": null}
Symbol rows
| Field | Meaning |
|---|---|
rank, trending, trendingScore, trendSummary, trendSummaryAt, trendRankAll, trendRankRegion, trendRankExchange, trendRankClass | Position on the trending board and Stocktwits' trend summary (written for the most active tickers). |
symbol, symbolDisplay, symbolMic, symbolId, title, url, exchange, region, instrumentClass, logoUrl, isin, cusip, aliases | Ticker identity. |
watchlistCount, sentimentChange, volumeChange | Watchers and the day's sentiment and message-volume change (on symbols you enter; the trending board does not carry these two). |
marketCap, sector, industry, fundamentals | Market cap (USD) and 40+ fundamentals (millions where applicable). |
price, priceChange, priceChangePercent, previousClose, volume, extendedHoursPrice, extendedHoursChangePercent, currency, priceAt, priceData | Latest regular-session price, pre- and after-market price, and the full price record. |
sentimentScoreNow, sentimentLabelNow, sentimentScore15m, sentimentScore24h, ... | Stocktwits' sentiment score (0 to 100) with label and change. |
messageVolumeScoreNow, messageVolumeLabelNow, ... | Stocktwits' message-volume score with label and change. |
sentimentTimeframes | Sentiment, message volume and participation for 1 day, 1 week, 1 month, 3 months, 6 months, 1 year and all time. |
A real trending-board row:
{"recordType": "symbol","rank": 1,"symbol": "AAPL","symbolDisplay": "AAPL","symbolMic": "AAPL.XNAS","symbolId": 686,"title": "Apple Inc","url": "https://stocktwits.com/symbol/AAPL","exchange": "NASDAQ","region": "US","instrumentClass": "Stock","logoUrl": "https://logos.stocktwits-cdn.com/AAPL.png","watchlistCount": 999993,"sector": "Electronic Technology","industry": "Telecommunications Equipment","trending": true,"trendingScore": 15.7964,"trendSummary": "Apples earnings beat expectations, but the shares came under pressure after its holiday-quarter margin outlook pointed to higher memory costs, with traders also weighing slower Services growth and concerns about valuation. Bearish reactions focus on margin compression and the post-earnings drop, while bulls argue that strong iPhone demand and the overall results support a recovery.","trendSummaryAt": "2026-11-03T11:18:22Z","trendRankAll": 1,"trendRankRegion": 1,"trendRankExchange": 1,"trendRankClass": 1,"sentimentChange": null,"volumeChange": null,"marketCap": 5029592216964.0,"price": 338.32,"priceChange": -6.31,"priceChangePercent": -1.831,"volume": 1430290.0,"extendedHoursPrice": 325.77,"extendedHoursChangePercent": -3.71,"previousClose": 344.63,"currency": "USD","priceAt": "2026-11-02T21:00:00Z","isin": "US0378331005","cusip": "037833100","aliases": [],"tradeStatus": "FRACTIONAL","hasPricing": true,"matchedInput": "trending symbols","inputType": "trendingSymbols","scrapedAt": "2026-11-03T11:38:18.547Z","sentimentScoreNow": 15,"sentimentLabelNow": "Extremely bearish","sentimentChangeNow": 0.0,"sentimentValueNow": 0.051,"sentimentScore15m": 15,"sentimentLabel15m": "Extremely bearish","sentimentChange15m": 0.0,"sentimentValue15m": 0.058,"sentimentScore24h": 26,"sentimentLabel24h": "Bearish","sentimentChange24h": 73.3333,"sentimentValue24h": 0.2934,"messageVolumeScoreNow": 74,"messageVolumeLabelNow": "High","messageVolumeChangeNow": 0.0,"messageVolumeValueNow": 218378.0,"messageVolumeScore15m": 74,"messageVolumeLabel15m": "High","messageVolumeChange15m": 0.0,"messageVolumeValue15m": 218208.0,"messageVolumeScore24h": 54,"messageVolumeLabel24h": "Normal","messageVolumeChange24h": -27.027,"messageVolumeValue24h": 35971.0,"sentimentTimeframes": {"1D": {"buzz": {"change": 0,"label": "","labelNormalized": "","loaded": false,"value": 0,"valueNormalized": 0},"loaded": true,"messageVolume": {"change": -27.027,"label": "EXTREMELY_HIGH","labelNormalized": "NORMAL","loaded": true,"value": 35971,"valueNormalized": 54},"participationScore": {"change": 2100,"label": "NORMAL","labelNormalized": "HIGH","loaded": true,"value": 0.527,"valueNormalized": 66},"sentiment": {"change": 73.3333,"label": "BULLISH","labelNormalized": "BEARISH","loaded": true,"value": 0.2934,"valueNormalized": 26}},"1M": {"buzz": {"change": 0,"label": "","labelNormalized": "","loaded": false,"value": 0,"valueNormalized": 0},"loaded": true,"messageVolume": {"change": -43.2432,"label": "EXTREMELY_HIGH","labelNormalized": "LOW","loaded": true,"value": 29172,"valueNormalized": 42},"participationScore": {"change": 2033.3333,"label": "HIGH","labelNormalized": "HIGH","loaded": true,"value": 0.739,"valueNormalized": 64},"sentiment": {"change": 153.3333,"label": "EXTREMELY_BULLISH","labelNormalized": "BEARISH","loaded": true,"value": 0.776,"valueNormalized": 38}},"1W": {"buzz": {"change": 0,"label": "","labelNormalized": "","loaded": false,"value": 0,"valueNormalized": 0},"loaded": true,"messageVolume": {"change": -27.027,"label": "EXTREMELY_HIGH","labelNormalized": "NORMAL","loaded": true,"value": 44645,"valueNormalized": 54},"participationScore": {"change": 166.6667,"label": "LOW","labelNormalized": "EXTREMELY_LOW","loaded": true,"value": 0.317,"valueNormalized": 8},"sentiment": {"change": 86.6667,"label": "BULLISH","labelNormalized": "BEARISH","loaded": true,"value": 0.316,"valueNormalized": 28}},"1Y": {"buzz": {"change": 0,"label": "","labelNormalized": "","loaded": false,"value": 0,"valueNormalized": 0},"loaded": true,"messageVolume": {"change": 6.7568,"label": "EXTREMELY_HIGH","labelNormalized": "EXTREMELY_HIGH","loaded": true,"value": 21960,"valueNormalized": 79},"participationScore": {"change": 666.6667,"label": "NORMAL","labelNormalized": "EXTREMELY_LOW","loaded": true,"value": 0.525,"valueNormalized": 23},"sentiment": {"change": 486.6667,"label": "EXTREMELY_BULLISH","labelNormalized": "EXTREMELY_BULLISH","loaded": true,"value": 0.796,"valueNormalized": 88}},"3M": {"buzz": {"change": 0,"label": "","labelNormalized": "","loaded": false,"value": 0,"valueNormalized": 0},"loaded": true,"messageVolume": {"change": -5.4054,"label": "EXTREMELY_HIGH","labelNormalized": "HIGH","loaded": true,"value": 64748,"valueNormalized": 70},"participationScore": {"change": 666.6667,"label": "LOW","labelNormalized": "EXTREMELY_LOW","loaded": true,"value": 0.313,"valueNormalized": 23},"sentiment": {"change": 406.6667,"label": "EXTREMELY_BULLISH","labelNormalized": "EXTREMELY_BULLISH","loaded": true,"value": 0.695,"valueNormalized": 76}},"6M": {"buzz": {"change": 0,"label": "","labelNormalized": "","loaded": false,"value": 0,"valueNormalized": 0},"loaded": true,"messageVolume": {"change": 1.3514,"label": "EXTREMELY_HIGH","labelNormalized": "EXTREMELY_HIGH","loaded": true,"value": 23807,"valueNormalized": 75},"participationScore": {"change": 766.6667,"label": "NORMAL","labelNormalized": "LOW","loaded": true,"value": 0.487,"valueNormalized": 26},"sentiment": {"change": 400,"label": "EXTREMELY_BULLISH","labelNormalized": "EXTREMELY_BULLISH","loaded": true,"value": 0.748,"valueNormalized": 75}},"ALL": {"buzz": {"change": 0,"label": "","labelNormalized": "","loaded": false,"value": 0,"valueNormalized": 0},"loaded": true,"messageVolume": {"change": 0,"label": "EXTREMELY_HIGH","labelNormalized": "HIGH","loaded": true,"value": 218378,"valueNormalized": 74},"participationScore": {"change": 0,"label": "EXTREMELY_LOW","labelNormalized": "EXTREMELY_LOW","loaded": true,"value": 0.245,"valueNormalized": 3},"sentiment": {"change": 0,"label": "NEUTRAL","labelNormalized": "EXTREMELY_BEARISH","loaded": true,"value": 0.051,"valueNormalized": 15}}},"fundamentals": {"symbol": "AAPL","timestamp": "2026-11-02T22:11:24.724916501-05:00","name": "Apple Inc","businessDescription": "Apple, Inc. engages in the design, manufacture, and sale of smartphones, personal computers, tablets, wearables and accessories, and other varieties of related services. It operates through the following geographical segments: Americas, Europe, Greater China, Japan, and Rest of Asia Pacific. The Americas segment includes North and South America. The Europe segment consists of European countries, as well as India, the Middle East, and Africa. The Greater China segment comprises China, Hong Kong, and Taiwan. The Rest of Asia Pacific segment includes Australia and Asian countries. Its products and services include iPhone, Mac, iPad, AirPods, Apple TV, Apple Watch, Beats products, AppleCare, iCloud, digital content stores, streaming, and licensing services. The company was founded by Steven Paul Jobs, Ronald Gerald Wayne, and Stephen G. Wozniak in April 1976 and is headquartered in Cupertino, CA.","industryName": "Telecommunications Equipment","sectorName": "Electronic Technology","instrumentClass": "Stock","fiscalPeriodEndDate": "2025-09-30T00:00:00Z","totalAssets": 359241,"totalDebt": 112377,"bookValuePerShare": 4.99098,"totalExpenses": 283111,"totalLiabilities": 285508,"revenuePerEmployee": 2506993.976,"grossIncomeMargin": 46.9051641071605,"numberOfEmployees": 166000,"revenueToAssets": 1.218,"dividendsPerShareSecurity": 1.02,"dividendExDate": "2025-08-11T00:00:00Z","dividendYieldSecurity": 0.399279730681907,"priceToBook": 45.9682,"salesOrRevenue": 416161,"totalCash": 33539,"sharesOutstanding": 14773.26,"eps": 7.465,"marketCapitalization": 5029592.216964,"pegRatio": 1,"peRatio": 38.78,"floatCurrent": 14576.7,"averageDailyVolumeLastMonth": 39899937.2991,"fiftyDayMovingAverage": 333.6201,"beta": 1.0481,"averageDailyVolumeLast3Months": 42084696.7784,"highPriceLast52Weeks": 351.73,"lowPriceLast52Weeks": 243.42,"totalEnterpriseValue": 3890779.89562,"fiveYearAveragePeRatio": 31.05,"sharesHeldByInstitutions": 10064.903708,"earningsGrowth": 32.5713,"dividendRate": 1.06,"dividendPayoutRatio": 13.6637642330877},"priceData": {"symbol": "AAPL","timestamp": "2026-11-02T16:00:00-05:00","quoteType": "EQUITY","open": 342.67,"high": 343.8,"low": 335.82,"last": 338.32,"previousClose": 344.63,"previousCloseDate": "2026-10-30","change": -6.31,"percentChange": -1.831,"volume": 1430290,"lastSize": 0,"extendedHours": {"price": 325.77,"change": -12.55,"percentChange": -3.71,"timestamp": "2026-11-03T06:38:12-05:00","sessionType": "PRE_MARKET"},"combined": {"isValid": true,"price": 325.77,"change": -12.55,"percentChange": -3.71,"timestamp": "2026-11-03T06:38:12-05:00","futuresSymbols": {"standard": "SAAPL","micro": "XAAPL"}},"timeLocation": "America/New_York","currencyCode": "USD","currencySymbol": "$","futuresSymbols": {"standard": "SAAPL","micro": "XAAPL"}},"otherFields": {"deeplink": "symbol/AAPL","externalId": null,"isFollowing": false,"liveEvent": false,"features": {"alertsPrice": true,"socialData": true,"trendingMessages": true,"earnings": true},"shouldSeoIndex": true}}
Integrations and scheduling
Schedule the Stocktwits scraper hourly or daily to follow a watchlist, with newerThanMessageId or postedAfter to collect only new messages. Each finished run can trigger a webhook for n8n, Make or Zapier, or feed a sentiment model or dashboard.
How much does it cost to scrape Stocktwits?
You pay per row saved, plus a small fee when the run starts.
| Event | When charged | Price |
|---|---|---|
| Message | Once for each message saved (tickers, users, trending feed, replies) | $0.99 per 1,000 |
| Symbol | Once for each symbol row saved (trending board, symbol rows) | $1.99 per 1,000 |
| Actor start | Once per run, per GB of memory (default 512 MB: one start) | $0.005 |
Discounts by Apify plan, per 1,000: messages $0.99 on Free, $0.89 on Bronze, $0.79 on Silver, $0.69 on Gold and above; symbols $1.99, $1.79, $1.69 and $1.39. Apify also charges $0.01 per 1,000 rows saved (dataset item fee).
Typical runs on the Free plan: 100 messages, about $0.11 with the start fee; 10,000 messages, about $10.01; the top 100 trending symbols with sentiment, about $0.21. Set maxMessagesPerSource, maxResults or a spending limit to cap any run. A run that reaches its spending limit stops and keeps every row it saved.
FAQ
Do I need a Stocktwits account? No. Enter tickers or usernames and run. Nothing to log in to, no cookie, no key.
How far back can I go? As far as Stocktwits still shows the stream. A recorded run collected 8,678 $TSLA messages covering 12 days before it reached a 5-minute time limit; busy tickers go back further with a longer run. The default run limit is one hour, and the run stops just before its limit and keeps every row.
Does it include sentiment?
Yes, twice. Each message carries the author's own Bullish or Bearish tag (sentiment, sentimentScore). Symbol rows carry Stocktwits' sentiment and message-volume scores for now, 15 minutes, 24 hours and longer timeframes. The actor never guesses sentiment from text: untagged messages stay untagged.
Can I get only messages with price targets?
Yes, turn on onlyPriceTargets. Only a small share of messages carry one, so expect the run to read many messages for each match.
Can I download a Stocktwits sentiment dataset? Yes. Every run is a dataset you can export as CSV, Excel or JSON: message-level author sentiment for your tickers, and Stocktwits' own sentiment scores per symbol. Schedule it to build your own history over time.
Can I collect crypto?
Yes. Crypto tickers end in .X (BTC.X, ETH.X, SOL.X), and the trending board can show crypto only.
How do I collect only new messages on a schedule?
Save the highest messageId of each run and pass it as newerThanMessageId next time, or use postedAfter with a period such as 1 hour.
Why is a ticker or user missing? Tickers and users Stocktwits does not list are named in the run log, and the run carries on with the rest. Private or suspended accounts are not returned.
How do I use it from my own code or an AI agent? Run it from the Apify Console, on a schedule, from n8n, Make or Zapier, with the Apify client for Python or JavaScript, or through Apify's MCP server, then read the dataset when the run finishes.
Support
Found a bug or need a field? Open an issue in the Issues tab, or email max@mapa.slmail.me.
This actor is independent and not affiliated with Stocktwits. It collects data Stocktwits makes publicly available; you are responsible for how you use it.
