Back to Blog
Tutorial

Get Your First Prediction Market API Response in 5 Minutes

A step-by-step quickstart guide to fetching prediction market data from Polymarket, Kalshi, and Gemini using the Propheseer API with curl, Python, and JavaScript examples.

Propheseer Team
5 min read

Introduction

Getting started with prediction market data doesn't have to be complicated. With the Propheseer API, you can fetch live data from Polymarket, Kalshi, and Gemini in a single request — no need to manage three separate integrations.

In this quick start guide, you'll go from zero to your first prediction market API response in under 5 minutes. We'll cover account creation, authentication, and making requests with curl, Python, and JavaScript.

Prerequisites

Before you begin, you'll need:

  • A web browser (to create your account)
  • A terminal or code editor
  • Python 3.7+ or Node.js 16+ (optional — curl works too)

That's it. No crypto wallets, no complex authentication flows, no API key juggling across multiple platforms.

Step 1: Create Your Free Account

Head to propheseer.com/signup and create your account. You can sign up with email or Google OAuth.

Your free account includes:

  • 100 API requests per day
  • 10 requests per minute
  • Access to all market data from Polymarket, Kalshi, and Gemini
  • No credit card required

Once registered, you'll be redirected to your dashboard.

Step 2: Get Your API Key

After signing up, your API key is displayed on the dashboard page. It looks something like this:

pk_live_a1b2c3d4e5f6g7h8i9j0

Copy this key — you'll use it in every API request as a Bearer token in the Authorization header.

Keep your key secure. Don't commit it to public repositories or share it in client-side code. If your key is ever compromised, you can regenerate it from the dashboard.

Step 3: Make Your First Request

Now for the exciting part. Let's fetch live prediction market data.

Using curl

Open your terminal and run:

curl -s "https://api.propheseer.com/v1/markets?limit=5" \
  -H "Authorization: Bearer YOUR_API_KEY" | python3 -m json.tool

Using Python

import requests

API_KEY = "YOUR_API_KEY"

response = requests.get(
    "https://api.propheseer.com/v1/markets",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"limit": 5}
)

data = response.json()
for market in data["data"]:
    print(f"{market['question']}")
    print(f"  Source: {market['source']} | Probability: {market['outcomes'][0]['probability']:.0%}")
    print()

Using JavaScript (Node.js)

const API_KEY = "YOUR_API_KEY";

const response = await fetch(
  "https://api.propheseer.com/v1/markets?limit=5",
  { headers: { "Authorization": `Bearer ${API_KEY}` } }
);

const { data } = await response.json();
data.forEach(market => {
  console.log(market.question);
  console.log(`  Source: ${market.source} | Probability: ${(market.outcomes[0].probability * 100).toFixed(0)}%`);
});

Understanding the Response

Here's what a typical market object looks like:

{
  "id": "pm_12345abc",
  "question": "Will Bitcoin reach $150,000 by end of 2026?",
  "source": "polymarket",
  "category": "crypto",
  "status": "open",
  "outcomes": [
    { "name": "Yes", "probability": 0.42 },
    { "name": "No", "probability": 0.58 }
  ],
  "volume": 2450000,
  "url": "https://polymarket.com/markets?_q=Bitcoin%20150000"
}

Key fields to know:

FieldDescription
idUnique identifier with source prefix (pm_, ks_, gm_)
questionThe market question in plain text
sourcePlatform origin: polymarket, kalshi, or gemini
categoryMarket category (politics, crypto, economics, etc.)
statusMarket state: open, closed, or resolved
outcomesArray of possible outcomes with probability (0-1)
volumeTotal trading volume in USD
urlDirect link to the market on its original platform

The response also includes metadata:

{
  "data": [...],
  "meta": {
    "total": 1250,
    "limit": 5,
    "offset": 0,
    "sources": {
      "polymarket": 650,
      "kalshi": 400,
      "gemini": 200
    }
  }
}

Filtering and Searching

The /v1/markets endpoint supports several query parameters to narrow your results:

# Search for markets about Bitcoin
curl -s "https://api.propheseer.com/v1/markets?q=bitcoin&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Filter by source
curl -s "https://api.propheseer.com/v1/markets?source=kalshi&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Filter by category
curl -s "https://api.propheseer.com/v1/markets?category=politics&status=open" \
  -H "Authorization: Bearer YOUR_API_KEY"
ParameterDescriptionExample
qSearch by question text?q=bitcoin
sourceFilter by platform?source=polymarket
categoryFilter by category?category=politics
statusFilter by market status?status=open
limitResults per page (max 200)?limit=50
offsetPagination offset?offset=50

Checking Your Rate Limits

Every API response includes rate limit headers so you can track your usage:

X-RateLimit-Limit-Day: 100
X-RateLimit-Remaining-Day: 95
X-RateLimit-Limit-Minute: 10
X-RateLimit-Remaining-Minute: 8
X-RateLimit-Plan: free

You can also check your usage programmatically:

curl -s "https://api.propheseer.com/v1/keys/me" \
  -H "Authorization: Bearer YOUR_API_KEY"

If you're hitting the free tier limits, the Pro plan offers 10,000 requests per day for $19.99/month.

Next Steps

You've made your first request — now what? Here's where to go from here:


Ready to go beyond the basics? Upgrade to Pro for 10,000 daily requests, arbitrage detection, and unusual trade alerts. Or keep building on the free tier — 100 requests per day is plenty for prototyping.

Share this post