Get Coinbase balances using code? Lets do it.





The good news is that there is a official python Coinbase module. Let's build on the experience from my previous post on connecting to GDAX with Python. If I can connect to both my Coinbase Wallets and my GDAX accounts... I will be well on my way to understanding my cryptocurrency portfolio in ways that are not provided in the web UI.The good news is that there is a official python Coinbase module.





A WORD OF CAUTION: Coinbase handles financial assets. Always use the sandbox when testing code and ideas. Its never a good idea to put secrets in your code. Use appropriate security measures when using API credentials. I recommend using a tool such as bcrypt to protect your secrets.

Goals

Securely authenticate to Coinbase REST service using official Coinbase module

Get a list of accounts/wallets for the authenticated user

Get a list of all transactions for all accounts

Display the results

Display the execution duration in seconds

Prep

Login to Coinbase and generate an API key. I specifically set my API key to have all available "read" permissions. I recommend using the "Allowed IP Addresses" option during API key creation. Save the key and secret in a secure location, such as your favorite password manager. Install the Coinbase API for python

Python Code

I am using the example code from the Coinbase documentation as a starting point.

import time from coinbase.wallet.client import Client # Tracking execution time start = time.time() # Authenticate with Coinbase client = Client( 'YOUR KEY', 'YOUR SECRET', api_version='2017-09-01') # Gather account data accounts = client.get_accounts() # Display balance and transactions for each account for account in accounts.data: balance = account.balance print "%s: %s %s" % (account.name, balance.amount, balance.currency) print account.get_transactions() print "

Execution Time: " + str(time.time() - start)

Notes

You can verify the API version from the API key creation page.

Remember to secure your secret and passphrase after (or even during) testing using bcrypt/scrypt/pbkdf2

JSON is formatted by the coinbase module

module Execution time is presented in seconds

Result

Here is a sample of the output I received. I have masked some data, so just live with it.

LTC Wallet: 0.00372555 LTC { "data": [ { "amount": { "amount": "-1.00000000", "currency": "LTC" }, "created_at": "XXXX-XX-XXTXX:XX:XXX", "description": null, "details": { "subtitle": "to GDAX", "title": "Transferred litecoin" }, "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "instant_exchange": false, "native_amount": { "amount": "-81.65", "currency": "USD" }, "resource": "transaction", "resource_path": "/v2/accounts/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/transactions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "status": "completed", "type": "exchange_deposit", "updated_at": "XXXX-XX-XXTXX:XX:XXX" }, ... Execution Time: 1.54399991035

And Then?