Loading match intelligence…

SMOANCE
Match Intelligence
Picks
SMOANCE API · v2

Developer Documentation

Football, tennis and basketball fixtures with model predictions, recent form, head-to-head records and live odds — over a simple, read-only JSON API. No SDK required.

Base URL

Quickstart

bash
# All upcoming football matches
curl https://api.smoance.com/matches \
  -H "X-API-Key: sk_live_your_key_here"

Authentication

Send your key on every request as either header. Requests without a valid key fall back to the anonymous tier (limited per IP) rather than being rejected — so public, low-volume use works with no key at all. Need a key? dash@smoance.com.

http
X-API-Key: sk_live_your_key_here
http
Authorization: Bearer sk_live_your_key_here
TierRequests / minNotes
anon60No key. Limited per client IP.
free120Issued free key.
pro1,200Higher-volume integrations.
unlimitedFirst-party / internal.

Rate limits

Limits are per minute on a rolling 60-second window. Every response carries your budget; exceeding it returns 429 with a Retry-After header.

http
X-RateLimit-Tier: pro
X-RateLimit-Limit: 1200
X-RateLimit-Remaining: 1187

# When exceeded:
HTTP/1.1 429 Too Many Requests
Retry-After: 23

Endpoints

Football

GET

All upcoming football matches with predictions, form, H2H and odds.

json
{
  "total": 72,
  "data": [
    {
      "league": "Serie B",
      "country": "Brazil",
      "match": "Coritiba vs Goias",
      "match_url": "https://www.flashscore.com/match/xYz123/",
      "date": "2026-06-20",
      "time": "23:00",
      "team_1": { "name": "Coritiba", "standing": { "rank": 3 }, "...": "..." },
      "team_2": { "name": "Goias", "...": "..." },
      "model": {
        "win_probability": { "team_1": 47, "team_2": 31, "draw": 22 },
        "over_2_5_probability": 0.41,
        "prediction_quality": "high"
      },
      "odds": { "match_winner": { "home": { "value": 2.10 }, "...": "..." } }
    }
  ]
}
GET

A single football match. `{id}` is the Flashscore match id from match_url.

GET

Football leagues that currently have upcoming matches.

json
{
  "total": 5,
  "data": [
    {
      "country": "Brazil",
      "league": "Serie B",
      "country_slug": "brazil",
      "league_slug": "serie-b",
      "count": 7
    }
  ]
}
GET

Upcoming matches in one league, Flashscore-style slugs.

  • countrySlug, e.g. brazil, czech-republic
  • leagueSlug, e.g. serie-b, premier-league

Tennis

GET

Upcoming tennis matches. Optional ?date=YYYY-MM-DD returns a specific day.

  • dateOptional. YYYY-MM-DD, e.g. 2026-06-20
GET

A single tennis match by id.

GET

Tennis tournaments (grouped by tour) with upcoming matches.

json
{
  "total": 13,
  "data": [
    {
      "tour_type": "ATP",
      "tournament": "Halle",
      "country": "Germany",
      "surface": "grass",
      "tour_slug": "atp",
      "tournament_slug": "halle",
      "count": 2
    }
  ]
}
GET

Upcoming matches in one tournament.

  • tourSlug: atp, wta, …
  • tournamentSlug, e.g. halle, berlin

Basketball

GET

All upcoming basketball matches.

GET

A single basketball match by id.

GET

Basketball leagues with upcoming matches.

GET

Upcoming matches in one league.

  • countrySlug, e.g. usa
  • leagueSlug, e.g. nba

Meta

GET

Echo the tier resolved for your key. Never cached.

json
{
  "authenticated": true,
  "tier": "pro",
  "limit_per_min": 1200,
  "name": "Acme Corp"
}
GET

Liveness probe + per-sport record counts.

Errors

StatusMeaning
200OK.
304Not Modified — your If-None-Match ETag still matches.
400Bad request, e.g. a malformed ?date= value.
404No match found for that id.
429Rate limit exceeded. See Retry-After header.
5xxTransient upstream/server error — retry with backoff.

Caching

Data refreshes roughly every 10 seconds. Responses are returned with Cache-Control: public, max-age=0, s-maxage=8, stale-while-revalidate=20 and a weak ETag. Honor the ETag with If-None-Match for cheap 304 responses, and let shared caches absorb bursts — you never get data more than a few seconds stale.

Prediction alerts

Know when the next pick goes live.

Email requires confirmation. Telegram requires pressing Start. Unsubscribe any time.

Partnerships & contact: dash@smoance.com
Live Time:
Sponsored · 18+·Play on Stake with code smoance
© 2026 SMOANCE. All rights reserved.