Stocktwits Sentiment Scraper — Bullish/Bearish Feed avatar

Stocktwits Sentiment Scraper — Bullish/Bearish Feed

Pricing

Pay per event

Go to Apify Store
Stocktwits Sentiment Scraper — Bullish/Bearish Feed

Stocktwits Sentiment Scraper — Bullish/Bearish Feed

Pull the message and sentiment stream from Stocktwits for stock and crypto ticker symbols. Each row carries Stocktwits' own user-applied Bullish/Bearish sentiment tag plus message text, author, and engagement counts. Keyless target, bounded per-symbol pagination.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share


🎯 What this scrapes

Stocktwits runs a live message stream for every stock and crypto ticker, and traders tag their own posts Bullish or Bearish as they write them. This Actor takes a list of symbols, walks each symbol's stream backward page by page, and writes one typed row per message — sentiment tag included verbatim, null when the author left it untagged. We handle the retries, backoff, and proxy routing so the stream lands, bounded to a predictable page/message cap per run.

🔥 Features

  • 🔁 Retries with exponential backoff on 408 / 429 / 503 and network errors, honouring Retry-After when Stocktwits sends it.
  • 🛡️ Rotating browser fingerprints — real-browser TLS impersonation on every request, not a bare Python client.
  • 🌐 Apify Proxy routing on every request, fresh exit IP and session on any block.
  • 🧩 Per-symbol fault isolation — one symbol's failure never aborts the rest of your run.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, sentiment always present as Bullish, Bearish, or null.
  • 💰 Predictable cost ceiling — every run stops at whichever of your message or page cap hits first.

💡 Use cases

  • Sentiment dashboards — track the Bullish/Bearish split for a watchlist over time.
  • Trading signal research — feed crowd sentiment into a backtest alongside price data.
  • Social listening for IR/comms teams — see what retail traders are saying about a ticker, unfiltered.
  • Crypto community monitoring — the same stream + sentiment tag works for .X-suffixed crypto symbols.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Enter the ticker symbols you want — stock or crypto.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the Apify API.

For no-code workflows: install the Apify node for n8n or the Apify module for Make, connect your Apify token, and point it at DevilScrapes/stocktwits-sentiment-scraper.

📥 Input

FieldTypeRequiredDefaultNotes
symbolsarrayyes["AAPL", "TSLA"]Ticker symbols, e.g. AAPL, TSLA, BTC.X. Uppercased and deduplicated automatically. Max 50.
maxMessagesPerSymbolintegerno100Hard cap on messages returned per symbol (1-2000).
maxPagesPerSymbolintegerno10Hard cap on paginated requests per symbol (1-100).
proxyConfigurationobjectno{"useApifyProxy": true}We route every request through Apify Proxy and rotate exit IPs on any block.

Example input

{
"symbols": ["AAPL", "TSLA"],
"maxMessagesPerSymbol": 100,
"maxPagesPerSymbol": 10,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

One row per Stocktwits message.

FieldTypeNotes
message_idintegerStocktwits message id — stable row identity.
symbolstringTicker symbol the row was fetched for (uppercased).
textstringMessage body text.
sentimentstring | nullBullish, Bearish, or null when the author left it untagged.
author_usernamestringPosting user's Stocktwits handle.
created_atstringMessage timestamp, ISO-8601 UTC.
likes_countinteger | nullLike count, if exposed by the payload.
reshares_countinteger | nullReshare count, if exposed by the payload.

Example output

{
"message_id": 601234567,
"symbol": "AAPL",
"text": "AAPL breaking out of the range, watching 230 next",
"sentiment": "Bullish",
"author_username": "traderjoe22",
"created_at": "2026-09-10T14:32:07Z",
"likes_count": 3,
"reshares_count": 0
}

💰 Pricing

Pay-Per-Event — pay only for what lands in your dataset:

EventUSDWhat it is
actor-start$0.20One-off warm-up charge per run
message-scraped$0.003Per validated message row

Example: 1 000 messages in a run ≈ $3.20 ($0.20 start + 1 000 x $0.003). No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • Snapshot Actor, not an unbounded archive crawler — no historical backfill beyond your page/message caps.
  • No watchlist/portfolio, user-profile, or trending-symbols discovery — symbol list is user-supplied only.
  • No authenticated/logged-in Stocktwits features (private streams, DMs).
  • No price/OHLC quote data — sentiment-focused by design.
  • No sentiment re-classification or NLP — surfaces Stocktwits' own label verbatim, never infers sentiment.

❓ FAQ

Do I need a Stocktwits account or API key?

No. The stream endpoint this Actor calls needs no auth — you only need an Apify account to run it.

What happens to messages the author didn't tag Bullish or Bearish?

They're still returned, with sentiment: null — we never drop a message for lacking a sentiment tag.

Can I pull crypto symbols, not just stocks?

Yes — Stocktwits' own .X crypto ticker convention (e.g. BTC.X) works the same as a stock symbol.

What happens if one of my symbols is invalid or has no messages?

That symbol finishes with zero rows and the run keeps going — an empty stream is a valid result, not a failure.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab in Apify Console — we ship fixes weekly and we read every report.