Kalshi Perps Funding Rate, Open Interest & Trades Scraper
Kalshi perps data: single-stock, crypto and metal perps with funding rate history, next-funding estimate, open interest, volume, trades, candles, order books and cross-venue funding spreads.
Verification
Not yet in the weekly verification report.
Output fields
Authoritative field set from the dataset schema.
| Field | Type |
|---|---|
source_url | string|null |
row_type | string|null |
ticker | string|null |
title | string|null |
asset_class | string|null |
contract_type | string|null |
status | string|null |
is_open | boolean|null |
next_open_time | string|null |
next_close_time | string|null |
halted | boolean|null |
bid | number|null |
ask | number|null |
bid_size | number|null |
ask_size | number|null |
price | number|null |
mark_price | number|null |
reference_price | number|null |
open_interest | number|null |
oi_notional_usd | number|null |
volume | number|null |
volume_notional_usd | number|null |
volume_24h | number|null |
volume_24h_notional_usd | number|null |
contract_size | number|null |
tick_size | number|null |
leverage_estimate | number|null |
funding_rate_estimate | number|null |
funding_rate_estimate_8h | number|null |
funding_rate_estimate_annualised | number|null |
premium_index | number|null |
next_funding_time | string|null |
interval_hours | integer|null |
funding_cap | number|null |
funding_deadband | number|null |
funding_time | string|null |
funding_rate | number|null |
funding_rate_8h | number|null |
funding_rate_annualised | number|null |
trade_id | string|null |
created_time | string|null |
count | number|null |
taker_side | string|null |
is_block_trade | boolean|null |
interval | string|null |
period_end | string|null |
open | number|null |
high | number|null |
low | number|null |
close | number|null |
mean | number|null |
bid_open | number|null |
bid_high | number|null |
bid_low | number|null |
bid_close | number|null |
ask_open | number|null |
ask_high | number|null |
ask_low | number|null |
ask_close | number|null |
best_bid | number|null |
best_ask | number|null |
mid | number|null |
spread | number|null |
bid_levels | integer|null |
ask_levels | integer|null |
bid_depth | number|null |
ask_depth | number|null |
bids | array|null |
asks | array|null |
symbol | string|null |
kalshi_funding_rate | number|null |
kalshi_interval_hours | integer|null |
kalshi_rate_8h | number|null |
kalshi_annualised | number|null |
kalshi_next_funding_time | string|null |
hyperliquid_funding_rate | number|null |
hyperliquid_interval_hours | number|null |
hyperliquid_rate_8h | number|null |
hyperliquid_annualised | number|null |
hyperliquid_next_funding_time | string|null |
hyperliquid_spread_annualised | number|null |
binance_funding_rate | number|null |
binance_interval_hours | number|null |
binance_rate_8h | number|null |
binance_annualised | number|null |
binance_next_funding_time | string|null |
binance_spread_annualised | number|null |
bybit_funding_rate | number|null |
bybit_interval_hours | number|null |
bybit_rate_8h | number|null |
bybit_annualised | number|null |
bybit_next_funding_time | string|null |
bybit_spread_annualised | number|null |
polymarket_funding_rate | number|null |
polymarket_interval_hours | number|null |
polymarket_rate_8h | number|null |
polymarket_annualised | number|null |
polymarket_next_funding_time | string|null |
polymarket_spread_annualised | number|null |
venues_compared | integer|null |
best_venue | string|null |
best_annualised | number|null |
spread_vs_best | number|null |
notice | string|null |
notice_type | string|null |
Sample row
{
"source_url": "https://api.elections.kalshi.com/trade-api/v2/margin/markets/KXNVDAPERP",
"row_type": "market",
"ticker": "KXNVDAPERP",
"title": "NVDA",
"asset_class": "Equities",
"contract_type": "perpetual",
"status": "active",
"is_open": false,
"next_open_time": "2026-11-08T23:00:00Z",
"halted": false,
"bid": 3.7,
"ask": 3.78,
"price": 3.7523,
"mark_price": 3.7523,
"open_interest": 79898,
"oi_notional_usd": 299801.2654,
"volume_24h": 6133688,
"volume_24h_notional_usd": 22784763.9004,
"contract_size": 0.02,
"leverage_estimate": 4.0576,
"funding_rate_estimate": 0,
"funding_rate_estimate_annualised": 0,
"next_funding_time": "2026-11-07T21:00:00Z",
"interval_hours": 24,
"funding_cap": 0.02
} Inputs
| Field | Type | Req | Default | Description |
|---|---|---|---|---|
mode | string | no | "snapshot" | snapshot: one row per perp with price, bid/ask, open interest, volume and the next funding estimate. funding_history: every settled funding rate since 'From date'. trades: the public trade tape, newest first. candles: price, bid and ask OHLC per minute, hour or day. orderbook: the current order book per perp. funding_spread: Kalshi's funding next to Hyperliquid, Binance, Bybit and Polymarket perps, normalised to 8 hours and annualised. |
ticker | string | no | — | One Kalshi perp, e.g. KXBTCPERP or KXAAPLPERP. A bare symbol works too: BTC, AAPL, GOLD. Kept alongside 'Tickers' for saved tasks. |
tickers | array | no | [] | Many perps in one run (KXBTCPERP, KXETHPERP, AAPL...). Leave empty for every perp. Combined with 'Ticker'; duplicates are removed. |
assetClass | string | no | — | One asset class: Equities, Crypto, Metals, Energy or Indices. Kept alongside 'Asset classes' for saved tasks. |
assetClasses | array | no | [] | Keep only these asset classes: Equities (single-stock perps), Crypto, Metals, Energy, Indices. Leave empty for all. |
fromDate | string | no | — | Start of the history (YYYY-MM-DD, UTC) for funding_history, trades and candles. Empty: funding history from the first point (2026-06-03 for BTC), trades newest first, candles the last day (1m), week (1h) or everything (1d). |
candleInterval | string | no | "1h" | Candles mode only: one minute, one hour or one day. |
includeOrderbook | boolean | no | false | Snapshot mode only: also return each perp's current order book (one extra row per perp, charged as an order book). |
maxResults | integer | no | 1000 | A run-wide spend cap. Snapshot, order book and funding spread: at most this many perps. Funding history, trades and candles: at most this many rows in total across all tickers. A free 'truncated' row says when the cap was reached. |
proxyConfiguration | object | no | {"useApifyProxy":false} | Not needed: the APIs are public. Off by default. |
Pricing
Pay per result (market) — no charge for empty runs.
Example: 127 markets at $0.002/result ≈ $0.25.
FAQ
How far back does the funding history go?
To each perp's first payment: KXBTCPERP and the other early crypto perps start on 2026-06-03 (470 points on 2026-11-07), gold on 2026-09-11, the S&P 500 perp on 2026-10-06, single stocks on 2026-11-05. Set 'From date' to start later.
Why is a funding rate daily on one perp and 8-hourly on another?
That is Kalshi's schedule. Crypto perps pay every 8 hours; stocks, indices, metals and energy pay once a day, weekends included for the ones measured (gold, S&P 500). Every funding row carries interval_hours, the rate per 8 hours and the annualised rate (rate x 8,760 / interval_hours) so you can compare them.
Why are some asks or bids empty?
The book has nothing on that side. Kalshi sends 922337203685477.5807 or 0.0000 for an empty side; the actor returns null. Stock perps close outside market hours, so overnight their book is thin and their prices are from the close.
Which venues does the funding spread compare?
Hyperliquid, Binance and Bybit (all three as published by Hyperliquid's predictedFundings endpoint) and Polymarket perps. A perp gets a row when at least one venue lists the same underlying: on 2026-11-07, 39 Kalshi perps matched, 16 of them single stocks matched on Polymarket only. Kalshi's rate is its estimate for the period in progress; the other venues' are their current predicted rates.
Are prices per share or per coin?
Per Kalshi contract, as Kalshi quotes them. A contract is a fraction of the underlying (contract_size: 0.0001 BTC, 0.02 of an NVDA share), so KXBTCPERP trades around $7.60. The notional fields (oi_notional_usd, volume_24h_notional_usd) are in dollars.
Is there a liquidation feed?
No. Kalshi's public API publishes no liquidations, so this actor returns none.
Do I need an account or a proxy?
No. All the APIs used are public and keyless. The proxy input is off by default.
Guides & use cases
Related actors