API service

API service

The API service is based on the REST architecture and supports a number of resources accessed with HTTP protocol. The client should send an HTTP GET request and in return will receive a return list document in JSON format. API support multiple simultaneous requests from authenticated customers. 
We have standardized the output for ALL sports, so we offer the same format and data structure. However, for each sports, there are different event details, incidents, and statistics that are explained in more detail in the Sports data structure section.

Please note that new event details, incidents, and statistics could be added in the future. Whenever new features are added to the API you will find a description in the API change log.

Authentication

Access to the API is based on the oAuth 2.0 authorization method. This means access is given using a unique token without any IP's restriction.

The client is authenticated using a GET request including query string parameters: client_id and secret_key. These parameters are assigned to you by our sales department. On confirmation of the client_id/secret_key combination, the special oAuth token is then returned. The maximum period of time the token is valid is 24 hours from the time it was generated. This token should be sent with all subsequent requests. 

Example token request: 
https://api.statscore.com/v2/oauth?client_id=<YOUR_CLIENT_ID>&secret_key=<YOUR_SECRET_KEY>

Retrieving data

For access to the feed it is necessary to send a URL request containing the following segments:
Base URL: https://api.statscore.com/<api_version>/<resource_name>?token=<YOUR_TOKEN>

api_version

Defines which version of API you want to use. The segment is required. Current API version: v2

resource_name

Defines requested resource_name. The segment is required.

your_token

The valid token generated during the authentication process

In the event you would like additional filtering of the data, you can request a combination of the resource query parameters. For example, the following URL returns all events for basketball (sport_id=1): https://api.statscore.com/<api_version>/events?token=<YOUR_TOKEN>&sport_id=1. The possible parameters for all resources are described in the detailed specifications.



Feed structure

All responses to a successful request (HTTP status code = 200) have the same structure:

"api": { "ver": "2.146.0", "timestamp": 1575991564, "method": { "parameters": { "client_id": 1, "events_details": "yes" }, "name": "events.index", "details": "events.index", "total_items": 511, "previous_page": "", "next_page": "https://api.statscore.com/v2/events?token=YOUR_TOKEN&client_id=1&page=2" }, "data": { ... } }

Element "api" is heading element for each response. The "api" element includes attributes:

  • version - means the version in which the data is processed. You should always use the proper version in your code. You can switch the version in the URL request. For more information about versions please see our API changelog.

  • timestamp - UNIX TIMESTAMP value from API server. This value is generated on every request.

The "data" element contains all requested information.

For each request the HTTP Status code is also returned with a response. A list of all possible HTTP status codes:

 HTTP status code

Cause

 HTTP status code

Cause

200 OK

Successful request

304 Not Modified

Sent if data is older than provided "If-Modified-Since" HTTP Header

400 Bad Request

You have provided a parameter that the function does not support

401 Unauthorized

You have not provided a username/password or authkey

403 Forbidden

You have not been authenticated or your subscription does not permit you to request the data you have requested

404 Not Found

You have requested non-existent data

429 Too Many Requests

You have made too many requests

500 Internal Server Error

Error is caused by a malfunction on our side. Our IT department is notified about this automatically

501 Not Implemented

The sport and/or function you have requested does not exist

503 Service unavailable

The Web server is currently unable to handle the HTTP request due to maintenance of the server

Unsuccessful requests/ errors

For unsuccessful requests the response contains <error> element:

"api": { "ver": "2.146.0", "timestamp": 1575991564, "method": { "parameters": { "client_id": 1, "events_details": "yes" }, "name": "events.index", "details": "events.index", "total_items": 511, "previous_page": "", "next_page": "https://api.statscore.com/v2/events?token=YOUR_TOKEN&client_id=1&page=2" }, "error": { "message": "Invalid credentials. Either the username, password or token you provided is incorrect", "status": 401, "internal_code": 2 } }

Here is a general explanation of possible error codes:

Internal code

HTTP status

Message

Internal code

HTTP status

Message

1

403

Your membership package has expired or is inactive. For more information, please contact our sales department at sales@statscore.com

2

403

Invalid credentials. Either the username or the password you provided is incorrect

3

400

The timestamp parameter you passed is smaller than the allowed minimum limit for this parameter. When getting this error, the <message> element will contains more information about the minimal timestamp allowed. In the event you want all the information since our minimal timestamp, do not pass the timestamp parameter 

4

400

Invalid parameter. The format of the parameter is invalid. For more details about the invalid parameter, see the <message> element

5

429

You have exceeded the data amount you are allowed. For more information, please contact our sales department at sales@statscore.com

6

500

Internal error. When getting this error code, please try resending your request, also inform our support team at tech-support@statscore.com so we can fix this problem as soon as possible.

7

403

Your membership package does not include requested sport

8

403

Your membership package does not include requested season

9

403

Your host IP for API connection is invalid.

10

403

Your subscription has expired or is inactive. For more information, please contact our sales department at sales@statscore.com

11

402

 Your membership package does not include requested method or access to this method has expired

12

404

The requested resource was not found

13

400

Invalid parameter. The date_from or date_to parameter is invalid.

14

400

Required parameter is missing.

15

503

We are performing scheduled maintenance. We should be back shortly

Using timestamp

When any request is made, the response contains a timestamp value showing the time of the last generated response.
If you want to receive feed updates rather than refresh the whole feed then you can store this value and use it in your next request. In the documentation of each resource, we have included cache times. The cache times need to be considered when calling particular requests.


For example: Suppose you refreshed all your data and got the following header in the response:

"api": { "ver": "2.146.0", "timestamp": 1425992728, "method": { "parameters": { "client_id": 1, "events_details": "yes" }, "name": "events.index", "details": "events.index", "total_items": 511, "previous_page": "", "next_page": "https://api.statscore.com/v2/events?token=YOUR_TOKEN&client_id=1&page=2" }, "data": { ... } }

The next request should be as follows:

https://api.statscore.com/<api_version>/<resource_name>/[identifier]?token=<your_token>&timestamp=1425992728



Languages

The default feed language is English. If you would like to get the feed translated you can add as a query parameter (lang) to your request e.g. https://api.statscore.com/v2/areas&lang=pl returns the areas in the Polish language. The list of more popular languages are listed below, or you can get the list of all languages available using: https://api.statscore.com/v2/languages 





Possible value

Translation language

Possible value

Translation language

Possible value

Translation language

br

cs

de

el

en

es

fi

fr

hr

Brasilian

Czech

German

Greek

English

Spanish

Finnish

French

Croatian

id

it

ka

ko

mx

nl

no

pl

pt

Indonesian

Italian

Georgian

Korean

Mexican

Dutch

Norwegian

Polish

Portuguese

ro

ru

sr

sv

th

tr

vi

zh

Romanian

Russian

Serbian

Swedish

Thai

Turkish

Vietnamese

Chinise


Please note that all dates and times are always displayed in the UTC format. This also applies to the timestamps available at the top of the feed structure. All dates used in our services use the ISO 8601 date and time format. For some resources, you can use the query parameter "tz" which determines the timezone for the output data. The list of available time zones is listed below.



Time, date & timezones

Example: https://api.statscore.com/v2/events?token=<YOUR_TOKEN>&tz=Europe/Warsaw

Africa/Abidjan

America/Godthab

Antarctica/Vostok

Europe/Andorra

UTC

Africa/Accra

America/Goose_Bay

Arctic/Longyearbyen

Europe/Athens

UTC+1

Africa/Addis_Ababa

America/Grand_Turk

Asia/Aden

Europe/Belgrade

UTC+2

Africa/Algiers

America/Grenada

Asia/Almaty

Europe/Berlin

UTC+3

Africa/Asmara

America/Guadeloupe

Asia/Amman

Europe/Bratislava

UTC+4

Africa/Bamako

America/Guatemala

Asia/Anadyr

Europe/Brussels

UTC+5

Africa/Bangui

America/Guayaquil

Asia/Aqtau

Europe/Bucharest

UTC+6

Africa/Banjul

America/Guyana

Asia/Aqtobe

Europe/Budapest

UTC+7

Africa/Bissau

America/Halifax

Asia/Ashgabat

Europe/Busingen

UTC+8

Africa/Blantyre

America/Havana

Asia/Baghdad

Europe/Chisinau

UTC+9

Africa/Brazzaville

America/Hermosillo

Asia/Bahrain

Europe/Copenhagen

UTC+10

Africa/Bujumbura

America/Indiana/Indianapolis

Asia/Baku

Europe/Dublin

UTC+11

Africa/Cairo

America/Indiana/Knox

Asia/Bangkok

Europe/Gibraltar

UTC+12

Africa/Casablanca

America/Indiana/Marengo

Asia/Beirut

Europe/Guernsey

UTC+13

Africa/Ceuta

America/Indiana/Petersburg

Asia/Bishkek

Europe/Helsinki

UTC+14

Africa/Conakry

America/Indiana/Tell_City

Asia/Brunei

Europe/Isle_of_Man

UTC-1

Africa/Dakar

America/Indiana/Vevay

Asia/Choibalsan

Europe/Istanbul

UTC-2

Africa/Dar_es_Salaam

America/Indiana/Vincennes

Asia/Chongqing

Europe/Jersey

UTC-3

Africa/Djibouti

America/Indiana/Winamac

Asia/Colombo

Europe/Kaliningrad

UTC-4

Africa/Douala

America/Inuvik

Asia/Damascus

Europe/Kiev

UTC-5

Africa/El_Aaiun

America/Iqaluit

Asia/Dhaka

Europe/Lisbon

UTC-6

Africa/Freetown

America/Jamaica

Asia/Dili

Europe/Ljubljana

UTC-7

Africa/Gaborone

America/Juneau

Asia/Dubai

Europe/London

UTC-8

Africa/Harare

America/Kentucky/Louisville

Asia/Dushanbe

Europe/Luxembourg

UTC-9

Africa/Johannesburg

America/Kentucky/Monticello

Asia/Gaza

Europe/Madrid

UTC-10

Africa/Juba

America/Kralendijk

Asia/Harbin

Europe/Malta

UTC-11

Africa/Kampala

America/La_Paz

Asia/Hebron

Europe/Mariehamn

UTC-12

Africa/Khartoum

America/Lima

Asia/Ho_Chi_Minh

Europe/Minsk



Africa/Kigali

America/Los_Angeles

Asia/Hong_Kong

Europe/Monaco



Africa/Kinshasa

America/Lower_Princes

Asia/Hovd

Europe/Moscow



Africa/Lagos

America/Maceio

Asia/Irkutsk