#sport #request #response #requests #api #endpoint


Rust wrapper for Pinnacle Sports API

5 releases

0.1.3 Apr 19, 2023
0.1.2 Apr 11, 2023
0.1.1 Apr 11, 2023
0.1.0 Apr 10, 2023
0.0.1 Apr 3, 2023

#7 in #sport

MIT license

621 lines

License Crates.io Docs.rs


Rust Wrapper for Pinnacle Sports API

Note Not all of the API is currently wrapped, but it should be relatively easy to add missing endpoints. All you need to do is implement the corresponding request and probably a response. Don't hesitate to make a PR if you do.

Here are all the currently wrapped requests.


use pinnacle::prelude::*;

let client = PinnacleClient::new("pinnacle_user", "pinnacle_password");
let req = GetStraightOdds {
    sport_id: 29,
let odds = client.get(&req).await?;

You can also use a client that caches responses, which is helpful for development purposes:

use pinnacle::prelude::*;
use std::time::Duration;

let client = PinnacleCachingClient::new(
    Duration::from_secs(60 * 5),
let balance = client.get(&GetClientBalance).await?;
// Now, if you repeat the request within 5 minutes, the cached version will be used
// instead of making a new request.
let cached_balance = client.get(&GetClientBalance).await?;


We appreciate all kinds of contributions, thank you!

Note on README

Most of the readme is automatically copied from the crate documentation by cargo-sync-readme. This way the readme is always in sync with the docs and examples are tested.

So if you find a part of the readme you'd like to change between <!-- cargo-sync-readme start --> and <!-- cargo-sync-readme end --> markers, don't edit README.md directly, but rather change the documentation on top of src/lib.rs and then synchronize the readme with:

cargo sync-readme

(make sure the cargo command is installed):

cargo install cargo-sync-readme

If you have rusty-hook installed the changes will apply automatically on commit.


This project is licensed under the MIT license.


~266K SLoC