DataSportAPI
Docs
Your first call in one line

The free key reads yesterday for every sport, 50 calls a day. No card.

Get a free key
Every sport, one key

Complete reads all sixteen sports for $249 a month.

Take Complete
Ask in plain words

"Who won at Kempton yesterday?" Your assistant picks the tool and answers from your plan.

Connect in two minutes
Showing
Documentation / Guides

Quick start, sports data API

Quick start

Three steps: a key, one call, and reading what comes back. Five minutes from here to real data.

1. Get a free key

Sign in on your account page with Google and a free key is made at once. It starts ds_live_. The free key reads yesterday for every sport we serve, 50 calls a day and 10 a minute, so you can try every endpoint against real data before choosing a plan. Your key is saved into these docs as soon as you make it, so the consoles on every page are ready to run.

2. Make the first call

Every call is a GET to https://api.datasportapi.com/v1/{sport}/... with your key in a header. This one asks for yesterday's football results:

GET/v1/football/results
curl -H "X-API-Key: $KEY" "https://api.datasportapi.com/v1/football/results"

3. Read the answer

Every answer has the same two parts. data holds the rows, or the one record you asked for. meta says what you asked (sport, endpoint), how many rows came back (count, and page, total or next_cursor when the list is paged), when the data was built (as_of), and whether you were served a stored copy (cached, age_seconds).

Every id in an answer is one of ours and opens its own endpoint. Take a match id from Results and ask for its line-ups; take a team id and ask for the team. That is the whole API: ask for a list, follow the ids.

Next

Read Authentication for the two ways to send your key, Plans and limits for what each plan reads, and Ids and records for how records link across a sport.

Try it

Football: Results, with your key.

GET
200 OK1903 ms2 rows shownReal answer from 2026-11-03, trimmed
{
    "data": [
        {
            "match_id": "fb_3npnahqb09",
            "league_id": "fb_9vq1mbqrgz",
            "country_name": "Brazil",
            "league_name": "Serie B",
            "season_start_year": 2026,
            "kickoff_utc": "2026-11-02T23:30:00Z",
            "kickoff_date": "2026-11-02",
            "kickoff_local_date": "2026-11-02",
            "kickoff_local_time": "23:30",
            "match_status": "finished",
            "home_team_id": "fb_mw96mceske",
            "home_team_name": "Goias",
            "away_team_id": "fb_1cycjasdqh",
            "away_team_name": "CRB",
            "home_goals": 2,
            "away_goals": 1,
            "full_time_result": null,
            "half_time_home_goals": 1,
            "half_time_away_goals": 0,
            "half_time_result": null,
            "stoppage_minutes": null,
            "is_kickoff_rescheduled": false,
            "elapsed_minutes": null,
            "home_league_position": 17,
            "away_league_position": 18,
            "away_travel_km": 1662,
            "venue_name": "Estádio da Serrinha",
            "city_name": "Goiânia",
            "latitude": -16.635209,
            "longitude": -49.265904,
            "location_precision": "ground",
            "daylight_minutes": 763,
            "sun_elevation_deg": -29.3,
            "public_holiday": null,
            "kickoff_temperature_c": null,
            "kickoff_rain_mm": null,
            "kickoff_wind_ms": null,
            "attendance": null,
            "referee_name": "Felipe Fernandes de Lima",
            "kickoff_book_pct": 1.0138,
            "regular_time_home_goals": null,
            "regular_time_away_goals": null,
            "regular_time_result": null,
            "extra_time_home_goals": null,
            "extra_time_away_goals": null,
            "shootout_home_goals": null,
            "shootout_away_goals": null,
            "statistics_status": null,
            "best_odds": {
                "home": 2.16,
                "draw": 3.8,
                "away": 3.55,
                "book_pct": 1.0078,
                "taken_utc": "2026-11-02T23:25:02Z"
            },
            "team_figures": null,
            "statistics_reason": null
        },
        {
            "match_id": "fb_3mg42m9pyn",
            "league_id": "fb_wma271b54d",
            "country_name": "Chile",
            "league_name": "Primera División",
            "season_start_year": 2026,
            "kickoff_utc": "2026-11-02T23:30:00Z",
            "kickoff_date": "2026-11-02",
            "kickoff_local_date": "2026-11-02",
            "kickoff_local_time": "23:30",
            "match_status": "finished",
            "home_team_id": "fb_hny9rc1tkt",
            "home_team_name": "Concepción",
            "away_team_id": "fb_ws0bbvakw5",
            "away_team_name": "Palestino",
            "home_goals": 1,
            "away_goals": 0,
            "full_time_result": null,
            "half_time_home_goals": 1,
            "half_time_away_goals": 0,
            "half_time_result": null,
            "stoppage_minutes": null,
            "is_kickoff_rescheduled": false,
            "elapsed_minutes": null,
            "home_league_position": 11,
            "away_league_position": 4,
            "away_travel_km": 433,
            "venue_name": "Estadio Municipal Ester Roa Concepcion",
            "city_name": "Concepcion",
            "latitude": -36.826944444444,
            "longitude": -73.050277777778,
            "location_precision": "city",
            "daylight_minutes": 819,
            "sun_elevation_deg": -1.7,
            "public_holiday": null,
            "kickoff_temperature_c": null,
            "kickoff_rain_mm": null,
            "kickoff_wind_ms": null,
            "attendance": null,
            "referee_name": null,
            "kickoff_book_pct": 1.0148,
            "regular_time_home_goals": null,
            "regular_time_away_goals": null,
            "regular_time_result": null,
            "extra_time_home_goals": null,
            "extra_time_away_goals": null,
            "shootout_home_goals": null,
            "shootout_away_goals": null,
            "statistics_status": null,
            "best_odds": {
                "home": 2.76,
                "draw": 3.5,
                "away": 2.74,
                "book_pct": 1.013,
                "taken_utc": "2026-11-02T23:25:02Z"
            },
            "team_figures": null,
            "statistics_reason": null
        }
    ],
    "meta": {
        "sport": "football",
        "endpoint": "/results",
        "count": 100,
        "page": 1,
        "per_page": 100,
        "total": 229,
        "total_pages": 3,
        "next_cursor": "MTc5MzYzODgwMDoxNTU1MjAw",
        "next_page": 2,
        "prev_page": null,
        "as_of": "2026-11-02T05:16:53Z",
        "cached": false,
        "age_seconds": 0
    }
}
No key yet? Get a free key: it reads yesterday for every sport and is filled in here once made.

The endpoints

Every sport that answers it.

GET /v1/football/resultsFootball: Finished matches by date, with the final scoreOpen page ›GET /v1/horses/resultsHorses: Results by date with every finisher and starting priceOpen page ›GET /v1/greyhounds/resultsGreyhounds: Results with sectionals and starting pricesOpen page ›GET /v1/cricket/resultsCricket: Finished matches by dateOpen page ›GET /v1/basketball/resultsBasketball: Finished games by date, with the final scoreOpen page ›GET /v1/rugby/resultsRugby: Finished matches by date, with the final scoreOpen page ›GET /v1/darts/resultsDarts: Finished matches by date, with every leg scoreOpen page ›GET /v1/boxing/resultsBoxing: Finished bouts by dateOpen page ›GET /v1/volleyball/resultsVolleyball: Finished matches by date, with the final scoreOpen page ›GET /v1/table-tennis/resultsTable tennis: Finished matches by date, with every game scoreOpen page ›GET /v1/badminton/resultsBadminton: Finished matches by date, with every game scoreOpen page ›GET /v1/football/liveFootball: Every match in play now, with the score and the clockOpen page ›GET /v1/cricket/liveCricket: Matches in play, ball by ballOpen page ›GET /v1/basketball/liveBasketball: Every game in play now, with the score and the clockOpen page ›GET /v1/rugby/liveRugby: Every match in play now, with the score and the clockOpen page ›GET /v1/darts/liveDarts: Every match in play now, leg by legOpen page ›GET /v1/volleyball/liveVolleyball: Every match in play now, with the score and the clockOpen page ›GET /v1/table-tennis/liveTable tennis: Every match in play now, game by gameOpen page ›GET /v1/badminton/liveBadminton: Every match in play now, game by gameOpen page ›GET /v1/football/fixturesFootball: Upcoming matches by dateOpen page ›GET /v1/cricket/fixturesCricket: Matches by date, starting todayOpen page ›GET /v1/basketball/fixturesBasketball: Upcoming games by dateOpen page ›GET /v1/rugby/fixturesRugby: Upcoming matches by dateOpen page ›GET /v1/darts/fixturesDarts: Upcoming matches by dateOpen page ›