
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape StockTwits messages for any ticker, user or hashtag, the trending stream and trending symbols. Get message text, Bullish/Bearish sentiment, likes, replies, reshares, price targets, charts and author stats. No login needed.
Scrape public StockTwits messages for any ticker, user or hashtag, plus the trending stream and today's trending symbols. Every message comes with its text, Bullish/Bearish sentiment, likes, replies, reshares, price targets, charts and the author's follower stats. No login or API key needed, and 100 messages take only a few seconds.
| Field | What it does |
|---|---|
symbols | Ticker symbols, e.g. AAPL, SPY, BTC.X (crypto ends in .X) |
maxMessages | Messages to save per stream, newest first (0 = no limit) |
usernames | StockTwits users, e.g. howardlindzon |
hashtags | Topic streams, e.g. ai, earnings |
startUrls | Symbol, profile or single message URLs from stocktwits.com |
includeTrendingMessages | Also scrape the site-wide trending stream |
includeTrendingSymbols | Also save the ranked trending symbols (up to 30) |
dateFrom / dateTo | Only messages posted in this window (YYYY-MM-DD or 7 days) |
sentiment | any, bullish, bearish, labeled or unlabeled |
minLikes, minUserFollowers | Engagement and author-size thresholds |
onlyWithCharts, onlyPriceTargets, excludeReshares | Content filters |
{
"symbols": ["AAPL", "TSLA"],
"maxMessages": 200,
"dateFrom": "7 days",
"sentiment": "labeled",
"includeTrendingSymbols": true
}
Each message is one row ("type": "message"). Trending symbols are rows with "type": "trendingSymbol".
| Field | Description |
|---|---|
messageId, url | Message ID and link |
body, createdAt | Message text and UTC timestamp |
sentiment | Bullish, Bearish or null |
likeCount, replyCount, reshareCount | Engagement at scrape time |
isReply, isReshare, isDiscussion | Message kind; conversationParentMessageId, inReplyToMessageId, resharedMessageId link related messages |
symbols, symbolPrices | Mentioned tickers and their price when the message was posted |
hashtags, mentionedUsers, links | Entities in the text |
chartUrl, mediaUrl | Attached chart image or media |
priceTarget, priceTargetDate, priceTargetStartingPrice, priceTargetCurrentPrice, priceTargetStatus | Price prediction, when present |
username, userName, userFollowers, userFollowing, userIdeas, userOfficial, userJoinDate, userCountry | Author profile |
sourceTitle, scrapeSource, scrapedAt | Posting app, which input produced the row, scrape time |
Trending symbol rows: rank, symbol, title, exchange, instrumentClass, trendingScore, trendSummary, watchlistCount, sector, industry, marketCap (millions), peRatio, eps, beta, 52-week high/low, businessDescription, url.
{
"type": "message",
"messageId": 666654041,
"url": "https://stocktwits.com/trader_jane/message/666654041",
"body": "$TSLA $AMD Today has been a great trading day! Let's keep the market rocking.",
"createdAt": "2026-10-15T23:58:23Z",
"sentiment": "Bullish",
"likeCount": 3,
"replyCount": 1,
"reshareCount": 0,
"isReshare": false,
"isReply": false,
"symbols": ["TSLA", "AMD"],
"symbolPrices": {"TSLA": 362.1, "AMD": 554},
"chartUrl": null,
"priceTarget": null,
"username": "trader_jane",
"userName": "Jane Example",
"userFollowers": 147,
"userIdeas": 10521,
"userJoinDate": "2020-08-16",
"sourceTitle": "StockTwits Web",
"scrapeSource": "symbol:TSLA",
"scrapedAt": "2026-10-15T23:58:57.054Z"
}
You pay $2.00 per 1,000 results (a message or a trending symbol), plus a small amount of platform usage. Messages removed by your filters are not charged.
Example: 1,000 AAPL messages ≈ $2.00 in results plus well under a cent of usage on the default datacenter proxy.
Is it legal to scrape StockTwits? The actor collects only data StockTwits shows publicly to logged-out visitors. Check that your use complies with StockTwits' terms and the data protection laws that apply to you.
Do I need a login or proxy? No login. The default datacenter proxy works; residential is available if you ever see blocks.
How many messages can I get? As many as StockTwits keeps in the stream. Paging goes back through history until your limit or dateFrom is reached, or the stream ends.
Why is sentiment empty for some messages? Authors choose whether to tag a message Bullish or Bearish. Use the labeled sentiment filter to keep only tagged messages.
Can I schedule it or use the API? Yes. Schedule runs (e.g. every hour for trending symbols) and read the dataset through the API or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
symbolsarrayOptionalSymbols (cashtags)
Ticker symbols to scrape, e.g. AAPL, TSLA, SPY. Crypto tickers end in .X (BTC.X, ETH.X). The $ sign is optional.
maxMessagesintegerOptionaldefault 20Max messages per symbol, user or hashtag
How many messages to save from each stream (newest first). 0 means no limit.
usernamesarrayOptionalUsernames
StockTwits users whose posts you want, e.g. howardlindzon. The @ sign is optional; profile URLs work too.
hashtagsarrayOptionalHashtags
Hashtag (topic) streams, e.g. ai, earnings. The # sign is optional.
startUrlsarrayOptionalStockTwits URLs
Paste stocktwits.com URLs: symbol pages (stocktwits.com/symbol/AAPL), profiles (stocktwits.com/howardlindzon) or single messages (stocktwits.com/user/message/123456).
includeTrendingMessagesbooleanOptionaldefault falseTrending messages
Also scrape the site-wide trending message stream (counts as one stream for the message limit).
includeTrendingSymbolsbooleanOptionaldefault falseTrending symbols
Also save the current list of trending symbols (up to 30) with rank, trend score, StockTwits' trend summary and key fundamentals.
maxTrendingSymbolsintegerOptionaldefault 30Max trending symbols
How many trending symbols to save (StockTwits ranks 30).
dateFromstringOptionalPosted on or after
Only messages posted on or after this date (YYYY-MM-DD, or relative like '7 days'). Paging stops once older messages are reached.
dateTostringOptionalPosted on or before
Only messages posted on or before this date (YYYY-MM-DD). Newer messages are skipped while paging back.
sentimentenumOptionaldefault "any"Sentiment
Keep only messages with this sentiment label.
minLikesintegerOptionaldefault 0Min likes
Keep only messages with at least this many likes.
minUserFollowersintegerOptionaldefault 0Min author followers
Keep only messages whose author has at least this many followers.
onlyWithChartsbooleanOptionaldefault falseOnly messages with charts
Keep only messages with an attached chart image (filtered by StockTwits itself, so it is fast).
onlyPriceTargetsbooleanOptionaldefault falseOnly messages with price targets
Keep only messages that carry a StockTwits price prediction (target price and date).
excludeResharesbooleanOptionaldefault falseExclude reshares
Skip messages that are reshares of another message.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for StockTwits. Switch to residential only if you see blocks.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| createdAt | any | Posted |
| username | any | User |
| body | any | Message |
| sentiment | any | Sentiment |
| likeCount | any | Likes |
| replyCount | any | Replies |
| reshareCount | any | Reshares |
| symbols | any | Symbols |
| userFollowers | any | Followers |
| scrapeSource | any | Source |
| url | any | URL |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Message | One StockTwits message saved to the dataset. | $0.002 |
| Trending symbol | One trending symbol saved to the dataset. | $0.002 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/stocktwits-scraper').call({
"symbols": [
"AAPL",
"TSLA"
],
"maxMessages": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/stocktwits-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/stocktwits-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Latest messages posted under the SPX topic.
A user's latest StockTwits messages.
Messages for a ticker plus the currently trending symbols.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.