Stocktwits Scraper avatar

Stocktwits Scraper

Pricing

Pay per event

Go to Apify Store
Stocktwits Scraper

Stocktwits Scraper

Extract stock and crypto messages, bullish/bearish sentiment, trending symbols, and user posts from Stocktwits. Monitor market mood for any ticker. No API key needed.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Extract stock and crypto messages, bullish/bearish sentiment, trending symbols, and trader posts from Stocktwits — the largest financial social network for investors and traders. No API key or login required.

Monitor market mood for any ticker symbol in real time. Scrape the complete message stream for stocks like $AAPL or $TSLA, track what traders are saying about crypto like $BTC, or pull a ranked list of today's trending symbols — all in one actor.

What does Stocktwits Scraper do?

Stocktwits Scraper connects to Stocktwits' internal API to extract messages, user profiles, and symbol data at scale. It covers four data modes:

  • 📈 Symbol stream — all recent messages for any stock or crypto ticker (e.g., AAPL, TSLA, BTC.X, ETH.X)
  • 👤 User posts — the complete message history of any public Stocktwits user
  • 🔥 Trending messages — real-time feed of the most active discussions across all tickers
  • 📊 Trending symbols — ranked list of the 30 most-discussed symbols with AI-generated summaries and fundamentals

Every message includes the full text, timestamp, sentiment label (Bullish or Bearish), mentioned tickers, user profile data, and attached chart or media URLs. Export to JSON, CSV, or Excel for downstream analysis.

Who is Stocktwits Scraper for?

Quant analysts and data scientists

  • Build trading signal models from retail investor sentiment
  • Correlate Stocktwits sentiment with price movements using historical ticker data
  • Create datasets for NLP and LLM fine-tuning on financial text

Hedge funds and portfolio managers

  • Monitor crowd sentiment for positions in your portfolio
  • Track how retail traders react to earnings, news events, or Fed announcements
  • Identify unusual spikes in discussion volume for any ticker

FinTech startups and research teams

  • Power sentiment dashboards and stock screeners with social signal data
  • Monitor competitor tickers and compare community engagement
  • Integrate with alternative data platforms (Bloomberg, Refinitiv, FactSet)

Individual traders and retail investors

  • Track what top Stocktwits traders are saying about specific stocks
  • Get a real-time pulse on market mood before opening a trade
  • Automate daily sentiment reports for your watchlist

Why use Stocktwits Scraper?

  • 🚀 Pure HTTP — no browser overhead, extremely fast (100 messages in ~5 seconds)
  • 💰 16x cheaper compute than the only competitor (256 MB vs 4096 MB)
  • 📊 Sentiment included — every message that has a bullish/bearish label includes it
  • 🔁 Full pagination — scrape hundreds of messages per ticker via cursor-based pagination
  • 📦 All 4 endpoints — symbol, user, trending messages, and trending symbols
  • 🤖 AI-generated summaries — trending symbols mode includes Stocktwits' own trend analysis
  • 🌐 No API key needed — accesses the public data layer just like the browser does
  • 🗂️ Export-ready — JSON, CSV, Excel, XML out of the box via Apify platform

What data can you extract?

FieldTypeDescription
messageIdnumberUnique Stocktwits message ID
bodystringFull message text
createdAtstringISO 8601 timestamp
sentimentstring"Bullish", "Bearish", or null
symbolsarrayTicker symbols mentioned (e.g., ["AAPL", "SPY"])
usernamestringPoster's Stocktwits username
userNamestringPoster's display name
userIdnumberPoster's user ID
userFollowersnumberFollower count
userFollowingnumberFollowing count
userIdeasnumberTotal messages posted
userOfficialbooleanWhether it's a verified/official account
userJoinDatestringAccount creation date
chartUrlstringChart image URL (if attached)
mediaUrlstringMedia attachment URL (if attached)
sourceTitlestringSource app (e.g., "StockTwits Web")
urlstringDirect link to the message
scrapedAtstringExtraction timestamp
FieldTypeDescription
symbolstringTicker symbol (e.g., "AAPL")
symbolDisplaystringDisplay ticker (e.g., "AAPL", "BTC")
titlestringFull company/asset name
exchangestringExchange (NASDAQ, NYSE, CRYPTO, etc.)
instrumentClassstringAsset class (Stock, CRYPTO, etc.)
logoUrlstringSymbol logo URL
watchlistCountnumberNumber of users watching
ranknumberTrending rank (1 = most trending)
trendingScorenumberQuantitative trending score
trendSummarystringAI-generated summary of why it's trending
marketCapnumberMarket cap in billions (USD)
sectorstringGICS sector
industrystringGICS industry
scrapedAtstringExtraction timestamp

How much does it cost to scrape Stocktwits?

Stocktwits Scraper uses Pay-Per-Event (PPE) pricing — you only pay for what you extract.

PlanPrice per messagePrice per trending symbol
Free$0.0023$0.0023
Starter (BRONZE)$0.0020$0.0020
Scale (SILVER)$0.00156$0.00156
Business (GOLD)$0.0012$0.0012

Real-world cost examples (BRONZE pricing):

What you're scrapingItemsApprox. cost
50 AAPL messages50$0.10
100 TSLA messages100$0.20
30 trending symbols30$0.06
200 messages for 3 tickers600$1.20

Free plan estimate: With $5 in free credits you can extract approximately 2,000 messages — enough for a full sentiment analysis run on your top 5 tickers.

There is also a small one-time start fee of $0.005 per run.

How to scrape Stocktwits data

  1. Go to Stocktwits Scraper on Apify Store
  2. Click Try for free
  3. Select your scraping mode (symbol, user, trending, or trending-symbols)
  4. Enter your ticker symbols (e.g., AAPL, TSLA, BTC.X) or usernames
  5. Set Max messages (start with 20 to test)
  6. Click Start
  7. Download your results in JSON, CSV, or Excel

Example input for symbol mode:

{
"mode": "symbol",
"symbols": ["AAPL", "TSLA", "BTC.X"],
"maxMessages": 100
}

Example input for trending symbols:

{
"mode": "trending-symbols"
}

Example input for user mode:

{
"mode": "user",
"usernames": ["jimcramer", "marketwizard"],
"maxMessages": 50
}

Input parameters

ParameterTypeDefaultDescription
modestringsymbolScraping mode: symbol, user, trending, trending-symbols
symbolsarray[]Ticker symbols to scrape (used in symbol mode). Crypto tickers end in .X
usernamesarray[]Stocktwits usernames (used in user mode, without the @ sign)
maxMessagesinteger100Max messages per symbol/user. Use 0 for all available
proxyConfigurationobjectBUYPROXIESProxy settings. Default datacenter proxy works well

Ticker format notes:

  • US stocks: AAPL, TSLA, SPY, NVDA
  • Crypto: BTC.X, ETH.X, DOGE.X (note the .X suffix)
  • ETFs: QQQ, IWM, VTI

Output examples

Message output (symbol/user/trending mode):

{
"messageId": 649367647,
"body": "$AAPL clean dip at the open → instant buyers stepped in → full intraday recovery. Bullish signal.",
"createdAt": "2026-04-03T07:14:06Z",
"sentiment": "Bullish",
"symbols": ["AAPL"],
"username": "TraderJoe",
"userName": "Joe Smith",
"userId": 10809273,
"userFollowers": 2500,
"userFollowing": 180,
"userIdeas": 1240,
"userOfficial": false,
"userJoinDate": "2021-01-15",
"chartUrl": null,
"mediaUrl": "https://media.stocktwits-cdn.com/api/3/media/11474646/default.webp",
"sourceTitle": "StockTwits Web",
"url": "https://stocktwits.com/TraderJoe/message/649367647",
"scrapedAt": "2026-04-03T09:26:27.791Z"
}

Trending symbol output:

{
"symbol": "NVDA",
"symbolDisplay": "NVDA",
"title": "NVIDIA Corporation",
"exchange": "NASDAQ",
"instrumentClass": "Stock",
"logoUrl": "https://logos.stocktwits-cdn.com/NVDA.png",
"watchlistCount": 612450,
"rank": 1,
"trendingScore": 8.92,
"trendSummary": "NVIDIA is surging on AI chip demand with new data center orders announced. Community is heavily bullish ahead of earnings next week.",
"marketCap": 2810.5,
"sector": "Technology",
"industry": "Semiconductors",
"scrapedAt": "2026-04-03T09:26:54.370Z"
}

Tips for best results

  • 🎯 Start small — test with 20 messages per ticker to verify the output before scaling up
  • 📅 Use cursor pagination — the actor handles multi-page scraping automatically; just set a high maxMessages value
  • 💎 Crypto tickers — remember to add .X suffix: BTC.X, ETH.X, SOL.X, DOGE.X
  • Schedule for market hours — most discussion happens 9 AM–4 PM ET on weekdays
  • 📊 Sentiment analysis — filter for sentiment: "Bullish" or sentiment: "Bearish" to build directional signal datasets
  • 🔥 Trending symbols first — run trending-symbols mode daily to discover which tickers are getting unusual attention before scraping their message streams

Integrations

Stocktwits Scraper → Google Sheets via Zapier Monitor your portfolio tickers daily. Set up a Zapier workflow that runs the scraper on a schedule, then appends new messages with sentiment to a Google Sheet for manual review.

Stocktwits → Slack alerts via Make Get notified when unusual discussion volume spikes on a ticker you follow. Create a Make scenario that runs the scraper hourly, counts messages, and sends a Slack alert when count exceeds a threshold.

Scheduled sentiment tracking Use Apify Scheduler to run the scraper every morning at 8 AM ET before market open. Track the sentiment ratio (bullish/bearish) for your watchlist and feed the data to a Python analysis script via Apify API.

Trending symbols → stock screener Combine trending-symbols mode with a stock screener API. Run this actor daily, extract the top 10 symbols, then look up their technical indicators to filter for high-probability setups.

Webhook to database Configure an Apify webhook to POST new results directly to your database (Supabase, PostgreSQL, MongoDB) as soon as each run completes. Great for building real-time sentiment dashboards.

Using the Apify API

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automation-lab/stocktwits-scraper').call({
mode: 'symbol',
symbols: ['AAPL', 'TSLA'],
maxMessages: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} messages`);
items.filter(m => m.sentiment === 'Bullish').forEach(m => {
console.log(`@${m.username}: ${m.body.slice(0, 80)}`);
});

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/stocktwits-scraper").call(run_input={
"mode": "symbol",
"symbols": ["AAPL", "TSLA"],
"maxMessages": 100,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
bullish = [m for m in items if m.get("sentiment") == "Bullish"]
bearish = [m for m in items if m.get("sentiment") == "Bearish"]
print(f"Bullish: {len(bullish)}, Bearish: {len(bearish)}, Neutral: {len(items)-len(bullish)-len(bearish)}")

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~stocktwits-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "symbol",
"symbols": ["AAPL", "TSLA"],
"maxMessages": 50
}'

Use with AI agents via MCP

Stocktwits Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Your AI assistant will use OAuth to authenticate with your Apify account on first use.

Example prompts

Once connected, try asking your AI assistant:

  • "Use automation-lab/stocktwits-scraper to get the last 50 messages for NVDA and summarize the sentiment"
  • "Fetch the trending symbols from Stocktwits right now and tell me which sectors are getting the most attention"
  • "Get 100 messages for BTC.X from Stocktwits and count how many are bullish vs bearish"

Learn more in the Apify MCP documentation.

Stocktwits is a publicly accessible social platform. All data extracted by this actor is publicly visible in a browser without logging in. This actor:

  • Only accesses public content — no authentication, no private messages
  • Does not bypass any authentication or paywall
  • Respects rate limits and includes delays between requests
  • Complies with GDPR in that all extracted data is publicly available

Use the data responsibly: for market research, academic study, sentiment analysis, and trading signal research. Do not use it to spam, harass, or build contact databases. Always review Stocktwits' Terms of Service for your specific use case.

Apify is committed to ethical scraping — we only build tools for publicly accessible data and promote responsible data use. See Apify's Legal page for more details.

FAQ

How fast is Stocktwits Scraper? Very fast. The actor uses pure HTTP requests (no browser), so it can extract 100 messages in approximately 5–10 seconds on a typical run, depending on the number of pagination pages needed.

How much does it cost to scrape 1,000 messages? At BRONZE pricing ($0.002/message), 1,000 messages costs $2.00 plus a $0.005 run start fee. On the free plan ($5 credits) you can extract approximately 2,100 messages.

Does it work for crypto tickers? Yes. Use the .X suffix for crypto: BTC.X, ETH.X, SOL.X, DOGE.X, ADA.X, etc. The trending-symbols mode includes both stocks and crypto.

What's the difference between Stocktwits Scraper and the official Stocktwits API? The official Stocktwits API requires an approved developer account and has strict rate limits. This scraper uses the same public API endpoints your browser accesses, requiring no API key or login.

Why are some messages missing sentiment? Sentiment on Stocktwits is user-provided — traders manually mark their message as Bullish or Bearish when posting. Many users don't add a sentiment label, so those messages return null for the sentiment field. In practice, roughly 30–50% of messages have sentiment labels.

Why did I get zero results?

  • Check the ticker format: crypto needs .X (e.g., BTC.X not BTC)
  • Verify the symbol exists on Stocktwits — search for it at stocktwits.com
  • Try the trending-symbols mode to discover valid tickers
  • If a username returns nothing, verify it exists on Stocktwits

What if the scraper gets blocked? The actor uses Apify's datacenter proxies by default, which work reliably with Stocktwits. If you experience blocks, you can switch to the RESIDENTIAL proxy group in the Proxy configuration setting.

Other financial scrapers