SportApi
Documentação da API

Documentação da API de Linha Esportiva

Tudo o que você precisa para integrar a Linha Esportiva: autenticação, métodos, parâmetros, exemplos de código prontos e respostas JSON.

GET /v1/start json
{
  "ok": true,
  "package": "STANDARD",
  "limits": { "requests": 1000000, "rps": 40 },
  "sports": 214,
  "languages": ["en", "ru", "ua", "es"]
}

Por onde começar?

Bem-vindo ao nosso sistema de API! Seguindo estes passos simples, você começará rapidamente a usar nossa API e a integrar dados esportivos em seu sistema.

  1. Obtenha sua chave de API para integrar os dados
    Entre em contato com o suporte técnico e você receberá uma chave de API exclusiva e o endereço do domínio para requisições subsequentes. Esta chave é necessária para autorizar todas as requisições à nossa API.

  2. Familiarize-se com a documentação
    Depois de receber a chave, você poderá prosseguir para a documentação da API e explorar os métodos disponíveis, exemplos de requisição e respostas. Isso o ajudará a entender como integrar os dados esportivos em seu sistema.

  3. Faça sua primeira requisição
    Usando sua chave de API, faça sua primeira requisição à API. A seção de documentação contém exemplos de requisições e respostas para vários tipos de dados esportivos.

  4. Inicie a integração
    Após concluir com sucesso a requisição de teste, você poderá começar a integrar os dados em seu projeto. Nossa API fornece ferramentas flexíveis para trabalhar com diferentes tipos de esportes e eventos.

  5. Obtenha suporte
    Se você tiver alguma dúvida, poderá sempre entrar em contato com o nosso suporte técnico ou usar a seção de FAQ para resolver problemas comuns.

Métodos da API

A API para a linha esportiva oferece um conjunto limitado de métodos que permitem recuperar vários dados esportivos. Abaixo está uma lista de todos os métodos disponíveis, cada um retornando um conjunto específico de informações para a execução de determinadas tarefas. Você pode selecionar o método necessário dependendo de suas necessidades. Além de cada método, parâmetros podem ser usados para filtrar e personalizar de forma prática os dados obtidos. Uma descrição detalhada dos parâmetros é fornecida abaixo.

  • menu O método retorna a estrutura do menu de eventos esportivos, incluindo tipos de esportes, países e campeonatos.
  • events O método retorna uma lista de partidas com um conjunto resumido de odds disponíveis para apostas.
  • event O método retorna informações detalhadas sobre um evento esportivo específico por seu identificador e um conjunto completo de apostas, odds e resultados para essa partida.
  • topmatches O método retorna uma lista das principais partidas que são mais populares entre os usuários ou que possuem alta atividade de apostas.
  • search O método permite pesquisar eventos esportivos por palavras-chave, como nomes de equipes.

Parâmetros da API

Para trabalhar com nossa API, você pode usar vários parâmetros que ajudarão a personalizar as requisições e a obter dados precisos que atendam aos seus requisitos. Os parâmetros permitem filtrar dados por esporte, país, torneios e ajustar o formato dos eventos retornados. Abaixo está uma lista de parâmetros disponíveis e suas descrições para ajudá-lo a gerenciar de forma flexível as requisições à nossa API.

  • API-URL-LINE A URL do host do qual os dados da linha esportiva são solicitados. Em outras palavras, esta é a URL para onde você enviará requisições para recuperar dados esportivos.
  • API-KEY Chave de acesso pessoal PersonalKey, que define seu pacote de serviços. Esta chave é enviada nos cabeçalhos da requisição (headers) com cada requisição.
  • METHODS-API Nomes dos métodos para recuperação de dados. Todos os métodos são descritos na seção anterior.
  • TYPE O tipo de dados da linha esportiva. Pode assumir os valores de live (para dados em tempo real) ou line (para dados da linha de pré-jogo).
  • LANG O idioma no qual os dados da linha esportiva serão fornecidos. Os idiomas suportados dependem do seu pacote.
  • SPORT-ID O identificador do esporte.
  • COUNTRY-ID O identificador do país.
  • CHAMPIONSHIP-ID O identificador do torneio.
  • MATCH-ID O identificador da partida.
  • KG A forma como os eventos e odds são exibidos. Duas opções estão disponíveis: sub - as partidas são agrupadas por campeonatos; list - as partidas são exibidas como uma lista regular sem agrupamento.

Nota: Em uma partida específica, o agrupamento é aplicado não às partidas, mas aos resultados e apostas. Assim, você obtém uma lista de odds que pode ser exibida como uma lista simples ou agrupada convenientemente por categorias lógicas de resultados.

Exemplo de requisição

Esta seção fornece um exemplo de requisição à nossa API para a obtenção de dados esportivos. O exemplo demonstra como usar um dos métodos da API com seus parâmetros exclusivos, como a chave de API. Isso ajudará você a entender melhor como formatar corretamente as requisições e recuperar as informações necessárias.

Exemplo de requisição para recuperar eventos esportivos

Os dados no exemplo são fictícios. Substitua-os por dados reais que você recebeu do suporte técnico.

GET

Esquema: [API-URL-LINE] /v1/ [METHODS-API] / [TYPE] / [LANG]

Requisição: HTTPS://example-domain-demo.com/v1/menu/live/pt

Cabeçalhos: 'Package': '0145-3455-1298-2978-1100'

GET /v1/menu/live/en python
import requests

url = "https://api.sportapi.net/v1/events/21/101/prematch/en"
headers = {"Package": "YOUR_API_KEY"}

response = requests.get(url, headers=headers)
print(response.json())

Try in Postman

Para simplificar a integração de nossa API, preparamos uma coleção de requisições para o Postman. Você pode baixar o arquivo, importá-lo no Postman e começar a trabalhar com nossa API imediatamente, sem a necessidade de configurar manualmente as requisições.

Passos para começar no Postman:

  1. Baixe a coleção do Postman e importe-a no Postman.

  2. Importe o arquivo no Postman:

    • Abra o Postman.
    • No menu superior, selecione File -> Import.
    • Envie o arquivo baixado.
  3. Configure as variáveis:
    Após importar a coleção, você precisará adicionar suas chaves de API e outros parâmetros. Isso pode ser feito na seção Variables da coleção ou adicionado manualmente a cada requisição.

  4. Execute as requisições:
    Agora você pode começar a enviar requisições e a receber dados da nossa API imediatamente.

Example of requesting sports data via Postman

Obtendo esportes, países e campeonatos

Você pode recuperar dados sobre esportes, países e campeonatos com uma única requisição. Para fazer isso, basta alterar o tipo de dados na requisição, dependendo se você precisa de partidas ao vivo ou eventos futuros.

A resposta fornecerá todas as informações necessárias:

  • Sport ID e seu nome.
  • Country ID e seu nome.
  • Championship ID e seu nome.

Todos os dados são agrupados em um objeto prático que pode ser facilmente integrado ao seu sistema, permitindo exibir as informações em qualquer formato.

Para obter esses dados, você precisa enviar uma requisição ao método menu e especificar os seguintes parâmetros:

  • Tipo de partida: indique se você precisa de dados sobre partidas ao vivo ou eventos futuros.
  • Idioma dos dados: escolha o idioma no qual deseja receber os dados.

Esses parâmetros são obrigatórios para envio. Não se esqueça de passar também sua chave de API no cabeçalho da requisição (Headers).

Exemplo de requisição

Envie esta requisição para obter o menu, que inclui todos os dados necessários para posteriormente recuperar partidas e resultados:

Nota: Recomenda-se enviar requisições de linha em intervalos de pelo menos 40 segundos. Requisições ao vivo — pelo menos 20 segundos. Os dados não são atualizados com muita frequência, portanto, esse intervalo é suficiente para obter informações atualizadas.

GET   Esquema: [API-URL-LINE] /v1/ [METHODS-API] / [TYPE] / [LANG]

Requisição: HTTPS://example-domain-demo.com/v1/menu/live/pt

Cabeçalhos: 'Package': '0145-3455-1298-2978-1100'

Descrição dos campos

  • id Um identificador exclusivo para o item (por exemplo, esporte, país ou campeonato).
  • name O nome do item (por exemplo, Futebol para um esporte, Europa para um país ou UEFA Champions League para um campeonato).
  • counter O número de eventos ou partidas disponíveis para este item.
  • sub Um array contendo itens aninhados, como países ou campeonatos para o esporte selecionado. Isso permite obter uma hierarquia de dados — do esporte a torneios específicos.

Exemplo de parsing de estrutura

Neste exemplo:

  • Futebol — um esporte com ID 1 and 126 eventos disponíveis.
  • Dentro do esporte estão países como a Europa (ID 12), que contém 10 partidas.
  • Dentro do país Europa estão vários campeonatos, como a UEFA Champions League (ID 118587), onde 3 partidas estão disponíveis.
GET /v1/menu/live/en json
{
    "status":1,
    "body":[
        {
            "id":1,
            "name":"Football",
            "counter":126,
            "sub":[
                {
                "id":12,
                "name":"Europe",
                "sport_id":1,
                "counter":10,
                "sub":[
                    {
                        "id":118587,
                        "name":"UEFA Champions League",
                        "sport_id":1,
                        "country_id":12,
                        "counter":3
                    },
                    {
                        "id":218103,
                        "name":"UEFA Champions League. Winner",
                        "sport_id":1,
                        "country_id":12,
                        "counter":1
                    },
                    {
                        "id":16,
                        "name":"Italy",
                        "sport_id":1,
                        "counter":1,
                        "sub":[
                            {
                            "id":6356,
                            "name":"Italy. Serie C. Group A",
                            "sport_id":1,
                            "country_id":16,
                            "counter":1
                            }
                        ]
                    }
                ]
                }
            ]
        },
        {
            "id":2,
            "name":"Tennis",
            "counter":40,
            "sub":[
                {
                "id":14,
                "name":"Portugal",
                "sport_id":2,
                "counter":1,
                "sub":[
                    {
                        "id":8031,
                        "name":"Challenger. Braga",
                        "sport_id":2,
                        "country_id":14,
                        "counter":1
                    }
                ]
                }
            ]
        }
    ]
}

Lista de partidas

Você pode recuperar dados sobre uma lista de partidas. É importante observar que você deve especificar o Sport ID — não é possível obter todas as partidas de todos os esportes. Você também pode escolher se precisa de partidas ao vivo ou eventos futuros, e especificar parâmetros adicionais para filtragem.

A resposta fornecerá todas as informações necessárias sobre as partidas do esporte especificado.

Todos os dados são agrupados em um objeto prático que pode ser facilmente integrado ao seu sistema e permite exibir as informações em qualquer formato.

Para obter a lista de partidas, você precisa enviar uma requisição ao método events e especificar os seguintes parâmetros:

  • Sport ID: um parâmetro obrigatório.
  • Championship ID: se você estiver interessado em partidas de um campeonato específico. Se precisar de todas as partidas, especifique "0".
  • Agrupamento de resposta: especifique como os dados devem ser agrupados.
  • Tipo de partida: escolha se precisa de dados para partidas ao vivo ou eventos futuros.
  • Idioma dos dados: escolha o idioma no qual deseja receber os dados.

Esses parâmetros são obrigatórios para envio. Não se esqueça de passar também sua chave de API no cabeçalho da requisição (Headers).

Exemplo de requisição

Envie esta requisição para obter o menu, que inclui todos os dados necessários para posteriormente recuperar partidas e resultados:

Nota: Recomenda-se enviar requisições de linha em intervalos de pelo menos 20 segundos. Requisições ao vivo — pelo menos 5 segundos. Este intervalo será suficiente para obter informações atualizadas.

GET   Esquema: [API-URL-LINE] /v1/ events / [SPORT-ID] / [CHAMPIONSHIP-ID] / [KG] / 50 / [TYPE] / [LANG]

Requisição: HTTPS://example-domain-demo.com/v1/events/1/0/list/50/live/pt

Cabeçalhos: 'Package': '0145-3455-1298-2978-1100'

A resposta contém dados sobre as partidas, incluindo informações sobre equipes, torneios e odds. Os principais campos retornados no objeto de resposta estão descritos abaixo. Observe a diferença nos dados retornados dependendo do tipo [KG] (o exemplo json abaixo mostra [KG] = list primeiro, depois [KG] = sub).

Descrição dos campos

  • status Status da requisição. Se for 1, a requisição foi executada com sucesso.
  • sgame_id Identificador exclusivo da partida no sistema.
  • stat_id Identificador das estatísticas da partida.
  • game_id Identificador interno da partida.
  • game_mid Identificador da sub-partida.
  • game_dop_name Informações adicionais sobre a partida (por exemplo, "Prorrogação").
  • game_start Horário de início da partida no formato Unix Timestamp.
  • game_oc_counter Número de mercados disponíveis para apostas nesta partida.
  • country_id Identificador do país onde a partida é realizada.
  • country_name Nome do país.
  • tournament_id Identificador do torneio.
  • tournament_name Nome do torneio.
  • opp_1_name Nome da primeira equipe.
  • opp_2_name Nome da segunda equipe.
  • opp_1_id Identificador da primeira equipe.
  • opp_2_id Identificador da segunda equipe.
  • opp_1_icon Ícone da primeira equipe.
  • opp_2_icon Ícone da segunda equipe.
  • sport_name Nome do esporte (por exemplo, "Futebol").
  • sport_id Identificador do esporte.
  • score_full Placar completo da partida.
  • score_extra Placar do jogo no tênis.
  • score_period Placar de um período específico.
  • period_name Nome do período da partida (por exemplo, "2º Tempo").
  • timer Cronômetro que mostra o tempo atual da partida em segundos.
  • pitch ID do jogador que está sacando (para esportes com saque).
  • finale Valor booleano indicando se a partida terminou.

Informações do mercado de apostas

  • oc_group_name Nome do grupo de mercado (por exemplo, "Dupla Chance").
  • oc_name Nome do resultado específico (por exemplo, "1X").
  • oc_rate Odds para este resultado.
  • oc_pointer Identificador exclusivo do resultado.
  • oc_block Valor booleano que indica se o resultado está bloqueado (se for true — o resultado está bloqueado e não está disponível para apostas).
GET /v1/events/1/0/list/50/live/en json
// [KG] = list
{
    "status": 1,
    "body": [
        {
            "sgame_id": "66f8a2d60d8c0bfbf1af3f93",
            "stat_id": "66c914530d8c0bfbf15f5682",
            "game_id": 562898620,
            "game_mid": 562898620,
            "game_dop_name": "Extra-Time",
            "game_start": 1707807400,
            "game_oc_counter": 38,
            "country_id": 231,
            "country_name": "England",
            "tournament_id": 108319,
            "tournament_name": "England. FA Cup",
            "opp_1_name": "King's Lynn Town",
            "opp_2_name": "Worksop Town",
            "opp_1_id": 40547,
            "opp_2_id": 40549,
            "opp_1_icon": "400098.png",
            "opp_2_icon": "1201c9f.png",
            "sport_name": "Football",
            "sport_id": 1,
            "score_full": "0:0",
            "score_extra": "0:0",
            "score_period": "0:0",
            "period_name": "3 Half",
            "timer": 6511,
            "finale": false,
            "pitch": null,
            "game_oc_list": [
                {
                    "oc_group_name": "Double Chance",
                    "oc_name": "1X",
                    "oc_rate": 1.136,
                    "oc_pointer": "562898620|8|4|0",
                    "oc_block": false
                }
            ]
        }
    ]
}

// [KG] = sub
{
    "status": 1,
    "body": [
        {
            "tournament_id": 8147,
            "tournament_name": "Thailand. League Cup",
            "events_list": [
                {
                    "sgame_id": 66f8a2d60d8c0bfbf1af3f93,
                    "stat_id": 3788a2d60d8c0bfbf1af3f93,
                    "game_id": 562987092,
                    "game_mid": 562987092,
                    "game_dop_name": "",
                    "game_start": 1707856000,
                    "game_oc_counter": 183,
                    "country_id": 180,
                    "country_name": "Thailand",
                    "tournament_id": 8147,
                    "tournament_name": "Thailand. League Cup",
                    "opp_1_name": "ACDC",
                    "opp_2_name": "Pattaya United",
                    "opp_1_id": 505873,
                    "opp_2_id": 4978,
                    "opp_1_icon": "729aadb95ad1df.png",
                    "opp_2_icon": "4978.png",
                    "sport_name": "Football",
                    "sport_id": 1,
                    "score_full": "1:1",
                    "score_extra": "0:0",
                    "score_period": "1:1;0:0",
                    "period_name": "2 Half",
                    "timer": 4451,
                    "pitch": null,
                    "finale": false,
                    "game_oc_list": [
                        {
                            "oc_group_name": "1X2",
                            "oc_name": "W1",
                            "oc_rate": 8.19,
                            "oc_pointer": "562987092|1|1|0",
                            "oc_block": false
                        },
                        {
                            "oc_group_name": "1X2",
                            "oc_name": "X",
                            "oc_rate": 1.82,
                            "oc_pointer": "562987092|1|2|0",
                            "oc_block": false
                        }
                    ]
                }
            ]
        }
    ]
}

Partida específica

O método para obter informações detalhadas sobre uma partida específica. Este método permite solicitar informações sobre uma partida específica, incluindo equipes, resultados, o estado atual da partida e apostas disponíveis. É usado para obter dados atualizados sobre um jogo específico.

Exemplo de requisição

Nota: Recomenda-se enviar requisições de linha em intervalos de pelo menos 20 segundos. Requisições ao vivo — pelo menos 5 segundos. Este intervalo será suficiente para obter informações atualizadas.

GET   Esquema: [API-URL-LINE] /v1/ event / [GAME-ID] / [KG] / [TYPE] / [LANG]

Requisição: HTTPS://example-domain-demo.com/v1/event/45566556/sub/live/pt

Cabeçalhos: 'Package': '0145-3455-1298-2978-1100'

A resposta contém dados sobre uma partida específica, incluindo informações sobre todos os resultados disponíveis e odds para esta partida. Em uma partida específica, você pode obter absolutamente todos os resultados e odds para o jogo. Abaixo estão os principais campos retornados no objeto de resposta. Observe a diferença nos dados retornados dependendo do tipo [KG]. Eles afetam o agrupamento de apostas e odds para apostas.

A resposta inclui apenas os campos que diferem da requisição de lista de partidas. Aqui está a descrição deles:

  • stat_list Um array contendo estatísticas ao vivo, como escanteios, ataques, cartões, ataques perigosos e outros indicadores.

  • sub_games Uma lista de identificadores para mercados de apostas adicionais. Por exemplo, você pode solicitar odds e resultados apenas para o segundo tempo ou cobranças de escanteio.

  • game_oc_list Esta lista pode conter todos os resultados e odds em um único array ou ser agrupada por categorias para facilitar a integração em seu sistema.

GET /v1/event/45566556/sub/live/en json
{
    "status": 1,
    "body": {
        "game_oc_list": [
            {
                "group_id": 1,
                "group_name": "1X2",
                "columns": 3,
                "oc_list": [
                    {
                        "oc_group_name": "1X2",
                        "oc_name": "W1",
                        "oc_rate": 1.245,
                        "oc_size": 0,
                        "oc_pointer": "563034215|1|1|0",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "1X2",
                        "oc_name": "X",
                        "oc_rate": 5.48,
                        "oc_size": 0,
                        "oc_pointer": "563034215|1|2|0",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "1X2",
                        "oc_name": "W2",
                        "oc_rate": 7.97,
                        "oc_size": 0,
                        "oc_pointer": "563034215|1|3|0",
                        "oc_block": false
                    }
                ]
            },
            {
                "group_id": 2,
                "group_name": "Handicap",
                "columns": 2,
                "oc_list": [
                    {
                        "oc_group_name": "Handicap",
                        "oc_name": "1 (-1.5)",
                        "oc_rate": 1.904,
                        "oc_size": -1.5,
                        "oc_pointer": "563034215|2|7|-1.5",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "Handicap",
                        "oc_name": "1 (0)",
                        "oc_rate": 1.06,
                        "oc_size": 0,
                        "oc_pointer": "563034215|2|7|0",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "Handicap",
                        "oc_name": "2 (0)",
                        "oc_rate": 6.02,
                        "oc_size": 0,
                        "oc_pointer": "563034215|2|8|0",
                        "oc_block": false
                    },
                    {
                        "oc_group_name": "Handicap",
                        "oc_name": "2 (+1.5)",
                        "oc_rate": 1.76,
                        "oc_size": 1.5,
                        "oc_pointer": "563034215|2|8|1.5",
                        "oc_block": false
                    }
                ]
            }
        ],
        "stat_list": [
            {
                "id": 45,
                "name": "Attacks",
                "opp1": "22",
                "opp2": "28"
            },
            {
                "id": 58,
                "name": "Dangerous attacks",
                "opp1": "13",
                "opp2": "25"
            },
            {
                "id": 29,
                "name": "Possession %",
                "opp1": "45",
                "opp2": "55"
            },
            {
                "id": 59,
                "name": "Shots on target",
                "opp1": "3",
                "opp2": "2"
            },
            {
                "id": 60,
                "name": "Shots off target",
                "opp1": "2",
                "opp2": "2"
            },
            {
                "id": 26,
                "name": "Yellow cards",
                "opp1": "0",
                "opp2": "0"
            },
            {
                "id": 70,
                "name": "Corner",
                "opp1": "0",
                "opp2": "3"
            },
            {
                "id": 71,
                "name": "Red card",
                "opp1": "0",
                "opp2": "0"
            },
            {
                "id": 72,
                "name": "Penalty",
                "opp1": "0",
                "opp2": "0"
            }
        ],
        "sub_games": [
            {
                "game_id": 563034216,
                "game_num": 48560,
                "game_name": "1st half"
            },
            {
                "game_id": 563034217,
                "game_num": 48561,
                "game_name": "2nd half"
            },
            {
                "game_id": 563034286,
                "game_num": 42676,
                "game_name": "Result + Total"
            }
        ]
    }
}

Principais partidas

Envie esta requisição para obter as principais partidas. A requisição retorna uma lista de todas as principais partidas de todos os esportes.

Exemplo de requisição

Nota: Recomenda-se enviar requisições de linha em intervalos de pelo menos 20 segundos. Requisições ao vivo — pelo menos 5 segundos. Este intervalo será suficiente para obter informações atualizadas.

GET   Esquema: [API-URL-LINE] /v1/ topmatches / [TYPE] / [LANG]

Requisição: HTTPS://example-domain-demo.com/v1/topmatches/live/pt

Cabeçalhos: 'Package': '0145-3455-1298-2978-1100'