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>
  );
}

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.