# view progressive

## View matches progressive (trend) data of stats and odds ⬜ 🟦 🟩

<mark style="color:blue;">`GET`</mark> `https://api.soccerfootball.info/v1/matches/view/progressive/?i=ID`

This endpoint returns with match data (stats and odds) every 30 seconds. \
**This endpoints has data since 2020-01-01** \
Live match can be view only by 🟩 ULTRA user plan\
This call is our killer features. \
You can test your strategy on historical data in live method.\
Format CSV is in MS excel compatible mode (double click open without import!)

#### Query Parameters

| Name | Type   | Description                                              |
| ---- | ------ | -------------------------------------------------------- |
| t    | string | Your API Token **`DIRECT API ONLY`**                     |
| i    | string | Match ID                                                 |
| f    | string | Format response can be "json" or "csv" ( default "json") |

#### Headers

| Name            | Type   | Description                                         |
| --------------- | ------ | --------------------------------------------------- |
| X-RapidAPI-Key  | string | Your API token **`RAPIDAPI ONLY`**                  |
| X-RapidAPI-Host | string | soccerfootballinfo.rapidapi.com **`RAPIDAPI ONLY`** |

{% tabs %}
{% tab title="200 Success response" %}
{% tabs %}
{% tab title="JSON" %}

```javascript
{
   "status":200,
   "errors":[],
   "pagination":[],
   "result":[ 
      ...,
      {  // all stats may be null if 0 or not set
         "timer":"52:00", // start from "00:00" every 30 seconds (00:00 00:30 01:00 01:30)
         "teamA":{
            "goal": "1",
            "possession":"46",
            "attacks":{
               "n":"58", // normal
               "d":"10" // dangerous
            },
            "shoots":{
               "t":"1", // total
               "off":"0", // off target
               "on":"1", // on target
               "g_a":"1" // goal attemps
            },
            "penalties":null,
            "corners":null,
            "fouls":{
               "t":null, // total
               "y_c":"3", // yellow card
               "y_t_r_c":null, // yellow to red card
               "r_c":null // red card
            },
            "substitutions":null,
            "throwins":null,
            "injuries":null,
            "dominance":{
               "index": "10.22", // exact dominance index at this time
               "avg_2_5": "10.50" // avg last 2,5 minutes of d.index
            },
            "xG" : "0.88"
         },
         "teamB":{
           ... // same of teamA
         },
         "odds":{
            "1X2":{
               "1":"21.000",
               "2":"1.125",
               "X":"6.500"
            },
            "asian_handicap":{
               "1":"2.075",
               "2":"1.725",
               "v":"+0.25"
            },
            "over_under":{
               "o":"1.775",
               "u":"2.025",
               "v":"2"
            },
            "asian_corner":{
               "o":"1.825",
               "u":"1.975",
               "v":"6"
            },
            "1h_asian_handicap":{
               "1":"3.900",
               "2":"1.240",
               "v":"0"
            },
            "1h_goalline":{
               "o":"5.900",
               "u":"1.130",
               "v":"0.5"
            },
            "1h_asian_corner":{
               "o":"2.375",
               "u":"1.550",
               "v":"1.5"
            },
            "1h_result":{
               "1":"13.000",
               "2":"8.000",
               "X":"1.083"
            }
         }
      },
      ...
   ]
}


```

{% endtab %}

{% tab title="CSV" %}

```
timer;teamA_goal;teamB_goal;teamA_possession;teamB_possession;teamA_attacks_n;teamB_attacks_n;teamA_attacks_d;teamB_attacks_d;teamA_off_sides;teamB_off_sides;teamA_shoots;teamB_shoots;teamA_shoots_on_target;teamB_shoots_on_target;teamA_shoots_off_target;teamB_shoots_off_target;teamA_goal_attemps;teamB_goal_attemps;teamA_penalties;teamB_penalties;teamA_corners;teamB_corners;teamA_fouls;teamB_fouls;teamA_yellow_cards;teamB_yellow_cards;teamA_yellow_t_red_cards;teamB_yellow_t_red_cards;teamA_red_cards;teamB_red_cards;teamA_substitutions;teamB_substitutions;teamA_throwins;teamB_throwins;teamA_injuries;teamB_injuries;teamA_dominance_index;teamB_dominance_index;teamA_dominance_index_2_5;teamB_dominance_index_2_5;teamA_xG;teamB_xG;odd_1x2_1;odd_1x2_X;odd_1x2_2;odd_asian_handicap_1;odd_asian_handicap_2;odd_asian_handicap_v;odd_over_under_o;odd_over_under_u;odd_over_under_v;odd_asian_corner_o;odd_asian_corner_u;odd_asian_corner_v;odd_1h_asian_handicap_1;odd_1h_asian_handicap_2;odd_1h_asian_handicap_v;odd_1h_goalline_o;odd_1h_goalline_u;odd_1h_goalline_v;odd_1h_asian_corner_o;odd_1h_asian_corner_u;odd_1h_asian_corner_v;odd_1h_result_1;odd_1h_result_X;odd_1h_result_2
00:00;0;0;50;50;0;0;0;0;;;0;0;0;0;0;0;;;0;0;0;0;;;0;0;;;0;0;0;0;;;;;5.00;5.00;5.00;5.00;;;;;;;;;;;;;;;;;;;;;;;;;;
```

{% endtab %}
{% endtabs %}
{% endtab %}
{% endtabs %}

{% file src="/files/XJTQH8tCM5ZJYoj0jBag" %}

## Example of code for direct API

{% tabs %}
{% tab title="PHP" %}

```php
$url = 'https://api.soccerfootball.info/v1/matches/view/progressive/?t=TOKEN&i=ID';

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_PROXY => null,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CUSTOMREQUEST => "GET"
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if (!$err) {
  $result = json_decode($response);
  print_r($result);
} else {
    echo "cURL Error:" . $err;
}
```

{% endtab %}

{% tab title="Javascript" %}

```python
fetch("https://api.soccerfootball.info/v1/matches/view/progressive/?t=TOKEN&i=ID", {
    "method": "GET"
})
.then(response => {
    console.log(response);
})
.catch(err => {
    console.error(err);
});
```

{% endtab %}

{% tab title="NodeJS" %}

```javascript
const request = require('request');

const options = {
  method: 'GET',
  url: 'https://api.soccerfootball.info/v1/matches/view/progressive/?t=TOKEN&i=ID'
};

request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
```

{% endtab %}

{% tab title="Phyton" %}

```python
import requests

url = "https://api.soccerfootball.info/v1/matches/view/progressive/?t=TOKEN&i=ID"

response = requests.get(url).json()

print(response)
```

{% endtab %}

{% tab title="cURL" %}

```bash
curl --request GET \
    --url 'https://api.soccerfootball.info/v1/matches/view/progressive/?t=TOKEN&i=ID'
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.soccerfootball.info/v1/matches/view/progressive/?t=TOKEN&i=ID"

    req, _ := http.NewRequest("GET", url, nil)

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
```

{% endtab %}
{% endtabs %}

## Example of code for RapidAPI

{% tabs %}
{% tab title="PHP" %}

```php
$url = 'https://soccer-football-info.p.rapidapi.com/matches/view/progressive/?i=ID';

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => $url,
    CURLOPT_PROXY => null,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
        "X-RapidAPI-Host: soccer-football-info.p.rapidapi.com",
        "X-RapidAPI-Key: TOKEN"
    ],
));

$response = curl_exec($curl);
$err  = curl_error($curl);

curl_close($curl);

if (!$err) {
  $result = json_decode($response);
  print_r($result);
} else {
    echo "cURL Error:" . $err;
}
```

{% endtab %}

{% tab title="Javascript" %}

```javascript
fetch("https://soccer-football-info.p.rapidapi.com/matches/view/progressive/?i=ID", {
    "method": "GET",
    "headers": {
        "X-RapidAPI-Key": "TOKEN",
        "X-RapidAPI-Host": "soccer-football-info.p.rapidapi.com"
    }
})
.then(response => {
    console.log(response);
})
.catch(err => {
    console.error(err);
});
```

{% endtab %}

{% tab title="NodeJS" %}

```javascript
const request = require('request');

const options = {
  method: 'GET',
  url: "https://soccer-football-info.p.rapidapi.com/matches/view/progressive/?i=ID",
  headers: {
   "X-RapidAPI-Key": "TOKEN",
     "X-RapidAPI-Host": "soccer-football-info.p.rapidapi.com"
   useQueryString: true
  }
};

request(options, function (error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
```

{% endtab %}

{% tab title="Phyton" %}

```python
import requests

url = "https://soccer-football-info.p.rapidapi.com/matches/view/progressive/?i=ID"

headers = {
    "X-RapidAPI-Key": "TOKEN",
      "X-RapidAPI-Host": "soccer-football-info.p.rapidapi.com"
}

response = requests.request("GET", url, headers=headers)

print(response.text)
```

{% endtab %}

{% tab title="cURL" %}

```bash
curl --request GET \
    --url https://soccer-football-info.p.rapidapi.com/matches/view/progressive/?i=ID \
    --header 'X-RapidAPI-Host: soccer-football-info.p.rapidapi.com' \
    --header 'X-RapidAPI-Key: TOKEN'
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://soccer-football-info.p.rapidapi.com/matches/view/progressive/?i=ID"

    req, _ := http.NewRequest("GET", url, nil)

    req.Header.Add("X-RapidAPI-Key", "TOKEN")
    req.Header.Add("X-RapidAPI-Host", "soccer-football-info.p.rapidapi.com")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}
```

{% endtab %}
{% endtabs %}

More example of code on [rapidAPI](https://rapidapi.com/soccerfootball-info-soccerfootball-info-default/api/soccer-football-)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://info.soccerfootball.info/v1/matches/view-progressive.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
