サッカーチームや試合のデータをAPIで取得できないか?と思ったので探した結果よさそうなAPIサービスがあったのでデータ取得までまとめます。
API概要
今回使ってみるAPI。アカウント登録すれば無料枠で12のコンペティション(5大リーグやCLなど)のデータを取得できる。詳細は公式ページにて
アカウント登録
登録画面から名前、メールアドレス、言語を選んで登録。利用規約はしっかり読むこと!
@football-data.orgのメールアドレスからAPIトークンが送られてくる。
データ取得
公式ドキュメントを参考に。今回はGO言語でサッカー史上最もクールなクラブチームを取得するように実装しました。
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"path"
)
func main() {
// 取得したいデータのURL作成
url, _ := url.Parse("https://api.football-data.org/v2/")
url.Path = path.Join(url.Path, "teams", "108")
req, _ := http.NewRequest("GET", url.String(), nil)
req.Header.Add("X-Auth-Token", "Your API token") // アカウント登録時に送られてきたAPIトークンをリクエストヘッダーに追加
client := new(http.Client)
resp, _ := client.Do(req)
defer resp.Body.Close()
byteArray, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(byteArray))
}
取得データ
{
"id": 108,
"area": {
"id": 2114,
"name": "Italy"
},
"activeCompetitions": [
{
"id": 2001,
"area": {
"id": 2077,
"name": "Europe"
},
"name": "UEFA Champions League",
"code": "CL",
"plan": "TIER_ONE",
"lastUpdated": "2021-06-26T13:37:26Z"
},
{
"id": 2019,
"area": {
"id": 2114,
"name": "Italy"
},
"name": "Serie A",
"code": "SA",
"plan": "TIER_ONE",
"lastUpdated": "2021-04-17T07:19:44Z"
}
],
"name": "FC Internazionale Milano",
"shortName": "Inter",
"tla": "INT",
"crestUrl": "https://crests.football-data.org/108.png",
"address": "Corso Vittorio Emanuele II 9 Milano 20122",
"phone": "+39 (02) 77151",
"website": "http://www.inter.it",
"email": "segreteriaccic@inter.it",
"founded": 1908,
"clubColors": "Blue / Black",
"venue": "Stadio Giuseppe Meazza",
"squad": [
{
"id": 77,
"name": "Joaquín Correa",
"position": "Attacker",
"dateOfBirth": "1994-08-13T00:00:00Z",
"countryOfBirth": "Argentina",
"nationality": "Argentina",
"shirtNumber": null,
"role": "PLAYER"
},
...
],
"lastUpdated": "2021-11-24T14:55:58Z"
}
まとめ
試合結果や成績を取得するだけであれば十分で比較的容易に実装することができました。選手の個人スタッツ等まで深堀するにはこのAPIでは取れないので他を検討する必要がありそうです。