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.
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:
| Field | Description |
|---|---|
id | Unique identifier with source prefix (pm_, ks_, gm_) |
question | The market question in plain text |
source | Platform origin: polymarket, kalshi, or gemini |
category | Market category (politics, crypto, economics, etc.) |
status | Market state: open, closed, or resolved |
outcomes | Array of possible outcomes with probability (0-1) |
volume | Total trading volume in USD |
url | Direct 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"
| Parameter | Description | Example |
|---|---|---|
q | Search by question text | ?q=bitcoin |
source | Filter by platform | ?source=polymarket |
category | Filter by category | ?category=politics |
status | Filter by market status | ?status=open |
limit | Results per page (max 200) | ?limit=50 |
offset | Pagination 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:
- Explore the full API — Check out the interactive documentation to try every endpoint
- Understand the data — Learn how we normalize data across platforms for consistent responses
- Build something — Follow our tutorial to build a trading bot with Python
- Detect opportunities — Use the arbitrage detection endpoint to find price discrepancies (Pro plan)
- New to prediction markets? — Read our complete guide to prediction markets for context
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.