Skip to content

RapidAPI - Code Samples

🚀 Connect

To connect an API to a project, you must have an API key to authenticate your request

Connect To PinBook Odds API

Code Samples

Obtaining and updating event odds

Python

python


import requests
import json
import time

headers = {
    "x-rapidapi-key": "__YOUR_KEY__",
    "x-rapidapi-host": "pinbook-odds.p.rapidapi.com"
}

base_url = "https://pinbook-odds.p.rapidapi.com"
s = requests.Session()
s.headers.update(headers)

since_items = {}
all_events = {}

while True:

    for sport_id in [1]: # endpoint /kit/v1/sports

        # is_have_odds = 0 or 1, event_type = prematch, live
        params = {
            'sport_id': sport_id,
            'is_have_odds': True,
            'since': since_items.get(sport_id)
        }
        print('[REQUEST] %s' % params)

        response = s.get(base_url + '/kit/v1/markets', params=params)
        if response.status_code != 200:
            raise Exception(response.status_code, response.text)

        result = json.loads(response.text)
        since_items[sport_id] = result['last']

        for event in result['events']:
            all_events[str(event['event_id'])] = event

            try:
                print('   %s: %s%s %s' % (event['league_name'], event['home'], event['away'], event['periods']['num_0']['money_line']))
            except KeyError:
                pass

        print('Sport: %s' % result['sport_name'])
        print('Number of changes: %s' % len(result['events']))
        print(' ')

        time.sleep(3)

PHP

php

<?php

    $headers = [];
    $headers[] =  "x-rapidapi-key: __YOUR_KEY__";
    $headers[] =  "x-rapidapi-host: pinbook-odds.p.rapidapi.com";

    $baseUrl = "https://pinbook-odds.p.rapidapi.com";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_ENCODING, "");

    $sinceItems = [];
    $allEvents = [];

    while (true) {
        foreach ([1] as $sportId) { // endpoint /kit/v1/sports

            // is_have_odds = 0 or 1, event_type = prematch, live
            $params = [];
            $params['sport_id'] = $sportId;
            $params['is_have_odds'] = true;
            $params['since'] = $sinceItems[$sportId] ?? null;

            $queryString = http_build_query($params);
            echo '[REQUEST] ' . $queryString . PHP_EOL;

            curl_setopt($ch, CURLOPT_URL, $baseUrl . '/kit/v1/markets?' . $queryString);

            $response = curl_exec($ch);
            curl_close($ch);
            $result = json_decode($response, true);

            $sinceItems[$sportId] = $result['last'];

            foreach ($result['events'] as $event) {
                $allEvents[(string)$event['event_id']] = $event;

                if (isset($event['periods']['num_0']['money_line'])) {
                    echo '   ' . $event['league_name'] . ': ' . $event['home'] . ' — ' . $event['away'] . ' ' . json_encode($event['periods']['num_0']['money_line']) . PHP_EOL;
                }
            }

            echo 'Sport: ' . $result['sport_name'] . PHP_EOL;
            echo 'Number of changes: ' . count($result['events']) . PHP_EOL;
            echo ' ';

            sleep(3);
        }
    }

    curl_close($ch);

JavaScript

javascript

const axios = require('axios');

const headers = {
    "x-rapidapi-key": "__YOUR_KEY__",
    "x-rapidapi-host": "pinbook-odds.p.rapidapi.com"
};

const baseUrl = "https://pinbook-odds.p.rapidapi.com";
const axiosInstance = axios.create({ headers });

let sinceItems = {};
let allEvents = {};

const fetchData = async () => {
    while (true) {
        for (const sportId of [1]) {
            const params = {
                sport_id: sportId,
                is_have_odds: true,
                since: sinceItems[sportId]
            };
            console.log('[REQUEST]', params);

            try {
                const response = await axiosInstance.get(`${baseUrl}/kit/v1/markets`, { params });
                if (response.status !== 200) {
                    throw new Error(`${response.status}: ${response.statusText}`);
                }

                const result = response.data;
                sinceItems[sportId] = result.last;

                for (const event of result.events) {
                    allEvents[String(event.event_id)] = event;

                    try {
                        console.log(event.league_name, event.home, event.away, event.periods.num_0.money_line);
                    } catch (error) {
                        // Ignore if 'money_line' does not exist
                    }
                }

                console.log('Sport:', result.sport_name);
                console.log('Number of changes:', result.events.length);
                console.log(' ');

                await new Promise(resolve => setTimeout(resolve, 3000));
            } catch (error) {
                console.error(error);
                await new Promise(resolve => setTimeout(resolve, 3000));
            }
        }
}
};

fetchData();

We’re dedicated to providing the best API products