API & Data Platform
Programmatic access to polling averages, forecast-market probabilities, representative scorecards, and the representation-gap index — the same data that powers every chart on Quorly.
Demonstration data — not a live government record
Public endpoints
10
Uptime (90d)
99.97%
Median latency
41 ms
Requests served / mo
38M9%
Demo API key
Generate a sandbox key to explore the demonstration endpoints. Sandbox keys are rate-limited to Developer-tier quotas and return demonstration data only.
Endpoint Reference
| Method | Endpoint | Description | Query params | Example |
|---|---|---|---|---|
| GET | /api/polls TRY IT | Poll studies with full methodology metadata and transparency scores | topic, pollster, population, limit | /api/polls?topic=cannabis&limit=10 |
| GET | /api/pollsters | Pollster directory: ratings, historical error, AAPOR membership | orientation, minTransparency | /api/pollsters?minTransparency=70 |
| GET | /api/averages TRY IT | Weighted polling averages with Pulse and market comparisons | topic, limit | /api/averages?topic=approval |
| GET | /api/trends | Time-series for any average, market, or Pulse question | id, from, to, interval | /api/trends?id=m-shutdown&interval=1d |
| GET | /api/markets TRY IT | Forecast markets: probabilities, 24h change, participation, resolution criteria | category, status, limit | /api/markets?category=Congress&status=open |
| GET | /api/markets/:id | Single market with full history, order-book summary, and evidence links | id (path) | /api/markets/m-stock-ban |
| GET | /api/representatives | Representative scorecards: alignment, attendance, transparency, promises | state, party, office | /api/representatives?state=OH |
| GET | /api/gap | Representation-gap index: constituent sentiment vs. recorded action | minGap, state, issue | /api/gap?minGap=20 |
| GET | /api/pulse | Public Pulse questions with verified-respondent breakdowns | category, relatedBill | /api/pulse?category=Ethics |
| GET | /api/bills | Legislation tracker: status, timeline, votes, community sentiment | status, policyArea, sponsor | /api/bills?status=In%20Committee |
Example: GET /api/markets
200 OK · application/json
JSON
{
"data": [
{
"id": "m-stock-ban",
"question": "Will Congress enact a stock trading ban for members before 2027?",
"category": "Congress",
"yesProb": 34,
"change24h": 2,
"participants": 8412,
"status": "open",
"closesAt": "2026-12-31",
"resolutionCriteria": "Resolves YES if a statute banning individual stock trading by members is signed into law…"
}
],
"meta": {
"version": "v1",
"attribution": "Quorly demonstration data",
"generatedAt": "2026-07-03T12:00:00.000Z"
}
}Example: GET /api/averages
200 OK · application/json
JSON
{
"data": [
{
"id": "avg-approval",
"topic": "Presidential approval",
"label": "National Polling Average",
"value": 44.2,
"change30d": -1.3,
"pollsIncluded": 18,
"pulseValue": 43.0,
"forecastProb": 41.0
}
],
"meta": {
"version": "v1",
"attribution": "Quorly demonstration data",
"generatedAt": "2026-07-03T12:00:00.000Z"
}
} Authenticated request
cURL
curl -s "https://api.quorly.example/v1/markets?category=Congress" \ -H "Authorization: Bearer $QUORLY_API_KEY" \ -H "Accept: application/json"
Plan Limits
Matches platform pricingDeveloper
Start here25,000
API requests / month
- 60 req/min burst rate
- 90 days historical data
- Attribution-locked widgets
- Public read endpoints
- Community forum
Professional
Most popular250,000
API requests / month
- 300 req/min burst rate
- 3 years historical data
- White-label widgets
- All read endpoints + bulk export
- Email, 2-business-day SLA
Business
Scale1,500,000
API requests / month
- 1,200 req/min burst rate
- Full archive historical data
- White-label + custom themes widgets
- All endpoints + webhooks + streaming
- Dedicated manager, 4-hour SLA
Authentication
- • All requests require
Authorization: Bearer <key>. - • Keys are scoped per project and can be rotated at any time without downtime (old key valid for 24h).
- • Server-side use only — never ship a key in client-side code. Use widgets for browser embeds.
Rate limits
- • Limits apply per key, per minute, with monthly quotas per plan.
- • Every response includes
X-RateLimit-RemainingandX-RateLimit-Reset. - • Exceeding a limit returns
429with aRetry-Afterheader — back off exponentially.
Attribution
- • Public displays of API data must show “Data: Quorly” with a link, visible without interaction.
- • The
meta.attributionfield ships with every response — render it as delivered. - • Widgets include attribution automatically; removing or obscuring it violates the terms.
Licensed data boundary: the Quorly API never exposes licensed third-party data beyond its permitted usage. Poll results from external pollsters are redistributed only as aggregates and derived averages under our redistribution agreements; raw microdata, respondent-level records, and full question-level crosstabs from licensed sources are not available through any endpoint or tier. Forecast markets use virtual Q Credits with no cash value — API consumers may not present market probabilities as gambling odds or financial advice.
Embeddable Widgets
No API key requiredDrop a live market probability, polling average, or representation-gap card into any site. Widgets are served from an isolated origin, theme-aware, and update automatically. Attribution renders inside the widget frame.
Iframe embed — market card
HTML
<!-- Market probability widget --> <iframe src="https://widgets.quorly.example/market/m-stock-ban?theme=dark" width="360" height="200" frameborder="0" title="Quorly market: congressional stock trading ban"> </iframe> <!-- Attribution is rendered inside the widget and must remain visible -->
Script embed — polling average
HTML
<!-- Polling average embed --> <div data-quorly-widget="average" data-topic="approval" data-theme="dark"></div> <script async src="https://widgets.quorly.example/embed.js"></script>