CoinCircle
py-etherdelta
Python

Python client for interacting with the EtherDelta API and Smart Contracts.

Last updated Apr 8, 2026
19
Stars
8
Forks
6
Issues
0
Stars/day
Attention Score
13
Language breakdown
No language data available.
Files click to expand
README

EtherDelta Python Client

Python client for interacting with the EtherDelta API and Smart Contracts.

Install

Dependencies

  • gcc
  • git
  • Python 3.5+
Install via pip
pip3 install etherdelta

or

python3 -m pip install etherdelta

or (always latest)

pip3 install git+git://github.com/coincircle/py-etherdelta.git

Getting Started

# import package
import etherdelta

initialize client

client = etherdelta.Client()

call methods

token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef' orders = client.getorderbook(tokenaddr) print(orders)

A ForkDelta client is also available

import etherdelta

initialize ForkDelta client

client = etherdelta.ForkDeltaClient()

Documentation

Examples

Get account ETH balance

client = etherdelta.Client()
account = '0x85E4B84D784eE9eEB7489F0B0c66B343AF2a0BE5'
bal = client.getethbalance(account)
print(bal) # 0.053658783

Get account token balance

client = etherdelta.Client()
account = '0x85E4B84D784eE9eEB7489F0B0c66B343AF2a0BE5'
token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef'
bal = client.gettokenbalance(account, token_addr)
print(bal) # 71.464571009031715384

Get account ETH balance on EtherDelta

client = etherdelta.Client()
account = '0x85E4B84D784eE9eEB7489F0B0c66B343AF2a0BE5'
bal = client.getetherdeltaeth_balance(account)
print(bal) # 0.060271757614136072

Get account token balance on EtherDelta

client = etherdelta.Client()
account = '0x85E4B84D784eE9eEB7489F0B0c66B343AF2a0BE5'
token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef'
bal = client.getetherdeltatokenbalance(account, tokenaddr)
print(bal) # 0

Get highest block number

client = etherdelta.Client()
number = client.getblocknumber()
print(number) # 5018972

Get token address of token symbol

client = etherdelta.Client()
symbol = 'BAT'
tokenaddr = client.gettoken_address(symbol)
print(token_addr) # 0x0d8775f648430679a709e98d2b0cb6250d2887ef

Get ticker data for all tokens

client = etherdelta.Client()
tickers = client.get_tickers()
print(tickers)

{'ETH0xec46': {'ask': 0.01, 'quoteVolume': 193.809, 'last': 0.000300001, 'baseVolume': 0.058, 'bid': 0.000300002, 'percentChange': 0, 'tokenAddr': '0xec46f8207d766012454c408de210bcbc2243e71c'}, 'ETHEMV': {'ask': 0.0004579, 'quoteVolume': 11451.47, 'last': 0.0004579, 'baseVolume': 4.647, 'bid': 0.0004586, 'percentChange': 0.2376, 'tokenAddr': '0xb802b24e0637c2b87d2e8b7784c055bbe921011a'}}

Get ticker data for a token

client = etherdelta.Client()
symbol = 'BAT'
ticker = client.get_ticker(symbol)
print(ticker)

{'quoteVolume': 2603.107, 'bid': 0.000421, 'baseVolume': 1.135, 'tokenAddr': '0x0d8775f648430679a709e98d2b0cb6250d2887ef', 'last': 0.000477839, 'ask': 0.000477838, 'percentChange': 0.0607}

Get orderbook (all buy and sell orders) for token

client = etherdelta.Client()
token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef'
orders = client.getorderbook(tokenaddr)
print(orders)

{'buys': [{'s': '0x36728e74f49ed1ef7f85e603c8ea4b149f5c427b9f0bfc6bc072ad780486dd7b', 'user': '0x0f8aa39a58adcc3df98d826ac798ab837cc0833c', 'ethAvailableVolume': '6755.671999999999', 'amount': '6755671999999999213568', 'availableVolumeBase': '2876979662150982000', 'tokenGive': '0x0000000000000000000000000000000000000000', 'expires': '5019005', 'amountFilled': None, 'updated': '2018-02-02T19:42:59.089Z', 'nonce': '4500026492', 'id': '9f365bafc972b2e21ed52569075647c4778385c0ce9283cb16630df78ed99f72_buy', 'availableVolume': '6.755671999999999213568e+21', 'r': '0xa3ca2a8fb3773271b073bc45a1b81138d8bf95c82ca877bf407ec3250a934b2a', 'tokenGet': '0x0d8775f648430679a709e98d2b0cb6250d2887ef', 'amountGet': '6755671999999999213568', 'v': 28, 'price': '0.00042586135948444247', 'ethAvailableVolumeBase': '2.876979662150982', 'amountGive': '2876979662150982144'}}

Get order from ID

client = etherdelta.Client()
token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef'
orderid = '6e40fdfc81d58a70405431599a1d5c76d502b3cf02e1936bc36f1e8583c0d2b9sell'
order = client.getorder(tokenaddr, order_id)
print(order)

{'ethAvailableVolumeBase': '4.495', 'availableVolume': '100000000000000', 'expires': '1004639969', 'user': '0x2C34973C4c46f13534C81A893645F347B65c89d6', 'amount': '-100000000000000', 'r': '0xff456276e336d37bee3e59f9c8e46e9dffa4dea73dfe85dcad73df543ebc9ec2', 'price': '44950', 'nonce': '1384390526', 'v': 27, 'id': '6e40fdfc81d58a70405431599a1d5c76d502b3cf02e1936bc36f1e8583c0d2b9_sell', 'tokenGive': '0x0d8775f648430679a709e98d2b0cb6250d2887ef', 'updated': '2017-11-28T21:15:11.423Z', 'availableVolumeBase': '4495000000000000000', 'amountFilled': None, 'ethAvailableVolume': '0.0001', 'amountGive': '100000000000000', 's': '0x166c467778a5f89aa3d9283eca77d5e4d857a6de365da9f25b8ec30446ae08e5', 'tokenGet': '0x0000000000000000000000000000000000000000', 'amountGet': '4495000000000000000'}

Get buy (bids) orderbook for a token

client = etherdelta.Client()
token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef'
orders = client.getbuyorderbook(token_addr)
print(orders)

[{'availableVolumeBase': '6115302748878024', 'user': '0x9b3e7f46e4e8894d4bc84bb3200161cc6f0fa0f2', 'tokenGet': '0x0d8775f648430679a709e98d2b0cb6250d2887ef', 'amountGive': '189450000000000000', 'amount': '450000000000000000000', 's': '0x07ec06b8e95e84530755a55aa20d8e16d978592a76d1990ba38f96c35be930af', 'ethAvailableVolumeBase': '0.006115302748878024', 'updated': '2018-02-02T17:40:30.400Z', 'price': '0.000421', 'expires': '5028370', 'id': '0f97c3f4c9d78eb44f20395adfa4ed85b4a5f69389853faa6f2cad2b0c24931e_buy', 'nonce': '2687232062', 'amountFilled': None, 'r': '0xb47fce6954b181d656629f62f7c9ff6a7bd11604a5e26bc7a00a099e396c5138', 'availableVolume': '14525659736052313539', 'amountGet': '450000000000000000000', 'tokenGive': '0x0000000000000000000000000000000000000000', 'ethAvailableVolume': '14.525659736052313', 'v': 27}]

Get sell (asks) orderbook for a token

client = etherdelta.Client()
token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef'
orders = client.getsellorderbook(token_addr)
print(orders)

[{'user': '0x955051F2cF3bA245ae8Ee9057458836eAe3b1FeC', 'expires': '5018717', 'amount': '-2.1572374771676692e+21', 'ethAvailableVolumeBase': '1.0308100416148447', 'tokenGet': '0x0000000000000000000000000000000000000000', 'ethAvailableVolume': '2157.237477167669', 'updated': '2018-02-02T18:15:21.791Z', 'price': '0.000477838', 'r': '0xe3129e0ec2110063d16d84ac4770f402555614d077b6cfd1ba9d701839f0691d', 'availableVolumeBase': '1030810041614844700', 'v': 28, 'availableVolume': '2.15723747716766907792023752118211285330018e+21', 'amountGet': '1030810041614844700', 'id': 'b66abf9a645756ef32aff132d6dde19ad7d7b2c5c026475c60140da266186a01_sell', 'nonce': '26698014251852476', 'tokenGive': '0x0d8775f648430679a709e98d2b0cb6250d2887ef', 's': '0x38a06acd697cb5cf91f9c8d19389904331b1014a0713a11f775f632d7e7e4dc3', 'amountFilled': None, 'amountGive': '2.157237477167669064104e+21'}]

Get amount filled for an order

client = etherdelta.Client()
token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef'
orderid = '6e40fdfc81d58a70405431599a1d5c76d502b3cf02e1936bc36f1e8583c0d2b9sell'
filled = client.getamountfilled(tokenaddr, orderid)
print(filled) # 0

Get available volume of an order

client = etherdelta.Client()
token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef'
orderid = '6e40fdfc81d58a70405431599a1d5c76d502b3cf02e1936bc36f1e8583c0d2b9sell'
volume = client.getavailablevolume(tokenaddr, orderid)
print(volume) # 4495000000000000000

Make a trade

import etherdelta

client = etherdelta.Client()

Get Buy Order Book

token_addr = '0x0d8775f648430679a709e98d2b0cb6250d2887ef' orders = client.getbuyorderbook(token_addr)

print(orders)

Make a Trade

orderid = '959690a3d665ce5e77c76df4273170bae5e57f990436d4b909e9656f64e221f7buy' order = client.getorder(tokenaddr, order_id)

expires = int(order['expires']) token_price = 0.0001 token_amount = 1 token_address = order['tokenGet'] priv_key = '123...' randomseed = True

signedorder = client.createorder('buy', expires, tokenprice, tokenamount, tokenaddress, randomseed, privkey)

eth_amount = 0.0001 tx = client.trade(order, ethamount, privkey) print(tx)

Other methods available

  • withdraw()
  • withdraw_token()
  • deposit()
  • deposit_token()
  • approve_deposit()

Development

Install Web3.py

sudo pip3 install git+git://github.com/ethereum/web3.py.git

Install dependencies

pip3 install -r requirements.txt

FAQ

  • Q: Why do I get empty results sometimes?
- A: Unfortunately, the EtherDelta websocket client is unreliable.
  • Q: Why doesn't get_ticker() return any data?
- A: For some reason the EtherDelta API doesn't return this data anymore.
  • Q: Why doesn't gettokenaddress() work?
- A: This method is dependent on the get_ticker() method. See above question.
  • Q: Help! I'm getting a bunch of install errors!
- A: Please report it in the Issues.

Resources

License

MIT

© 2026 GitRepoTrend · CoinCircle/py-etherdelta · Updated daily from GitHub