Stocktwits Scraper
Pricing
from $0.03 / 1,000 message scrapeds
Stocktwits Scraper
Track public Stocktwits ticker messages, bullish/bearish sentiment, users, likes, replies, and mentioned cashtags for market monitoring.
Pricing
from $0.03 / 1,000 message scrapeds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
6 days ago
Last modified
Categories
Share
Scrape public Stocktwits ticker streams for market sentiment, trader messages, user details, likes, replies, mentioned cashtags, timestamps, and source URLs. Use it to monitor investor discussion around stocks such as AAPL, TSLA, MSFT, or NVDA.
What does Stocktwits Scraper do?
Stocktwits Scraper collects recent public messages from Stocktwits symbol streams and saves clean, analysis-ready dataset rows. It is useful for market research, social listening, sentiment monitoring, watchlist alerts, trading-community analysis, and ticker-level content discovery.
Who is it for?
- Investors tracking social sentiment around a watchlist.
- Analysts comparing discussion volume across tickers.
- Product and content teams monitoring brand or company mentions.
- Data teams enriching market dashboards with public Stocktwits messages.
- Researchers studying trader language, bullish/bearish labels, or user engagement.
Ready-to-run examples
Open a public example to inspect its input, run it, or reuse it as a task:
- Collect raw Stocktwits message JSON for AAPL and TSLA
- Export Stocktwits messages for BTC, ETH, and COIN
- Scrape Stocktwits messages for SPY, QQQ, and IWM
- Monitor public Stocktwits conversations for meme stocks
- Track Stocktwits sentiment for AAPL, TSLA, NVDA, and MSFT
Monitor two major symbols
{"symbols": ["AAPL", "TSLA"],"maxMessagesPerSymbol": 20}
Collect more messages for one symbol
{"symbols": ["NVDA"],"maxMessagesPerSymbol": 100,"includeRaw": false}
Continue if one ticker fails
{"symbols": ["AAPL", "MSFT", "TSLA"],"maxMessagesPerSymbol": 50,"continueOnError": true}
Input fields
symbols— ticker or cashtag symbols to collect, for exampleAAPL,$TSLA,MSFT, orNVDA.maxMessagesPerSymbol— maximum messages saved for each symbol.sinceMessageId— optional lower message boundary for newer-message collection.beforeMessageId— optional upper message boundary for older-message pagination.continueOnError— keep other symbols running if one symbol fails.includeRaw— add the raw message object to each dataset row.proxyConfiguration— optional Apify or custom proxy settings. Direct fetching is the default; opt in only when your network or source route needs a proxy.
Output fields
Each dataset item represents one public Stocktwits message. Common fields include:
symbol— normalized ticker stream requested.messageId— Stocktwits message identifier.body— cleaned message text.createdAt— message timestamp when available.userId,username,userName,avatarUrl— public author details.sentiment—bullish,bearish, ornull.likesandreplies— engagement counts.mentionedSymbols— cashtags mentioned in the message.sourceUrl— direct Stocktwits message URL.raw— optional original message payload whenincludeRawis enabled.
Example output
{"symbol": "AAPL","messageId": 123456789,"body": "Watching AAPL into earnings.","createdAt": "2026-07-31T20:00:00Z","username": "market_user","sentiment": "bullish","likes": 3,"replies": 1,"mentionedSymbols": ["AAPL"],"sourceUrl": "https://stocktwits.com/market_user/message/123456789"}
Pricing
This Actor uses pay-per-event pricing:
run-started— one small charge when a run starts.message-scraped— one charge for each Stocktwits message saved to the dataset.
The final run cost depends mostly on symbols and maxMessagesPerSymbol. Smaller test runs with 1-2 symbols and 10-20 messages per symbol are recommended before scaling. See the live Apify Pricing tab for current rates.
Limits and reliability
The actor fetches public streams directly by default. If your network cannot reach Stocktwits reliably, explicitly opt in to an Apify or custom proxy with proxyConfiguration; the actor never silently escalates to proxy traffic.
The Actor preserves output as it goes. If continueOnError is enabled, one failing ticker does not discard messages already saved for other symbols.
Pagination tips
Use beforeMessageId to page older content when you already know a message boundary. Use sinceMessageId for incremental collection when you only need messages newer than a previous run. For broad monitoring, run the Actor periodically with a saved latest message ID from your previous dataset.
API Usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/stocktwits-scraper').call({symbols: ['AAPL', 'TSLA'],maxMessagesPerSymbol: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('fetch_cat/stocktwits-scraper').call(run_input={'symbols': ['AAPL', 'TSLA'],'maxMessagesPerSymbol': 20,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~stocktwits-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"symbols":["AAPL","TSLA"],"maxMessagesPerSymbol":20}'
MCP
You can run this Actor from Apify MCP-compatible tools by calling fetch_cat/stocktwits-scraper with the same JSON input shown above.
Add the Apify MCP server in Claude Desktop or Claude Code:
$claude mcp add apify -- npx -y @apify/actors-mcp-server --actors fetch_cat/stocktwits-scraper
Example MCP server configuration:
{"mcpServers": {"apify": {"command": "npx","args": ["-y", "@apify/actors-mcp-server", "--actors", "fetch_cat/stocktwits-scraper"],"env": {"APIFY_TOKEN": "YOUR_APIFY_TOKEN"}}}}
Example prompts:
- "Run Stocktwits Scraper for AAPL and TSLA with 20 messages each."
- "Get recent bullish and bearish Stocktwits messages for NVDA."
- "Collect 50 messages per symbol for my watchlist and summarize common themes."
Use small limits first, inspect the dataset, then increase maxMessagesPerSymbol for production workflows.
Related actors
This Actor is often used together with finance, news, social-media, and market-data scrapers. Combine Stocktwits messages with price, news, or company-profile data to build richer ticker dashboards.
- Yahoo Finance Stock Data Scraper: OHLCV & Quotes for price and market-history context.
- Google News Scraper for ticker-related news coverage.
- Reddit Scraper - Posts, Comments, Search & Subreddits for broader investor-community discussion.
- Reddit Post Monitor Lite for ongoing Reddit conversation monitoring.
- Hacker News Search Scraper for technology and company discussion research.
FAQ
Does the actor use a proxy by default? No. It fetches public Stocktwits streams directly by default.
When should I enable a proxy? Set proxyConfiguration to an Apify or custom proxy only if your network cannot reach Stocktwits reliably. Explicit proxy settings are honored; the actor never silently falls back to proxy traffic.
Does the Actor scrape private content? No. It collects public symbol-stream messages available without logging into a user account.
Can I scrape many symbols? Yes, but start with a small watchlist and increase gradually. Cost and runtime scale with the number of symbols and requested messages.
Troubleshooting
- If a direct run fails with HTTP 403 or cannot reach Stocktwits, explicitly configure an Apify or custom proxy and retry.
- If a ticker returns no rows, confirm the symbol has active public messages on Stocktwits.
- If you need exact historical continuation, save
messageIdvalues from previous runs and usebeforeMessageIdorsinceMessageId.
Support
If a symbol returns no data or fails repeatedly, retry with Apify Proxy enabled and confirm the ticker is active on Stocktwits. Include your input JSON and run ID when reporting an issue.