Skip to main content

1. Get Your API Key

Header names are case-insensitive (x-rapidapi-key works), but we recommend the canonical casing above.

2. Your First Request

Response Format

All responses are JSON. Successful responses return the data directly:
Error responses use a consistent schema:

3. Official TypeScript SDK

The fastest way to integrate. Handles authentication, retries, and provides full type safety for all 1,000+ markets.

Full SDK Documentation →

25 typed methods, error classes, configuration options, and all usage examples.

4. Common Patterns

Poll Live Scores (lightweight)

Search by Team Name

Batch Fetch Multiple Events

Auto-Settle Bets


5. Integration Flow

Simple Integration

White-Label Sportsbook


6. How to Integrate Bets — Complete Flow

This is the most important section for sportsbook integrators.

Step 1 — Show odds to your user

Your frontend calls GET /v1/events/{id} and displays markets + odds.

Step 2 — User places a bet

When your user clicks “Place Bet”, save to your database:
Always store the odds at placement time. Odds change constantly — the API does not track what odds a user saw.
market_id is the primary identification method. It is consistent across all fixtures within the same sport — e.g. market_id: 36 always means “1X2 (Match Winner)” in every soccer match. You can hard-code market ID mappings per sport for reliable settlement logic.

Step 3 — Check the result

After the game ends, call POST /v1/bets/check with the data you stored:
Response

Step 4 — Credit the user

For parlays, use POST /v1/bets/check-parlay with stake and legs[]. The API calculates combined_odds and payout automatically.
Currency-agnostic: The stake and payout fields work with any currency. Send a numeric amount in whatever unit your platform uses (USD, EUR, BTC, points, etc.). No currency conversion is applied.
For production, use GET /v1/settlements (polled every 60s) as your primary settlement engine and /bets/check for on-demand verification.

Cross-Sport Market ID Consistency

market_id values are consistent across all fixtures within the same sport. For example, market_id: 36 maps to 1X2 in every soccer match — whether it’s Hamburger SV vs. FC Union Berlin or Corinthians vs. CA Peñarol.

View Market ID Tables →

See the full reference tables for consistent market IDs across major sports.

7. Settlement Feed Notes

Poll regularly after the game ends to capture all market resolutions as they arrive gradually. Always process settlements promptly.
  • An event appears in /v1/settlements as soon as the first market resolves, not only when all markets are done
  • resolved_markets_count grows over time; pending_markets_count reaches 0 when all markets are finalized
  • Core markets settle within seconds; niche markets resolve gradually over minutes
  • Coverage includes standard markets, player-prop markets, and dynamic live markets

Payload Modes

/v1/bets/check supports:
  • Batch: { "selections": [...] }
  • Single: { "selection": {...} }
  • Shortcut: { "event_id": "...", "market": "...", "outcome": "...", "odds": 1.85 }
/v1/bets/check-parlay supports:
  • Single: { "legs": [...], "stake": 10 }
  • Batch: { "parlays": [{ "parlay_id": "p1", "legs": [...], "stake": 10 }] }

8. Error Handling

When a backend service is temporarily unavailable, the response includes which component is affected:

9. Odds Formats

All endpoints that return odds support ?odds_format=:
Supported on: /events, /live, /featured, /search, /events/{id}, /events/{id}/odds, /events/batch, /outrights/{id}.

10. Rate Limit Headers

Every response includes:
Monitoring endpoints (/ping, /health, /status) do not count against your monthly quota. They have their own fixed rate limits: 2 req/s and 120 req/h, equal for all plans.

Next Steps

Browse Sports

See all 30+ available sports

Live Events

Get real-time live data

Settlement

Automatic bet settlement

SDK Reference

Full TypeScript SDK docs