curl --request GET \
--url https://api.sportquanta.com/v1/npb/players/{id}/season-stats \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sportquanta.com/v1/npb/players/{id}/season-stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sportquanta.com/v1/npb/players/{id}/season-stats', 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.sportquanta.com/v1/npb/players/{id}/season-stats",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.sportquanta.com/v1/npb/players/{id}/season-stats"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.sportquanta.com/v1/npb/players/{id}/season-stats")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportquanta.com/v1/npb/players/{id}/season-stats")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"items": [
{
"playerId": "<string>",
"season": 123,
"league": "<unknown>",
"role": "batter",
"scope": "all",
"g": 123,
"pa": 123,
"ab": 123,
"h": 123,
"doubles": 123,
"triples": 123,
"hr": 123,
"r": 123,
"rbi": 123,
"bb": 123,
"hbp": 123,
"so": 123,
"sb": 123,
"cs": 123,
"avg": 123,
"obp": 123,
"slg": 123,
"ops": 123,
"appearances": 123,
"gamesStarted": 123,
"ip": 123,
"era": 123,
"whip": 123,
"wins": 123,
"losses": 123,
"saves": 123,
"holds": 123,
"pitcherK": 123,
"pitcherBB": 123
}
]
},
"_meta": {
"request_id": "<string>",
"served_from": "live",
"cache_ttl_seconds": 123,
"provenance": {},
"availability": {}
}
}Player season stats
NPB-only route. NPB has no per-scope batting/pitching
collections like KBO — its stats pipeline writes one
player_season_stats row per (season, role, scope). Returns
the matching rows as items, optionally filtered by role
(batter | pitcher) and scope.
Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.
curl --request GET \
--url https://api.sportquanta.com/v1/npb/players/{id}/season-stats \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sportquanta.com/v1/npb/players/{id}/season-stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sportquanta.com/v1/npb/players/{id}/season-stats', 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.sportquanta.com/v1/npb/players/{id}/season-stats",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.sportquanta.com/v1/npb/players/{id}/season-stats"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.sportquanta.com/v1/npb/players/{id}/season-stats")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sportquanta.com/v1/npb/players/{id}/season-stats")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"items": [
{
"playerId": "<string>",
"season": 123,
"league": "<unknown>",
"role": "batter",
"scope": "all",
"g": 123,
"pa": 123,
"ab": 123,
"h": 123,
"doubles": 123,
"triples": 123,
"hr": 123,
"r": 123,
"rbi": 123,
"bb": 123,
"hbp": 123,
"so": 123,
"sb": 123,
"cs": 123,
"avg": 123,
"obp": 123,
"slg": 123,
"ops": 123,
"appearances": 123,
"gamesStarted": 123,
"ip": 123,
"era": 123,
"whip": 123,
"wins": 123,
"losses": 123,
"saves": 123,
"holds": 123,
"pitcherK": 123,
"pitcherBB": 123
}
]
},
"_meta": {
"request_id": "<string>",
"served_from": "live",
"cache_ttl_seconds": 123,
"provenance": {},
"availability": {}
}
}Authorizations
Send a workspace API token in the Authorization: Bearer <token> header.
Path Parameters
Query Parameters
Required season year. Missing, invalid, or out-of-range values return invalid_query_parameter.
1920 <= x <= 2100batter, pitcher Response
Season stat rows for the player.
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
batter, pitcher Games played.
Hide child attributes
Hide child attributes
live, cache Response cache TTL; independent of source freshness. Omitted when zero.
Endpoint-specific availability context, including soccer roster coverage.