Kalshi Trader Social Profile Scraper
Pricing
Pay per event
Kalshi Trader Social Profile Scraper
Track public Kalshi traders with clean profile, performance, trade, post, comment, and liked-post datasets. No Kalshi login or API key required.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Extract public Kalshi trader profiles, performance metrics, trades, posts, comments, and liked posts by nickname.
Use this Actor to turn Kalshi's public trader pages into clean, exportable datasets for research, monitoring, journalism, and quantitative workflows. No Kalshi login, API key, or user account is required.
What does Kalshi Trader Social Profile Scraper do?
The Actor accepts one or more public Kalshi nicknames or profile URLs and creates separate datasets for the records you select.
It can collect:
- 👤 Profile identity and public description
- 👥 Follower, following, and post counts
- 📅 Join date and profile view count
- 📈 Open interest, volume, PnL, and markets traded
- 🏷️ Top trading categories and ranking badges
- 🔁 Public trades with ticker, side, price, count, and timestamp
- 💬 Public posts and comments
- ❤️ Public posts liked by a trader
Every row includes the requested nickname, source profile URL, record type, and scrape timestamp.
Who is it for? Prediction-market trader personas
Prediction-market traders
Build watchlists of public traders and compare activity over time without copying profile details by hand.
Quantitative researchers
Create repeatable snapshots of public trader performance and activity for exploratory analysis, signal research, or feature engineering.
Copy-trading and whale-discovery products
Monitor selected public profiles, engagement, and recent trades as inputs to scoring and alerting systems. The Actor provides data; it does not recommend or place trades.
Journalists and analysts
Archive public profile statistics, posts, and comments with source URLs and collection timestamps for reproducible reporting.
Data teams
Schedule runs, export named datasets, and connect results to warehouses, dashboards, notebooks, or automation tools.
Why use this Actor?
- ✅ No Kalshi credentials required
- ✅ Multiple nicknames in one run
- ✅ Profile URLs and plain nicknames accepted
- ✅ Separate datasets for different record types
- ✅ Small, low-cost default input
- ✅ Automatic retry for temporary 429 and server errors
- ✅ Source attribution on every record
- ✅ JSON, CSV, Excel, XML, RSS, and API exports through Apify
- ✅ Schedule-friendly for recurring snapshots
The Actor calls Kalshi's public web-client JSON surface directly. It does not depend on the protected profile HTML page, so runs remain lightweight and use 256 MB of memory.
What public Kalshi data can I extract?
| Dataset | Important fields | Typical use |
|---|---|---|
| Profiles | nickname, description, followers, joined date, views | Identity and audience snapshots |
| Performance | open interest, volume, PnL, markets traded | Trader comparison and monitoring |
| Categories | top categories, badges, ranks | Specialization and leaderboard research |
| Trades | ticker, price, count, side, action, date | Public trade activity analysis |
| Posts | content, market context, ROI, likes, comments | Sentiment and idea research |
| Comments | content, parent post, depth, likes, date | Conversation and journalism workflows |
| Likes | liked post, author, market context, engagement | Public interest and affinity research |
Kalshi controls which social and trading activity is public. A valid profile can naturally return zero posts, comments, likes, or public trades.
Input
The default input is intentionally small:
{"nicknames": ["weatherman.allday"],"modes": ["profile"],"maxItemsPerNickname": 10,"includeBadges": true}
Input fields
| Field | Type | Required | Description |
|---|---|---|---|
nicknames | string[] | Yes | 1-50 public nicknames or full Kalshi profile URLs |
modes | string[] | No | profile, trades, posts, comments, and/or likes |
maxItemsPerNickname | integer | No | 1-100 activity records per nickname and mode |
includeBadges | boolean | No | Attach public ranking badges to profile rows |
Profiles always return at most one row per nickname. The item limit applies separately to every selected activity dataset.
How to scrape a Kalshi trader profile
- Open the Actor input page.
- Paste a nickname such as
weatherman.allday. - Keep Profile & performance selected.
- Choose whether ranking badges should be included.
- Click Start.
- Open the Trader profiles dataset when the run finishes.
- Export the results or connect the dataset to another tool.
You can also paste a full URL:
https://kalshi.com/profile/weatherman.allday
The Actor normalizes the URL to its public nickname.
How to monitor public Kalshi trader activity
Select multiple datasets for a recurring watchlist run:
{"nicknames": ["weatherman.allday","galamex1"],"modes": ["profile","trades","posts","comments","likes"],"maxItemsPerNickname": 50,"includeBadges": true}
Then create an Apify schedule and store each run's datasets in your downstream system. Use sourceNickname and scrapedAt as snapshot keys.
Output datasets
This Actor uses named datasets rather than mixing unrelated records into one table.
profiles— identity, audience, performance, categories, and badgestrades— public trade recordsposts— posts authored by selected traderscomments— comments authored by selected traderslikes— public posts liked by selected traders
Only selected datasets are opened and populated.
Profile output example
{"social_id": "6d479151-102d-4b4b-b881-f86c7c2fc94c","nickname": "weatherman.allday","follower_count": 903,"following_count": 0,"posts_count": 1,"joined_at": "2026-01-06","profile_view_count": 656262,"top_categories": ["Sports", "Climate And Weather"],"open_interest": 50009,"volume": 9593959,"pnl": 576829259,"num_markets_traded": 292975,"recordType": "profile","sourceNickname": "weatherman.allday","sourceUrl": "https://kalshi.com/profile/weatherman.allday","scrapedAt": "2026-07-15T03:00:00.000Z"}
Counts and performance metrics change over time. The example illustrates the shape, not a guaranteed current value.
Trade output example
{"trade_id": "6c1936e6-ced2-4586-7c99-2a7f6fe15721","ticker": "KXWCSTART-26JUL15ENGARG-ENG-JBELLI10","price": 99,"price_dollars": "0.9900","count": 1,"taker_side": "yes","maker_action": "buy","taker_action": "buy","create_date": "2026-07-15T02:53:13.80876Z","recordType": "trades","sourceNickname": "weatherman.allday","sourceUrl": "https://kalshi.com/profile/weatherman.allday","scrapedAt": "2026-07-15T03:00:00.000Z"}
Raw public fields are preserved when Kalshi supplies additional market or participant context.
Post, comment, and likes output
Posts and liked posts include public market context, author, content, media, ROI fields, engagement counts, and creation time when available.
Comments include:
- Comment ID and parent post ID
- Author nickname and social ID
- Comment text and nesting depth
- Like and deletion status fields
- Parent post context
- Source trader and scrape timestamp
A liked-post row describes the post that the selected trader publicly liked. The post author can therefore differ from sourceNickname.
How much does it cost to scrape Kalshi trader profiles?
The Actor uses pay-per-event pricing:
- A small one-time Actor start event
- One result event for every profile, trade, post, comment, or liked-post row saved
- Tiered discounts for larger Apify plans
The formula-derived BRONZE price is $0.00013565 per record (about $0.14 per 1,000 records), plus the $0.005 start event. The FREE tier is $0.000156 per record, while higher plans receive progressively lower per-record prices. The exact amount is visible before each run in Apify Console and in run charging details.
A profile-only run for one nickname normally creates one result record and costs about $0.0052 on the FREE tier. Selecting activity modes increases the number of result events according to the public records returned and your limit.
Tips for accurate and economical runs
- Start with one nickname and
profilemode. - Add activity modes only when you need those record types.
- Use a limit of 10-25 for previews.
- Increase the limit only after reviewing output relevance.
- Schedule stable watchlists instead of repeatedly creating manual runs.
- Store
scrapedAtbecause public metrics are snapshots. - Treat empty activity datasets as a valid result for inactive or private activity.
Scheduling recurring profile snapshots
Apify schedules can run the Actor hourly, daily, weekly, or with a custom cron expression.
A practical workflow is:
- Run profile mode daily.
- Append the
profilesdataset to a warehouse table. - Key rows by
social_idandscrapedAt. - Calculate changes in followers, views, volume, PnL, or markets traded.
- Trigger alerts only after applying your own thresholds and validation.
Public metrics can be revised by the source. Store snapshots rather than assuming a value is permanent.
Integrations
Google Sheets
Export profile snapshots to Sheets for a lightweight watchlist and comparison table.
Slack or email alerts
Use an Apify webhook after successful runs, compare the latest snapshot in Make or Zapier, and send alerts for material changes.
Snowflake, BigQuery, or PostgreSQL
Load each named dataset into a separate table. Keep source IDs, source nickname, and scrape timestamp for deduplication.
Python notebooks
Fetch datasets through the Apify API and analyze public performance, category specialization, or post activity with pandas.
BI dashboards
Connect scheduled snapshots to Looker Studio, Tableau, or Power BI to visualize profile changes over time.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/kalshi-trader-social-profile-scraper').call({nicknames: ['weatherman.allday'],modes: ['profile', 'trades'],maxItemsPerNickname: 20,includeBadges: true,});console.log(run.id, run.status);
Open the named datasets from the run's storage links in the Apify Console or API response.
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/kalshi-trader-social-profile-scraper').call(run_input={'nicknames': ['weatherman.allday'],'modes': ['profile', 'posts', 'comments'],'maxItemsPerNickname': 20,'includeBadges': True,})print(run['id'], run['status'])
Use client.dataset(DATASET_ID).list_items() with the dataset ID shown for each named output.
API usage with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~kalshi-trader-social-profile-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"nicknames": ["weatherman.allday"],"modes": ["profile", "likes"],"maxItemsPerNickname": 10,"includeBadges": true}'
Poll the returned run ID or configure a webhook for completion.
Use with Apify MCP and AI agents
Connect the Actor through Apify MCP so supported AI clients can start runs and inspect results.
Claude Code setup
Run this command and replace the token value:
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/kalshi-trader-social-profile-scraper" --header "Authorization: Bearer $APIFY_TOKEN"
Example prompt:
Run the Kalshi Trader Social Profile Scraper for weatherman.allday in profile mode and summarize the public performance fields.
Claude Desktop setup
Add this block to the Claude Desktop MCP configuration and restart the application:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/kalshi-trader-social-profile-scraper","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Cursor setup
Open Settings → MCP → Add new MCP server, use the same Apify MCP URL and authorization header from the Claude Desktop configuration, then enable the server.
Example prompt:
Collect profile and recent public posts for these Kalshi nicknames, then compare their top categories.
VS Code setup
Open the MCP server configuration in VS Code, add an HTTP server pointing to the same Apify MCP URL, provide the bearer token header, and start the server from the MCP panel.
Agent workflow ideas
- Refresh a public trader watchlist every morning.
- Summarize new posts for a journalist's research queue.
- Compare current profile metrics with the previous snapshot.
- Export public trades for independent analysis.
AI-generated analysis can be wrong. Verify important conclusions against source records.
Reliability and rate limits
The Actor accesses Kalshi's public social JSON endpoints with conservative sequential requests.
For HTTP 429 and server errors it retries with exponential delays. Each nickname and dataset mode is isolated, so one unavailable activity mode does not discard successful profile records from other requests.
Kalshi can change undocumented web-client endpoints or response fields. Endpoint adapters are kept separate to make source changes easier to diagnose.
Limitations
- The Actor does not place trades or access private portfolios.
- It does not require or accept Kalshi account credentials.
- Open and closed position history is not included in this initial release.
- Activity visibility depends on each trader's public settings and Kalshi's public API.
- A nickname can return zero trades, posts, comments, or likes.
- Results are snapshots, not investment advice or audited financial statements.
- The maximum is 50 nicknames and 100 activity records per nickname/mode per run.
- Upstream schema changes can add, remove, or rename source fields.
Legality: scraping public Kalshi profiles
This Actor is designed for public information available without login. Users are responsible for following applicable laws, Kalshi's terms, contractual obligations, and privacy requirements in their jurisdiction.
Do not use the output to harass people, infer sensitive traits, evade access controls, or make misleading claims. Minimize retained personal data and honor valid deletion or correction obligations where applicable.
This documentation is general information, not legal advice.
Troubleshooting
Why is a profile activity dataset empty?
The trader may have no public records for that mode, may use private activity settings, or the selected limit may not apply because the source returned no matching rows. Confirm the nickname and run profile mode first.
Why does a nickname fail while others succeed?
The nickname may not exist, may have changed, or the public API may be temporarily unavailable. Check the run log for the nickname and mode, then retry later.
Why are profile counts different from an older export?
Followers, views, activity, and performance metrics change. Compare scrapedAt timestamps and treat each run as a point-in-time snapshot.
Why is the liked-post author different from the selected trader?
The likes dataset contains posts liked by the source trader. nickname identifies the post author; sourceNickname identifies the trader whose likes were requested.
Why do I see additional fields in JSON?
The Actor preserves useful public source fields beyond the table's default columns. JSON exports can therefore contain richer context than the overview table.
FAQ
Does this Actor need a Kalshi API key?
No. It only accesses anonymous public social-profile data.
Can I provide profile URLs instead of nicknames?
Yes. Full https://kalshi.com/profile/... URLs and plain nicknames are accepted.
Can it scrape multiple traders?
Yes, up to 50 unique nicknames per run.
Does it include badges and category rankings?
Yes. Enable includeBadges and select profile mode.
Can I scrape positions?
Not in the initial release. Stable anonymous position-history coverage was not confirmed, so the Actor does not make that claim.
Does it guarantee complete trade history?
No. It returns the public records supplied by Kalshi, bounded by the Actor limit and upstream availability.
Can I use it for investment decisions?
The data can support independent research, but it is not investment advice and can be incomplete, delayed, or revised.
Related scrapers
Explore other data products from Automation Labs:
- Kalshi Market Trader Leaderboard Scraper for leaderboard-oriented discovery when available
- Polymarket Scraper for prediction-market event and odds workflows
- Reddit Scraper for public community sentiment research
Choose this Actor when your starting point is a known public Kalshi trader nickname and you need profile or social activity records.
Support
If a run fails unexpectedly:
- Open the run in Apify Console.
- Confirm the input nickname and selected modes.
- Review the log and named datasets.
- Share the run with the Actor developer through the Apify issue form.
- Describe the expected public record and the observed result.
Please do not include private credentials or sensitive account information in support requests.