StockTwits Scraper avatar

StockTwits Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
StockTwits Scraper

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

Sheshinmcfly

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

1

Monthly active users

2 days ago

Last modified

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.

⚡ FastAbout 6 seconds for 30 posts and about 14 seconds for 300. Sentiment for 5 symbols takes about 5 seconds.
💬 5 data typesMessages by symbol, messages by user, popular messages, sentiment scores and trending lists.
❤️ EngagementLikes, replies, reshares, reply/reshare links, attached chart images and shared links on every post.
📈 Sentiment scores0-100 sentiment, message volume and participation, for now / 24h / 1D / 1W / 1M / 3M / 6M / 1Y / ALL.
🔥 7 trending listsTrending, most bullish, most bearish, most active, most watched, top gainers and top losers, for all assets, crypto only or equities only.
📅 Date filterOnly posts since a date, or since "24 hours" or "7 days" ago.
🔓 No credentialsNothing 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: timeframes holds an entry for each of 1D, 1W, 1M, 3M, 6M, 1Y and ALL. Each entry has sentimentScore / sentimentLabel / sentimentChange, messageVolumeScore / messageVolume / messageVolumeLabel / messageVolumeChange and participationScore / 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.X and 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

  1. Pick a Data type.
  2. Add Symbols for messages, sentiment or per-symbol popular messages. Add Usernames for user messages. Tickers, $TICKER, @user and StockTwits URLs all work. Crypto uses the .X suffix (BTC.X).
  3. Optionally limit posts with Only messages since and Sentiment filter, and cap them with Max messages per symbol / user.
  4. For trending, choose the Trending list, the Asset class and Max trending results.
  5. Run, then export as JSON, CSV, Excel or via API. The dataset has a ready-made table view for each data type.

Input parameters

FieldTitleDescription
dataTypeData typemessages, userMessages, popularMessages, sentiment or trending.
symbolsSymbolsStock or crypto tickers (AAPL, BTC.X). Required for messages and sentiment; optional for popular messages.
usernamesUsernamesStockTwits usernames for userMessages.
maxResultsPerSymbolMax messages per symbol / userMessages per symbol or user (default 30).
sinceDateOnly messages sinceYYYY-MM-DD, an ISO date-time, or 24 hours / 7 days / 2 weeks.
sentimentFilterSentiment filterBullish or Bearish only. Leave it empty for all posts.
trendingListTrending listtrending, most_bullish, most_bearish, most_active, top_watched, top_gainers or top_losers.
assetClassAsset classall, crypto or equities, for trending lists.
maxTrendingResultsMax trending resultsSymbols 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

JobTypical 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.

ResultsEstimated 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.

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

VersionDateChanges
1.12026-10-28New 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.02026-07-14Initial release: messages with sentiment and trending symbols.