Prediction-market data for React, normalized.
One API and a set of headless components for prediction markets — across Polymarket and Kalshi, without caring which one the data came from.
TypeScript-firstHeadless & accessibleNo API keysPolymarket + Kalshi
Quick start
import { createClient, polymarket, kalshi } from '@prediction-kit/core';
import { PredictionKitProvider, TrendingMarkets } from '@prediction-kit/react';
import '@prediction-kit/react/styles.css';
const client = createClient({ providers: [polymarket(), kalshi()] });
export function App() {
return (
<PredictionKitProvider client={client}>
<TrendingMarkets limit={10} />
</PredictionKitProvider>
);
}Rendered output (sample data)
Why PredictionKit
One normalized model
Every market is the same Market shape — id, title, probability, volume, status — regardless of provider.
Provider-agnostic
createClient fans out across providers and merges results. Add a provider without touching your UI.
Headless components
Unstyled by default with a stable pk-* class on every element and an optional theme. Style it your way.
Read-only, no auth
Both providers’ market-data endpoints are public — ship without credentials.