Basketball V1
Player Props
Get player proposition bets and special betting markets
GET
/
bets
/
proposition
Player Props
curl --request GET \
--url https://api.sportsapipro.com/v1/basketball/bets/proposition \
--header 'x-api-key: <api-key>'import requests
url = "https://api.sportsapipro.com/v1/basketball/bets/proposition"
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/proposition', 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/proposition",
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/proposition"
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/proposition")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportsapipro.com/v1/basketball/bets/proposition")
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{
"propositions": [
{
"athleteId": 123,
"athleteName": "<string>",
"team": "<string>",
"markets": [
{
"type": "<string>",
"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 player proposition bets (props) for basketball games, including points, rebounds, assists, and combined stat lines.Query Parameters
integer
required
Game ID
integer
Filter by specific player ID
Code Examples
curl -X GET "https://api.sportsapipro.com/v1/basketball/bets/proposition?gameId=12345" \
-H "x-api-key: YOUR_API_KEY"
Troubleshooting
Empty Response
If you receive a response with an empty
propositions array:{
"lastUpdateId": 5546350228,
"requestedUpdateId": -1,
"ttl": 30
}
This indicates no proposition markets are available for this game. This is normal when:
Checking Data Availability
const response = await fetch(
'https://api.sportsapipro.com/v1/basketball/bets/proposition?gameId=12345',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const data = await response.json();
if (!data.propositions || data.propositions.length === 0) {
console.log('No player props available for this game');
// Handle gracefully
} else {
// Process props
}
Coverage Notes
Props coverage is actively expanding. Check back as we add more markets and leagues.
const response = await fetch(
'https://api.sportsapipro.com/v1/basketball/bets/proposition?gameId=12345',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const { propositions } = await response.json();
// Find props with plus odds on the over
propositions.forEach(player => {
player.markets
.filter(market => market.over > 0)
.forEach(market => {
console.log(`${player.athleteName} ${market.type} O${market.line}: ${market.over}`);
});
});
import requests
response = requests.get(
'https://api.sportsapipro.com/v1/basketball/bets/proposition',
params={'gameId': 12345},
headers={'x-api-key': 'YOUR_API_KEY'}
)
Response Structure
array
Available Prop Types
| Type | Description |
|---|---|
points | Total points scored |
rebounds | Total rebounds |
assists | Total assists |
threes | Three-pointers made |
steals | Total steals |
blocks | Total blocks |
pts+reb | Points + Rebounds combined |
pts+ast | Points + Assists combined |
reb+ast | Rebounds + Assists combined |
pts+reb+ast | Points + Rebounds + Assists combined |
double-double | Yes/No for double-double |
triple-double | Yes/No for triple-double |
Filter by Player
# Get props for a specific player
curl -X GET "https://api.sportsapipro.com/v1/basketball/bets/proposition?gameId=12345&athleteId=67890" \
-H "x-api-key: YOUR_API_KEY"
Use Case: SGP Builder
Combine props for same-game parlays (SGP):
// Build a same-game parlay
const sgpLegs = [];
propositions.forEach(player => {
const pointsMarket = player.markets.find(m => m.type === 'points');
if (pointsMarket && pointsMarket.line > 20) {
sgpLegs.push({
player: player.athleteName,
prop: `O${pointsMarket.line} points`,
odds: pointsMarket.over
});
}
});
Last modified on June 29, 2026
Was this page helpful?
⌘I
Player Props
curl --request GET \
--url https://api.sportsapipro.com/v1/basketball/bets/proposition \
--header 'x-api-key: <api-key>'import requests
url = "https://api.sportsapipro.com/v1/basketball/bets/proposition"
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/proposition', 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/proposition",
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/proposition"
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/proposition")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportsapipro.com/v1/basketball/bets/proposition")
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{
"propositions": [
{
"athleteId": 123,
"athleteName": "<string>",
"team": "<string>",
"markets": [
{
"type": "<string>",
"line": 123,
"over": 123,
"under": 123
}
]
}
]
}