Basketball V1
Betting Lines
Get betting lines, spreads, and totals for basketball games
GET
/
bets
/
lines
Betting Lines
curl --request GET \
--url https://api.sportsapipro.com/v1/basketball/bets/lines \
--header 'x-api-key: <api-key>'import requests
url = "https://api.sportsapipro.com/v1/basketball/bets/lines"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.sportsapipro.com/v1/basketball/bets/lines', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sportsapipro.com/v1/basketball/bets/lines",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sportsapipro.com/v1/basketball/bets/lines"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sportsapipro.com/v1/basketball/bets/lines")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportsapipro.com/v1/basketball/bets/lines")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"lines": {
"gameId": 123,
"markets": {
"spread": {
"home": {
"line": 123,
"odds": 123
},
"away": {
"line": 123,
"odds": 123
}
},
"moneyline": {
"home": 123,
"away": 123
},
"total": {
"line": 123,
"over": 123,
"under": 123
}
}
}
}V1 Legacy Endpoint — This is a V1 API endpoint. For new integrations, we recommend using the Basketball V2 API which provides richer data and more endpoints.
Overview
Returns betting lines for basketball games including point spreads, moneylines, and over/under totals from multiple sportsbooks.Query Parameters
integer
required
Game ID to get lines for
Code Examples
curl -X GET "https://api.sportsapipro.com/v1/basketball/bets/lines?gameId=12345" \
-H "x-api-key: YOUR_API_KEY"
const response = await fetch(
'https://api.sportsapipro.com/v1/basketball/bets/lines?gameId=12345',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const { lines } = await response.json();
// Calculate implied probability from moneyline
const homeOdds = lines.markets.moneyline.home;
const homeProb = homeOdds < 0
? Math.abs(homeOdds) / (Math.abs(homeOdds) + 100)
: 100 / (homeOdds + 100);
console.log(`Home win probability: ${(homeProb * 100).toFixed(1)}%`);
import requests
response = requests.get(
'https://api.sportsapipro.com/v1/basketball/bets/lines',
params={'gameId': 12345},
headers={'x-api-key': 'YOUR_API_KEY'}
)
Response Structure
object
Betting lines for the game
Show Properties
Show Properties
integer
Game identifier
string
Home team name
string
Away team name
object
Available betting markets
Show Markets
Show Markets
object
object
array
Lines from individual sportsbooks
Example Response
{
"lines": {
"gameId": 12345,
"homeTeam": "Los Angeles Lakers",
"awayTeam": "Boston Celtics",
"markets": {
"spread": {
"home": { "line": -3.5, "odds": -110 },
"away": { "line": 3.5, "odds": -110 }
},
"moneyline": {
"home": -165,
"away": 140
},
"total": {
"line": 224.5,
"over": -110,
"under": -110
}
}
}
}
Odds Format
All odds are returned in American format:
- Negative odds (e.g., -150): Amount to bet to win $100
- Positive odds (e.g., +130): Amount won on a $100 bet
Last modified on June 29, 2026
Was this page helpful?
⌘I
Betting Lines
curl --request GET \
--url https://api.sportsapipro.com/v1/basketball/bets/lines \
--header 'x-api-key: <api-key>'import requests
url = "https://api.sportsapipro.com/v1/basketball/bets/lines"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.sportsapipro.com/v1/basketball/bets/lines', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sportsapipro.com/v1/basketball/bets/lines",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sportsapipro.com/v1/basketball/bets/lines"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sportsapipro.com/v1/basketball/bets/lines")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportsapipro.com/v1/basketball/bets/lines")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"lines": {
"gameId": 123,
"markets": {
"spread": {
"home": {
"line": 123,
"odds": 123
},
"away": {
"line": 123,
"odds": 123
}
},
"moneyline": {
"home": 123,
"away": 123
},
"total": {
"line": 123,
"over": 123,
"under": 123
}
}
}
}