Kalshi Profile Scraper avatar

Kalshi Profile Scraper

Pricing

from $0.70 / 1,000 profiles

Go to Apify Store
Kalshi Profile Scraper

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é

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

9 days ago

Last modified

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.

📊 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

  1. Open the Actor in Apify Console.
  2. Choose one value in Data to return.
  3. Add one or more public Kalshi profile handles.
  4. 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.

FieldTypeWhat it does
targetstringChooses the one public Kalshi data type to return. The choice applies to every handle in the run.
profileHandlesarray of stringsLists 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

FieldTypeWhat it does
recordTypestringIdentifies this as a profile row.
profileHandlestringThe public Kalshi handle that produced the row.
profileUrlstring (URL)A link to the public Kalshi profile.
displayNamestringThe public name shown on the profile.
statusstringThe public profile status.
accountCreatedAtstring (date-time)The public account creation time.
followersCountintegerThe number of public followers.
followingCountintegerThe number of profiles followed.
postCountintegerThe number of public posts.
profileImageUrlstring (URL)A link to the public profile image.
openInterestnumberThe public open interest value for the profile.
tradingVolumenumberThe public trading volume for the profile.
profitLossnumberThe public profit or loss value for the profile.
tradedMarketsCountintegerThe number of markets traded by the profile.
topCategoriesarray of stringsThe profile's top category affiliations.
performanceBadgesarray of objectsPublic performance and ranking badges for the profile.
performanceBadges[].namestringThe badge name.
performanceBadges[].categorystringThe category linked to the badge.
performanceBadges[].rankintegerThe ranking number shown for the badge.
performanceBadges[].rankingContextstringThe 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

FieldTypeWhat it does
recordTypestringIdentifies an openPosition or closedPosition row.
profileHandlestringThe public Kalshi handle that produced the row.
marketobjectThe market linked to the position.
market.marketIdstringThe public market identifier.
market.tickerstringThe public market ticker.
market.titlestringThe public market title.
market.urlstring (URL)A link to the public market.
contractCountintegerThe number of contracts in the position.
profitLossnumberThe profit or loss for the position.

Trade rows

FieldTypeWhat it does
recordTypestringIdentifies this as a trade row.
profileHandlestringThe public Kalshi handle that produced the row.
tradeIdstringThe public trade identifier.
marketobjectThe market linked to the trade.
market.marketIdstringThe public market identifier.
market.tickerstringThe public market ticker.
market.titlestringThe public market title.
market.urlstring (URL)A link to the public market.
pricenumberThe price reported for the trade.
quantityintegerThe number of contracts traded.
sidestringThe trade side or action reported by Kalshi.
participantsarray of objectsThe public participants reported for the trade.
participants[].handlestringThe public handle of a participant.
participants[].rolestringThe role reported for a participant.
executedAtstring (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

FieldTypeWhat it does
recordTypestringIdentifies this as a categoryPerformance row.
profileHandlestringThe public Kalshi handle that produced the row.
categorystringThe category measured by the row.
metricstringThe name of the performance metric.
valuenumberThe numeric value of the performance metric.
labelstringThe 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

FieldTypeWhat it does
recordTypestringIdentifies this as a post row.
profileHandlestringThe public Kalshi handle that produced the row.
postIdstringThe public post identifier.
postUrlstring (URL)A link to the public post.
contentstringThe public text of the post.
marketobjectThe market linked to the post, when provided.
market.marketIdstringThe public market identifier.
market.tickerstringThe public market ticker.
market.titlestringThe public market title.
market.urlstring (URL)A link to the public market.
likeCountintegerThe number of public likes on the post.
commentCountintegerThe number of public comments on the post.
createdAtstring (date-time)The time when the post was created.
mediaUrlsarray of stringsLinks 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

FieldTypeWhat it does
recordTypestringIdentifies this as a comment row.
profileHandlestringThe public Kalshi handle that produced the row.
commentIdstringThe public comment identifier.
contentstringThe public text of the comment.
postobjectThe public post linked to the comment.
post.postIdstringThe public post identifier.
post.urlstring (URL)A link to the public post.
post.contentstringThe public text of the linked post.
post.marketobjectThe market linked to the post, when provided.
post.market.marketIdstringThe public market identifier.
post.market.tickerstringThe public market ticker.
post.market.titlestringThe public market title.
post.market.urlstring (URL)A link to the public market.
likeCountintegerThe number of public likes on the comment.
createdAtstring (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

FieldTypeWhat it does
recordTypestringIdentifies this as a like row.
profileHandlestringThe public Kalshi handle that produced the row.
likedItemobjectThe public market or content item that was liked.
likedItem.typestringThe kind of item that was liked: market, post, or comment.
likedItem.idstringThe public identifier of the liked item.
likedItem.titlestringThe public title of the liked item.
likedItem.urlstring (URL)A link to the liked item.
likedItem.contentstringThe public text of the liked item.
likedItem.marketobjectThe market linked to the liked item, when provided.
likedItem.market.marketIdstringThe public market identifier.
likedItem.market.tickerstringThe public market ticker.
likedItem.market.titlestringThe public market title.
likedItem.market.urlstring (URL)A link to the public market.
likeCountintegerThe number of public likes reported for the item.
likedAtstring (date-time)The time when the profile liked the item.
mediaUrlsarray of stringsLinks 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 🫡

Made with ❤️ by Maxime Dupré