Stocktwits Scraper avatar

Stocktwits Scraper

Pricing

from $0.03 / 1,000 message scrapeds

Go to Apify Store
Stocktwits Scraper

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

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

6 days ago

Last modified

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:

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 example AAPL, $TSLA, MSFT, or NVDA.
  • 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.
  • sentimentbullish, bearish, or null.
  • likes and replies — engagement counts.
  • mentionedSymbols — cashtags mentioned in the message.
  • sourceUrl — direct Stocktwits message URL.
  • raw — optional original message payload when includeRaw is 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 ApifyClient
client = 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().items
print(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.

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.

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 messageId values from previous runs and use beforeMessageId or sinceMessageId.

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.