Kalshi Trader Social Profile Scraper avatar

Kalshi Trader Social Profile Scraper

Pricing

Pay per event

Go to Apify Store
Kalshi Trader Social Profile Scraper

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

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

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?

DatasetImportant fieldsTypical use
Profilesnickname, description, followers, joined date, viewsIdentity and audience snapshots
Performanceopen interest, volume, PnL, markets tradedTrader comparison and monitoring
Categoriestop categories, badges, ranksSpecialization and leaderboard research
Tradesticker, price, count, side, action, datePublic trade activity analysis
Postscontent, market context, ROI, likes, commentsSentiment and idea research
Commentscontent, parent post, depth, likes, dateConversation and journalism workflows
Likesliked post, author, market context, engagementPublic 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

FieldTypeRequiredDescription
nicknamesstring[]Yes1-50 public nicknames or full Kalshi profile URLs
modesstring[]Noprofile, trades, posts, comments, and/or likes
maxItemsPerNicknameintegerNo1-100 activity records per nickname and mode
includeBadgesbooleanNoAttach 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

  1. Open the Actor input page.
  2. Paste a nickname such as weatherman.allday.
  3. Keep Profile & performance selected.
  4. Choose whether ranking badges should be included.
  5. Click Start.
  6. Open the Trader profiles dataset when the run finishes.
  7. 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 badges
  • trades — public trade records
  • posts — posts authored by selected traders
  • comments — comments authored by selected traders
  • likes — 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 profile mode.
  • 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 scrapedAt because 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:

  1. Run profile mode daily.
  2. Append the profiles dataset to a warehouse table.
  3. Key rows by social_id and scrapedAt.
  4. Calculate changes in followers, views, volume, PnL, or markets traded.
  5. 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 ApifyClient
client = 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.

Explore other data products from Automation Labs:

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:

  1. Open the run in Apify Console.
  2. Confirm the input nickname and selected modes.
  3. Review the log and named datasets.
  4. Share the run with the Actor developer through the Apify issue form.
  5. Describe the expected public record and the observed result.

Please do not include private credentials or sensitive account information in support requests.