Open-source data streams for prediction market traders. Polyfeeds monitors the public data sources that power markets on Polymarket and Kalshi — FDA approvals, weather alerts, economic indicators, election results, sports scores, and more.
Every stream maps directly to the categories where prediction markets trade. If there's a market on it, there should be a feed for it.
Status: Live and collecting data. Opening to contributors soon — this will be the fundamental data layer every prediction market trader depends on.
Data is organized into streams that mirror prediction market categories:
| Stream | Feeds | What's Inside |
|---|---|---|
| Weather & Climate | 39 | City forecasts, NWS severe alerts, earthquakes, volcanoes, solar weather |
| Sports | 14 | NFL, NBA, MLB, NHL, MLS, NCAA, EPL, La Liga, Bundesliga, Serie A, Ligue 1, F1, ATP, WTA |
| Regulatory | 15 | FDA drug approvals, device clearances, recalls, adverse events, federal rules |
| Crypto | 11 | CoinGecko prices & trends, CoinPaprika, DeFiLlama DeFi protocols, Fear & Greed Index |
| Economics | 8 | National debt, treasury rates, federal spending, revenue, GDP, Bank of Canada |
| Politics | 6 | White House executive actions, Supreme Court opinions, Congress, FEC, polling |
| Geopolitics | 5 | Armed conflict events, EU Council sanctions, UN resolutions, travel advisories |
| Markets | 5 | Polymarket & Kalshi active markets, SEC filings, IPO filings |
| Tech & AI | 2 | HuggingFace trending models, GitHub trending repos |
Each feed includes contract mappings — direct links between the data and the prediction market contracts it resolves.
Feeds are JSON configs. Drop a file, open a PR.
{
"name": "FDA Drug Approvals",
"description": "New drug approval actions — resolves pharma prediction market contracts",
"category": "regulatory",
"provider": "fda",
"source": {
"url": "https://api.fda.gov/drug/drugsfda.json?sort=submissions.submission_status_date:desc&limit=50",
"format": "json"
},
"schedule": "every 6 hours",
"license": "public-domain",
"tags": ["fda", "pharma", "drug-approvals"],
"extract": {
"root": "results",
"fields": [
{ "name": "brand_name", "path": "openfda.brand_name[0]", "type": "string" },
{ "name": "generic_name", "path": "openfda.generic_name[0]", "type": "string" },
{ "name": "application_number", "path": "application_number", "type": "string" }
],
"dedup_key": "application_number"
},
"contracts": [
{
"platform": "polymarket",
"title": "Will the FDA approve [drug]?",
"relationship": "resolves"
}
]
}For complex data sources that need custom fetch logic, use a Tier 2 TypeScript feed — see CONTRIBUTING.md.
git clone https://github.com/pauljump/polyfeeds.git
cd polyfeeds
npm install
POLYFEEDS_DB=./data.db npx tsx start.ts
# API running at http://localhost:3001For the web dashboard:
cd packages/web
NEXT_PUBLIC_API_URL=http://localhost:3001 npx next dev
# Dashboard at http://localhost:3000All endpoints are open, no auth required.
GET /feeds → List all feeds with health status
GET /feeds/:id → Feed detail + latest data points
GET /feeds/:id/data → Time-series data for a feed
GET /tags → All tags with counts
GET /health → Runner + API health check
Rate limited to 100 requests/minute per IP.
polyfeeds/
├── packages/
│ ├── sdk/ → Feed schema, validation, TypeScript types
│ ├── runner/ → Cron executor, fetches data, writes to SQLite
│ ├── api/ → Fastify REST API (read-only)
│ └── web/ → Next.js dashboard
├── feeds/ → Feed configs (JSON + TypeScript)
│ └── _templates/ → Template-based feed generation
└── start.ts → Combined entry point
Data flows in one direction: Runner → SQLite → API → Dashboard
See CONTRIBUTING.md for the full guide. The short version:
- Pick a prediction market category that needs better data coverage
- Create a feed config in
feeds/your-source/feed.json - Add contract mappings linking to Polymarket/Kalshi markets
- Run
npx tsx packages/sdk/src/validate.ts feeds/your-source/feed.json - Open a PR
The easiest way to add a feed: tell Claude "add a polyfeeds feed for [data source]" and paste the feed format above.
MIT