Sports API Hub connects to external APIs via RapidAPI. Each API call counts against your RapidAPI subscription quota. This page explains rate limits, how to estimate API usage for your site, and how the plugin handles errors gracefully.
📊 RapidAPI Rate Limits
A paid RapidAPI subscription is required to use Sports API Hub. The free plan is not supported.
The recommended setup is AllSportsAPI2 Pro ($19.99/mo) which provides unlimited daily requests for all 8 sports. Pricing as of March 2026 — check RapidAPI for current rates:
| Provider | Plan | Requests | Rate Limit | Price |
|---|---|---|---|---|
| AllSportsAPI2 | Pro | Unlimited | 6/sec | $19.99/mo |
| AllSportsAPI2 | Ultra | Unlimited | 10/sec | $39.99/mo |
| BasketAPI1 | Pro | 15,000/day | 6/sec | $9.99/mo |
| BasketAPI1 | Mega | Unlimited | 10/sec | $24.99/mo |
| BaseballAPI | Pro | 15,000/day | 6/sec | $9.99/mo |
| BaseballAPI | Mega | Unlimited | 10/sec | $24.99/mo |
The dedicated sport APIs (BasketAPI1, BaseballAPI) have limited daily requests on most plans. They are suitable for covering several seasons of a single sport, but AllSportsAPI2 is a better choice for most users since the Pro plan already offers unlimited requests at a competitive price.
RapidAPI pages:
- AllSportsAPI2 (recommended)
- BasketAPI1
- BaseballAPI
API Calls Per Task
Each import and sync task uses a predictable number of API calls:
| Task | API Calls | Notes |
|---|---|---|
| Hierarchy | ~5 | Categories + leagues + seasons (one-time) |
| Fixtures | 1 per page | 30 games per page, paginated |
| Finished Details | 1–5 per game | Match + lineups + stats + incidents + highlights |
| Re-update | 1–5 per game | Same as Finished Details |
| Rosters | 1 per team | Full player list for one team |
| Teams | 1 per team | Team metadata and colors |
| Standings | 1 per season | Full standings table |
| Cup Trees | 1 per season | Knockout bracket data |
| Kickoff | 1 per page | 30 games per page, paginated |
| Season Probe | ~5 | Tests each capability endpoint once |
The Finished Details cost depends on your Import sub-options in API Config:
| Sub-Options Enabled | Calls Per Game |
|---|---|
| Match only | 1 |
| + Lineups | 2 |
| + Lineups + Team Stats | 3 |
| + Lineups + Team Stats + Incidents | 4 |
| + All four (Lineups, Team Stats, Incidents, Highlights) | 5 |
🧮 Estimation Examples
Example 1: NBA Season (Full Import)
An NBA regular season has 1,230 games (82 games per team, 30 teams, each game counted once).
| Step | Calculation | API Calls |
|---|---|---|
| Hierarchy | One-time | ~5 |
| Fixtures | 1,230 games / 30 per page | ~41 |
| Finished Details (3 sub-options) | 1,230 games x 4 calls | ~4,920 |
| Rosters | 30 teams x 1 call | 30 |
| Teams | 30 teams x 1 call | 30 |
| Standings | 1 call | 1 |
| Total | ~5,027 |
With the AllSportsAPI2 Pro plan (unlimited requests), this full import can be completed in a single session. On plans with daily limits, spread the finished details import across multiple days.
Example 2: NBA Season (Ongoing Weekly Sync)
After the initial import, ongoing sync keeps data current:
| Task | Frequency | Weekly Calls |
|---|---|---|
| Finished Details | Daily, ~15 games/day x 4 calls | ~420 |
| Standings | Daily | 7 |
| Kickoff Times | Daily, ~15 games/day / 30 per page | ~4 |
| Fixtures | Weekly | ~2 |
| Rosters | Weekly | 30 |
| Total | ~463/week |
Example 3: Live Scores (One Evening)
4 simultaneous NBA games, 2.5 hours average, score poll at 60s, detail poll at 120s with 1 sub-option:
| Component | Calculation | API Calls |
|---|---|---|
| Score polls | 4 games x 150 polls (2.5h at 60s) | 600 |
| Detail polls | 4 games x 75 polls (2.5h at 120s) | 300 |
| Total | ~900 |
Combined: A full NBA season import (~5,000) + 20 weeks of sync (~9,300) + live scores for 40 game nights (~36,000) = approximately 50,000 API calls over a season.
Rate Limit Handling
The plugin uses reactive error handling — no pre-throttling. Errors are handled inline:
Per-Second Rate Limit (429 with remaining > 0)
- Detection: HTTP 429 response, but daily quota still has remaining calls
- Action: Wait 1 second, then retry the request once
- Impact: Momentary pause, import continues normally
Daily Rate Limit (429 with remaining = 0)
- Detection: HTTP 429 response with zero remaining daily calls
- Action: Stop the current batch immediately, show an error message
- Impact: Import queue halts. Resume the next day when quota resets
Request Timeout
- Detection: cURL timeout (15-second limit)
- Action: Wait 2 seconds, then retry once
- Impact: Usually resolves on retry. If the retry also times out, the individual item is skipped and logged
Per-Item Errors
When a single game or team fails during a batch import:
- The error is logged
- The failed item is skipped
- The batch continues processing remaining items
- Only a daily rate limit error stops the entire task
Note
The plugin does not pre-throttle requests or track your plan type. Each request is independent — if it succeeds, processing continues immediately. Rate limit errors are handled reactively as they occur.
Monitoring Your Usage
RapidAPI Dashboard
The primary place to monitor API usage is your RapidAPI Developer Dashboard:
- Log in to rapidapi.com
- Go to Developer Dashboard > My Apps
- Select your app
- View the Analytics tab for call counts, response times, and error rates
The dashboard shows:
- Total calls today / this month
- Remaining quota
- Error rate breakdown
- Response time percentiles
Plugin Import Logs
The plugin logs API activity during imports. Check Hub Data > Games to see import status values — games with a “Detailed” status have been successfully imported with full statistics.
💡 Reducing API Usage
1. Enable Only Needed Sub-Options
Each disabled sub-option saves 1 API call per game. If you do not display play-by-play timelines, disable the Incidents sub-option in API Config.
2. Use Scope Filtering for Live Scores
Set Live Scores scope to “Selected” and pick only the leagues you display. This prevents live polling for games you do not show.
3. Increase Sync Intervals
For less time-sensitive data (rosters, cup trees), use longer intervals (72–168 hours) in Background Sync to reduce background API calls.
4. Disable Sync for Off-Season Leagues
If a season has ended, Background Sync will still check it unless you adjust your settings. Consider disabling sync during the off-season.
5. Import During Off-Peak Hours
If your API plan has per-second limits, running large imports during off-peak hours may reduce timeout errors (though this depends on the API provider’s infrastructure, not your site’s traffic).
Tip
The biggest API cost is Finished Details — each game uses 1–5 calls depending on sub-options. Disabling sub-options you do not need (e.g., Incidents or Highlights) is the most effective way to reduce total usage.
Plan Selection Guide
| Use Case | Estimated Monthly Calls | Suggested Plan |
|---|---|---|
| One league, manual imports only | 1,000–3,000 | AllSportsAPI2 Pro |
| One league, daily sync | 2,000–5,000 | AllSportsAPI2 Pro |
| One league, daily sync + live scores | 5,000–15,000 | AllSportsAPI2 Pro |
| Multiple leagues, full sync + live | 15,000–50,000 | AllSportsAPI2 Pro / Ultra |
Note: The AllSportsAPI2 Pro plan ($19.99/mo as of March 2026) has unlimited daily requests, so all use cases above are covered. The Ultra plan ($39.99/mo) offers a higher rate limit (10 requests/second vs 6) which helps with faster imports and live score polling for many simultaneous games. Check RapidAPI for current pricing.
📚 Related
- API Config — API key setup and import sub-options
- Import Tasks — What each task fetches and its API cost
- Background Sync — Automated sync intervals and configuration
- Live Scores — Live polling costs and scope filtering