
StockTwits Scraper
hipersoft/stocktwits-scraper
Scrape StockTwits messages and retail Bullish/Bearish sentiment for any ticker in bulk (stocks, ETFs, crypto, forex). One row per message with body, author, timestamp, sentiment, likes and replies. Fast, reliable and account-free.
Total users
2Monthly users
1Total runs
73Per message scraped
$0.0008Last rebuilt
Oct 28, 2026Overview
Scrape StockTwits retail-investor messages and their Bullish / Bearish sentiment for any ticker, in bulk. Pass a list of symbols — stocks, ETFs, crypto or forex — and this actor pages back through each ticker's message stream and returns one clean row per message: the text, author, timestamp, sentiment tag, likes and replies. Fast reliable HTTP, no login and no API key. Export to JSON, CSV, Excel or XML.
What does StockTwits Scraper do?
StockTwits is a social platform where traders post short messages about tickers and often tag them Bullish or Bearish. This scraper turns that stream into a structured dataset. Give it the tickers you care about and a per-ticker message limit, and it collects the latest messages (newest first, paging into older history), normalizes each into a flat record, and hands you a dataset ready for sentiment analysis, dashboards or research.
What data can you scrape from StockTwits?
| Data point | Description |
|---|---|
ticker |
The ticker symbol the message was pulled for. |
id |
Unique StockTwits message id. |
body |
Full text of the message. |
username |
Author's StockTwits handle. |
name |
Author's display name. |
createdAt |
ISO 8601 timestamp of when the message was posted. |
sentiment |
Bullish, Bearish, or null when the author added no tag. |
likeCount |
Number of likes on the message. |
replyCount |
Number of replies in the message's thread. |
source |
Client the message was posted from (e.g. StockTwits Web, iPhone). |
Use cases
- Sentiment analysis — measure the Bullish/Bearish balance on a ticker over time.
- Trading signals — feed retail chatter and sentiment into quant models or alerts.
- Dashboards — power a live "social buzz" panel for a watchlist of symbols.
- Research & backtesting — build a historical corpus of messages per ticker.
- Market monitoring — watch how sentiment shifts around earnings or news.
How to scrape StockTwits data
- Add StockTwits Scraper to your Apify account and open its input.
- Enter one or more tickers (e.g.
AAPL,TSLA,BTC.X), one per line. - Set Max messages per ticker.
- Optionally enable Only sentiment-tagged messages to keep just Bullish/Bearish posts.
- Click Run, then export the results as JSON, CSV, Excel or XML — or fetch them through the Apify API.
Input
{
"tickers": ["AAPL", "TSLA", "BTC.X"],
"maxMessages": 100,
"sentimentOnly": false
}
| Field | Description |
|---|---|
tickers |
Ticker symbols to scrape, one per line. Stocks & ETFs use the plain symbol; crypto uses a .X suffix (e.g. BTC.X). |
maxMessages |
Maximum messages to collect per ticker. The scraper pages older messages until this limit or the stream runs out. |
sentimentOnly |
When true, keep only messages tagged Bullish or Bearish. |
What you get
Each record is a flat JSON object, ready to export to CSV, Excel, JSON or XML:
{
"ticker": "AAPL",
"id": 662981305,
"body": "$AAPL We push to 320 by tomorrow.",
"username": "chintu76",
"name": "sam",
"createdAt": "2026-08-27T12:48:56Z",
"sentiment": "Bullish",
"likeCount": 5,
"replyCount": 1,
"source": "StockTwits Web"
}
Output schema
| Field | Type | Description |
|---|---|---|
ticker |
string | Ticker the message belongs to. |
id |
number | Unique message id. |
body |
string | Message text. |
username |
string | Author handle. |
name |
string | Author display name. |
createdAt |
string | ISO 8601 timestamp. |
sentiment |
string / null | Bullish, Bearish, or null. |
likeCount |
number | Likes on the message. |
replyCount |
number | Replies in the thread. |
source |
string | Posting client. |
Need more market data?
- CoinGecko Scraper — live crypto prices, market cap, volume and ATH/ATL.
- Yahoo Finance Scraper — live quotes and OHLCV history for stocks, ETFs, crypto and forex.
- DefiLlama Scraper — DeFi protocols, yields, chains and stablecoins.
FAQ
Do I need an account or API key? No. There is no login or key — set your tickers and click Run.
How many messages can I get per ticker?
Set maxMessages to whatever you need. The scraper pages back through older messages until it reaches that limit or the ticker has no more history.
Which tickers are supported?
Any symbol StockTwits tracks — US stocks and ETFs by plain symbol, and crypto with a .X suffix (for example BTC.X, ETH.X).
What does the sentiment field mean?
It is the tag the message author selected: Bullish or Bearish. Messages without a tag come back as null. Enable Only sentiment-tagged messages to drop the untagged ones.
How fresh is the data? Each run starts from the newest messages available at that moment and pages backward.
What export formats are available? JSON, CSV, Excel and XML, plus programmatic access through the Apify API.
Can I use this with n8n? Yes. Use the Apify n8n integration (or the official Apify node) to run this actor from an n8n workflow and pipe the message dataset straight into your automation — sentiment scoring, alerts, a database, or an LLM node. Every run's dataset is available over the Apify API as JSON, so it drops into any workflow tool.
Can I connect this to my other tools? The StockTwits Scraper connects with almost any cloud service or web app through integrations on the Apify platform: Make, Zapier, n8n, Slack, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Is this official StockTwits data? The data reflects public StockTwits messages, but this actor is an independent tool and is not affiliated with or endorsed by StockTwits.
Notes
Original clean-room implementation. Returns only public message data; you are responsible for compliant use. Not affiliated with StockTwits; all trademarks belong to their respective owners.
Input
| Field | Type | Description |
|---|---|---|
tickersTickers | array | Ticker symbols to scrape, one per line. Works for stocks and ETFs (e.g. "AAPL", "TSLA", "SPY"), crypto (append .X, e.g. "BTC.X", "ETH.X") and forex. Case-insensitive. |
maxMessagesMax messages per ticker | integer | Maximum number of messages to scrape for each ticker. The scraper pages back through older messages (30 per request) until this limit is hit or no more messages exist. Default: 100 |
sentimentOnlyOnly sentiment-tagged messages | boolean | When enabled, only keep messages the author tagged as Bullish or Bearish and skip untagged chatter. The scraper still pages until it collects up to Max messages of tagged messages (or runs out). Default: false |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~stocktwits-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tickers": [
"AAPL",
"TSLA",
"BTC.X"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/stocktwits-scraper").call(run_input={
"tickers": [
"AAPL",
"TSLA",
"BTC.X"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/stocktwits-scraper').call({
"tickers": [
"AAPL",
"TSLA",
"BTC.X"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Message Scraped Charged per message scraped. | $0.0008 | $0.0004 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Google Autocomplete Keyword Scraper
Generate long-tail keyword ideas from Google Autocomplete: alphabet-soup, question and preposition expansions with relevance scores. Fast SEO keyword research, per country and language. Clean, no setup.
118 runs · 7 users · $0.0013 / keyword scrapedESPN Sports Scraper
Scrape live and past scores, teams, standings and news across NBA, NFL, MLB, NHL, EPL, La Liga and more via ESPN's public data. For sports analytics, betting and fantasy. No setup.
111 runs · 1 users · $0.001 / item scrapedJWT Decoder & Verifier
Decode JWT header and payload, and optionally verify the signature and expiry against a secret or JWKS. Debug and audit auth tokens in bulk.
70 runs · 2 users · $0.001 / jwt processedExchange Rates Scraper
Fetch live and historical foreign-exchange rates published by the European Central Bank: any base currency, any target symbols, plus full time series over a date range. Clean structured JSON, CSV or Excel for finance, invoicing, dashboards and n8n.
64 runs · 2 users · $0.0005 / rate scrapedCongress Stock Trades Scraper
Scrape U.S. Congress members' stock trades & financial disclosures: member, ticker, buy/sell, amount range and dates. One clean row per trade or filing as JSON, CSV or Excel.
62 runs · 1 users · $0.003 / item scrapedForexFactory Economic Calendar Scraper
Scrape the ForexFactory economic calendar — every high, medium and low-impact macro event with its release time, forecast, previous and actual values. Pull this week, this month, today or tomorrow, filter by impact or currency, and export clean rows as JSON, CSV or Excel.
50 runs · 2 users · $0.003 / event scrapedSend the site and the fields. We build it and you get it first.