Kalshi Profile Scraper
Pricing
from $0.70 / 1,000 profiles
Kalshi Profile Scraper
Get public Kalshi profile data for one or more handles. Choose profile details, open or closed positions, trades, category performance, posts, comments, or likes and receive structured rows without account authentication.
Pricing
from $0.70 / 1,000 profiles
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 days ago
Last modified
Categories
Share
🎯 See a Kalshi profile in one run
Kalshi traders, researchers, and developers can enter public profile handles and choose one data type for a run. The Actor returns structured rows for profile details, positions, trades, category performance, posts, comments, or likes. This makes public account and activity data easier to review in an Apify dataset without account authentication.
- Use Kalshi Likes Scraper to collect public likes for a profile.
- Use Kalshi Comments Scraper to collect a profile's public comments.
- Use Kalshi Posts Scraper to collect a profile's public posts.
- Use Kalshi Category Performance Scraper to review a profile's category measures.
- Use Kalshi Trades Scraper to collect a profile's public trades.
- Use Kalshi Closed Positions Scraper to collect historical closed positions.
- Use Kalshi Open Positions Scraper to collect current open positions.
- Use Kalshi Profile Scraper to collect profile details and metrics.
📊 Kalshi profile rows you can use
Each saved row has a recordType that shows the selected public data type. Profile rows can include public identity, status, dates, social counts, financial metrics, categories, and performance badges. Other rows describe positions, trades, category measures, posts, comments, or likes.
▶️ Run one Kalshi profile data type
- Open the Actor in Apify Console.
- Choose one value in Data to return.
- Add one or more public Kalshi profile handles.
- Start the run and open the default dataset.
One run uses one selected data type for every submitted handle. Start another run when you need a different data type. The Actor reads public Kalshi data and does not need account authentication.
⚙️ Input
Input fields
Both fields are required.
| Field | Type | What it does |
|---|---|---|
target | string | Chooses the one public Kalshi data type to return. The choice applies to every handle in the run. |
profileHandles | array of strings | Lists one or more public Kalshi profile handles to check. Add one handle per item. |
Example input
This is the smallest successful common input from a current beta run.
{"target": "profile","profileHandles": ["DegenJohnny"]}
🧾 Output
The default dataset can contain eight row shapes. Optional fields can be absent when public Kalshi does not provide them.
Profile rows
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this as a profile row. |
profileHandle | string | The public Kalshi handle that produced the row. |
profileUrl | string (URL) | A link to the public Kalshi profile. |
displayName | string | The public name shown on the profile. |
status | string | The public profile status. |
accountCreatedAt | string (date-time) | The public account creation time. |
followersCount | integer | The number of public followers. |
followingCount | integer | The number of profiles followed. |
postCount | integer | The number of public posts. |
profileImageUrl | string (URL) | A link to the public profile image. |
openInterest | number | The public open interest value for the profile. |
tradingVolume | number | The public trading volume for the profile. |
profitLoss | number | The public profit or loss value for the profile. |
tradedMarketsCount | integer | The number of markets traded by the profile. |
topCategories | array of strings | The profile's top category affiliations. |
performanceBadges | array of objects | Public performance and ranking badges for the profile. |
performanceBadges[].name | string | The badge name. |
performanceBadges[].category | string | The category linked to the badge. |
performanceBadges[].rank | integer | The ranking number shown for the badge. |
performanceBadges[].rankingContext | string | The public context that explains the ranking. |
Example profile row
{"recordType": "profile","profileHandle": "DegenJohnny","profileUrl": "https://kalshi.com/ideas/profiles/DegenJohnny","displayName": "DegenJohnny","status": "active","accountCreatedAt": "2026-05-25T00:00:00.000Z","followersCount": 7,"followingCount": 12,"postCount": 22,"profileImageUrl": "https://kalshi-social-public.s3.amazonaws.com/profile-pictures/sound.octopus5269-2026-07-03%2003%3A42%3A20.webp","tradingVolume": 38677,"profitLoss": -9707324,"tradedMarketsCount": 132,"topCategories": ["Sports","Crypto"],"performanceBadges": []}
Open and closed position rows
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies an openPosition or closedPosition row. |
profileHandle | string | The public Kalshi handle that produced the row. |
market | object | The market linked to the position. |
market.marketId | string | The public market identifier. |
market.ticker | string | The public market ticker. |
market.title | string | The public market title. |
market.url | string (URL) | A link to the public market. |
contractCount | integer | The number of contracts in the position. |
profitLoss | number | The profit or loss for the position. |
Trade rows
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this as a trade row. |
profileHandle | string | The public Kalshi handle that produced the row. |
tradeId | string | The public trade identifier. |
market | object | The market linked to the trade. |
market.marketId | string | The public market identifier. |
market.ticker | string | The public market ticker. |
market.title | string | The public market title. |
market.url | string (URL) | A link to the public market. |
price | number | The price reported for the trade. |
quantity | integer | The number of contracts traded. |
side | string | The trade side or action reported by Kalshi. |
participants | array of objects | The public participants reported for the trade. |
participants[].handle | string | The public handle of a participant. |
participants[].role | string | The role reported for a participant. |
executedAt | string (date-time) | The time when the trade was executed. |
Example trade row
{"recordType": "trade","profileHandle": "weatherman.allday","tradeId": "d69df33a-f24b-9f39-2a0f-a1edb4af37cb","market": {"marketId": "4bce0537-f23b-45c0-97b9-2c062fad2265","ticker": "KXUSLTOTAL-26AUG22CHAMIA-1","title": "Will over 0.5 goals be scored?"},"price": 0.99,"quantity": 25,"side": "buy","participants": [{"handle": "weatherman.allday","role": "maker"}],"executedAt": "2026-08-24T23:26:11.151Z"}
Category performance rows
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this as a categoryPerformance row. |
profileHandle | string | The public Kalshi handle that produced the row. |
category | string | The category measured by the row. |
metric | string | The name of the performance metric. |
value | number | The numeric value of the performance metric. |
label | string | The public label for the performance value. |
Example category performance row
{"recordType": "categoryPerformance","profileHandle": "DegenJohnny","category": "Crypto","metric": "projected_pnl","value": -342.0078,"label": "Crypto"}
Post rows
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this as a post row. |
profileHandle | string | The public Kalshi handle that produced the row. |
postId | string | The public post identifier. |
postUrl | string (URL) | A link to the public post. |
content | string | The public text of the post. |
market | object | The market linked to the post, when provided. |
market.marketId | string | The public market identifier. |
market.ticker | string | The public market ticker. |
market.title | string | The public market title. |
market.url | string (URL) | A link to the public market. |
likeCount | integer | The number of public likes on the post. |
commentCount | integer | The number of public comments on the post. |
createdAt | string (date-time) | The time when the post was created. |
mediaUrls | array of strings | Links to media attached to the post, when provided. |
Example post row
{"recordType": "post","profileHandle": "DegenJohnny","postId": "326b349a-94dd-4ea7-8bad-a5f0f2218e01","postUrl": "https://kalshi.com/ideas/posts/326b349a-94dd-4ea7-8bad-a5f0f2218e01","content": "cool","market": {"marketId": "fe0fe3c0-7af5-43fb-9446-9e39db73876d","ticker": "KXITFWMATCH-26JUL03SIEZAA-SIE","title": "Will Madison Sieg win the Sieg vs Zaar: W35 Aix-les-Bains Quarterfinal match?","url": "https://kalshi.com/markets/kxitfwmatch/kxitfwmatch-26jul03siezaa?marketTicker=KXITFWMATCH-26JUL03SIEZAA-SIE"},"likeCount": 0,"commentCount": 0,"createdAt": "2026-07-03T17:51:14.147Z"}
Comment rows
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this as a comment row. |
profileHandle | string | The public Kalshi handle that produced the row. |
commentId | string | The public comment identifier. |
content | string | The public text of the comment. |
post | object | The public post linked to the comment. |
post.postId | string | The public post identifier. |
post.url | string (URL) | A link to the public post. |
post.content | string | The public text of the linked post. |
post.market | object | The market linked to the post, when provided. |
post.market.marketId | string | The public market identifier. |
post.market.ticker | string | The public market ticker. |
post.market.title | string | The public market title. |
post.market.url | string (URL) | A link to the public market. |
likeCount | integer | The number of public likes on the comment. |
createdAt | string (date-time) | The time when the comment was created. |
Example comment row
{"recordType": "comment","profileHandle": "DegenJohnny","commentId": "80410825-9529-49fe-8e3a-2fcf95fc4ff2","content": "nice dude","post": {"postId": "4fb8fe84-da40-4283-94f2-01c117f69389","url": "https://kalshi.com/ideas/posts/4fb8fe84-da40-4283-94f2-01c117f69389","content": "","market": {"marketId": "f26202b4-85e0-474c-9c01-fa76f18e12ad","ticker": "KXMVESPORTSMULTIGAMEEXTENDED-S2026C6D3ED84071-624BCFEB874","title": "yes Chicago C,yes Los Angeles D,yes Over 6.5 runs scored,yes Morocco advances","url": "https://kalshi.com/markets/kxmvesportsmultigameextended/kxmvesportsmultigameextended-s2026c6d3ed84071?marketTicker=KXMVESPORTSMULTIGAMEEXTENDED-S2026C6D3ED84071-624BCFEB874"}},"likeCount": 1,"createdAt": "2026-06-30T04:02:01.604Z"}
Like rows
| Field | Type | What it does |
|---|---|---|
recordType | string | Identifies this as a like row. |
profileHandle | string | The public Kalshi handle that produced the row. |
likedItem | object | The public market or content item that was liked. |
likedItem.type | string | The kind of item that was liked: market, post, or comment. |
likedItem.id | string | The public identifier of the liked item. |
likedItem.title | string | The public title of the liked item. |
likedItem.url | string (URL) | A link to the liked item. |
likedItem.content | string | The public text of the liked item. |
likedItem.market | object | The market linked to the liked item, when provided. |
likedItem.market.marketId | string | The public market identifier. |
likedItem.market.ticker | string | The public market ticker. |
likedItem.market.title | string | The public market title. |
likedItem.market.url | string (URL) | A link to the public market. |
likeCount | integer | The number of public likes reported for the item. |
likedAt | string (date-time) | The time when the profile liked the item. |
mediaUrls | array of strings | Links to media attached to the liked content, when provided. |
Example like row
{"recordType": "like","profileHandle": "DegenJohnny","likedItem": {"type": "post","id": "7403e9fb-390d-4409-84c8-b5a0c31ca260","title": "Anna Snigireva","url": "https://kalshi.com/ideas/posts/7403e9fb-390d-4409-84c8-b5a0c31ca260","content": "","market": {"marketId": "1af3951c-12d7-45c8-99da-4183a1ac02d9","ticker": "KXITFWMATCH-26JUL02SNIZHU-SNI","title": "Will Anna Snigireva win the Snigireva vs Zhu: W15 Maanshan Quarterfinal match?","url": "https://kalshi.com/markets/kxitfwmatch/kxitfwmatch-26jul02snizhu?marketTicker=KXITFWMATCH-26JUL02SNIZHU-SNI"}},"likeCount": 2,"likedAt": "2026-07-03T04:25:26.886Z","mediaUrls": ["https://media.giphy.com/media/Tx5A9j5sMu9VDzdlKS/200h.webp"]}
💳 Pricing
Pricing uses pay per event. A saved row is matched to one event: Profile, Open position, Closed position, Trade, Category performance, Profile post, Profile comment, or Profile like. The pricing panel shows the current tier price for each event. Platform usage charges may also apply under your Apify plan.
🔌 Integrations
Use the Apify API or a dataset export to read saved rows after a run. The Actor reads public Kalshi data and does not place trades, change accounts, or provide investment advice.
❓ FAQ
Can one run return more than one data type?
No. Choose one value in Data to return. That choice applies to every submitted handle. Start another run for another data type.
Can I submit more than one profile handle?
Yes. Add one or more public Kalshi handles to profileHandles. The Actor uses the same selected data type for all of them.
Does this need a Kalshi account or API key?
No. The Actor reads public Kalshi profile data without account authentication.
What if a profile is private or unavailable?
Private, deleted, or unavailable source records are not guaranteed. Only public data that Kalshi exposes can be returned.
Can it scrape all Kalshi markets?
No. This Actor works from submitted public profile handles. Market-wide discovery and odds scraping are outside its scope.
Does it give trading advice?
No. It returns public profile, position, trade, category, post, comment, and like data. It does not make predictions, give investment advice, or place trades.
📝 Changelog
0.0: Initial release
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Polymarket + Kalshi Arbitrage Finder: compare public prediction markets for adjacent price research.
- Stocktwits Scraper: collect public ticker messages and user posts for market discussion context.
- Twitter (X) Scraper: collect public X posts and profile matches for wider social context.
- Kalshi Historical Trades Scraper: collect public Kalshi trade executions for source-level trade analysis.
- Polymarket Market Monitor + Whale & Arbitrage Signals: review Polymarket price changes, holders, and cross-market signals.
Made with ❤️ by Maxime Dupré