Skip to main content

Unofficial Python library for STEEM

Project description

beem - Unofficial Python Library for Steem

beem is an unofficial python library for steem, which is created new from scratch from python-bitshares The library name is derived from a beam maschine, similar to the analogy between steem and steam. beem includes python-graphenelib.

Latest Version Python Versions

Current build status Updates Test Coverage

Support & Documentation

You may find help in the beem-discord-channel. The discord channel can also be used to discuss things about beem.

A complete library documentation is available at

Advantages over the official steem-python library

  • High unit test coverage
  • Support for websocket nodes
  • Native support for new Appbase calls
  • Node error handling and automatic node switching
  • Usage of pycryptodomex instead of the outdated pycrypto
  • Complete documentation of beempy and all classes including all functions
  • steemconnect integration
  • Works on read-only systems
  • Own BlockchainObject class with cache
  • Contains all broadcast operations
  • Estimation of virtual account operation index from date or block number
  • the command line tool beempy uses click and has more commands
  • SteemNodeRPC can be used to execute even not implemented RPC-Calls
  • More complete implemention


The minimal working python version is 2.7.x. or 3.4.x

beem can be installed parallel to python-steem.

For Debian and Ubuntu, please ensure that the following packages are installed:

sudo apt-get install build-essential libssl-dev python-dev

For Fedora and RHEL-derivatives, please ensure that the following packages are installed:

sudo yum install gcc openssl-devel python-devel

For OSX, please do the following:

brew install openssl
export CFLAGS="-I$(brew --prefix openssl)/include $CFLAGS"
export LDFLAGS="-L$(brew --prefix openssl)/lib $LDFLAGS"

For Termux on Android, please install the following packages:

pkg install clang openssl-dev python-dev

Signing and Verify can be fasten (200 %) by installing cryptography:

pip install -U cryptography

Install beem by pip:

pip install -U beem

You can install beem from this repository if you want the latest but possibly non-compiling version:

git clone
cd beem
python build

python install --user

Run tests after install:


Installing beem with conda-forge

Installing beem from the conda-forge channel can be achieved by adding conda-forge to your channels with:

conda config --add channels conda-forge

Once the conda-forge channel has been enabled, beem can be installed with:

conda install beem

Signing and Verify can be fasten (200 %) by installing cryptography:

conda install cryptography

CLI tool beempy

A command line tool is available. The help output shows the available commands:

beempy –help

Stand alone version of CLI tool beempy

With the help of pyinstaller, a stand alone version of beempy was created for Windows, OSX and linux. Each version has just to be unpacked and can be used in any terminal. The packed directories can be found under release. Each release has a hash sum, which is created directly in the build-server before transmitting the packed file. Please check the hash-sum after downloading.



  • Issue #72 fixed by crokkon
  • Improved Docu by jrswab
  • Add get_vote_pct_for_SBD, sbd_to_vote_pct and sbd_to_rshares by flugschwein
  • beembase/objects: fix serialization of appbase trx by crokkon
  • Fix many documentation errors (based on error messages when building) by flugschwein
  • Appbase detection fixed
  • Unit tests fixed


  • Issue #69 fixed
  • bug in batched streaming + cli fixed
  • Nodelist updated
  • unit tests improved
  • Add last_current_block_num parameter to wait_for_and_get_block for reducing the number of api calls
  • not_broadcasted_vote parameter added for improving vote calculation accuracy thanks to flugschwein


  • Add userdata and featureflags to beempy
  • and removed from Nodelist
  • bug fixed in allow and disallow for CLI
  • Issue #52 closed thanks to crokkon
  • Issue #64 fixed
  • Issue #66 fixed thanks to flugschwein


  • node added
  • history is made ready for appbase
  • account refresh fixed
  • fix ops_statistics for new appase nodes


  • Add missing trx_num to streamed block operation
  • Add format to resolve_authorperm
  • disable_chain_detection added to graphenerpc (for testing hivemind e.g.)
  • set_next_node_on_empty_reply added to some appbase rpc calls


  • Class to access Steemit Conveyor instances added by crokkon
  • Option added to loed custom chains into the Steem object


  • add get_parent() to comment
  • fix for beempy reward
  • fix #46 (used power calculation may treat downvotes incorrectly) by crokkon
  • fix #49 (discussions: set steem inst. as keyword argument) by crokkon
  • Fix issue #51 (Discussions.get_discussions(“blog”, …) returns the same two comments over and over)
  • Fix #52 discussions.Replies_by_last_update() by crokkon
  • Some bug fixes for Discussions
  • Fix #54 (discussions may fail to handle empty responses correctly) by crokkon
  • Snapshot improved
  • Unit tests fixed
  • Examples account_vp_over_time, account_reputation_by_SP
  • Spelling errors fix by crokkon
  • Adding account methods for feed, blog, comments and replies by crokkon
  • Fix #57 (SteemConnect expects double quotes in JSON)
  • Improved handling of “Client returned invalid format. Expected JSON!” erros


  • Fix issue #45 (upvote() and downvote() of a pending post/comment without vote did not work)
  • fix Amount for condenser broadcast ops on appbase nodes (fixes transfer broadcast for example)
  • Added get_all_replies() to Comment for fetching all replies to a post
  • bemepy claimreward improved
  • Amount handling in Account improved
  • upvote and downvote in beempy fixed
  • update_vote and build_vp_arrays added to AccountSnapshot for showing vote power history
  • account_vp_over_time added to examples


  • Some bug fixes
  • Unit tests using testnet fixed
  • beem.snapshot improved
  • Example account_sp_over_time added
  • Example account_curation_per_week_and_1k_sp added
  • Add block_number check to wait_for_and_get_block


  • Force refresh of chain_params on node switch
  • Replace recursive call in _get_followers
  • Nodelist updated and node disabled
  • First testing version of beem.snapshot with example added (thanks to crokkon for his example)


  • Add RLock to ObjectCache (ObjectCache is threadsafe now)
  • Fix Blockchain Version comparison
  • Add support for RPC Nodes below 0.19.5
  • Add Example for measuring objectcache performance


  • Fix start and datetime in history_reverse
  • add lazy option to all Discussion classes
  • VIT and SMT testnet added to chains
  • estimate_virtual_op_num improved by crokkon (fixes issue #36)


  • Fix minimal version in known_chains from 0.0.0 to 0.19.5


  • improve parse_body for post()
  • Add conversion of datetime objects to timestamp in get_steem_per_mvest
  • Fix beem for steem update 0.19.5 and 0.19.10


  • Issue #34 fixed thanks to crokkon
  • “Bad or missing upstream response” is handled
  • Use thread_num - 1 instances for blocks with threading
  • Fix missing repsonses in market
  • add parse_body to post() (thanks to crokkon)
  • Examples added to all Discussions classes
  • Discussions added for fetch more than 100 posts


  • Improvement of blocks/stream with threading (issue #32 fixed)
  • Remove 5 tag limit
  • Empty answer fixed for discussions
  • Add fallback to condenser api for appbase nodes


  • get_feed_entries, get_blog_authors, get_savings_withdrawals, get_escrow, verify_account_authority, get_expiring_vesting_delegations, get_vesting_delegations, get_tags_used_by_author added to Account
  • get_account_reputations, get_account_count added to Blockchain
  • Replies_by_last_update, Trending_tags, Discussions_by_author_before_date
  • ImageUploader class added
  • Score calculation improved in update_nodes
  • apidefinitions added to docs, which includes a complete condenser API call list.


  • Bug fixes
  • Bool variables for SteemConnect link creation fixed
  • Account handling in beem.account is improved
  • json_metadata property added to beem.account
  • missing addTzInfo added to beem.blockchain
  • json_metadata update for comment edit improved
  • use_stored_data option added to
  • poloniex removed and huobi and ubpit added to steem_btc_ticker()
  • Add timeout to websocket connections
  • Documentation improved by crokkon
  • “time”, “reputation” and “rshares” are parsed from string in all vote objects and inside all active_votes from a comment object
  • lazy and full properly passed
  • “votes”, “virtual_last_update”, “virtual_position”, “virtual_scheduled_time”,
    “created”, “last_sbd_exchange_update”, “hardfork_time_vote” are properly casted in all witness objects
  • “time” and “expiration” are parsed to a datetime object inside all block objects
  • The json() function returns the original not parsed json dict. It is available for Account, Block, BlockHeader, Comment, Vote and Witness
  • json_transactions and json_operations added to Block, for returning all dates as string
  • Issues #27 and #28 fixed (thanks to crokkon for reporting)
  • Thread and Worker class for blockchain.blocks(threading=True)


  • Bug fixes
  • Fix handling of empty json_metadata
  • Prepare broadcasting in new appbase format
  • Condenser API handling improved
  • Condenser API forced for Broadcast operation on appbase-nodes


  • Several bug fixes
  • Account features + some fixes and refactorings by crokkon
  • blockchain.awaitTxConfirmation() fix timeout by crokkon
  • beempy updatenodes added, this command can be used to update the nodes list
  • NodeList.update_nodes() added, this command reads the metadata from fullnodeupdate, which contain newest nodes information
  • add option wss and https for NodeList.get_nodes
  • updatenodes is used in all tests
  • add witnessenable, witnessdisable, witnessfeed and witness
  • time_diff_est and block_diff_est added to witness for next block producing estimation
  • btc_usd_ticker, steem_btc_ticker, steem_usd_implied and _weighted_average added to Market
  • beempy witnesses uses the proxy name when set
  • beempy keygen added, for creating a witness signing key
  • beempy parsewif improved


  • Several bug fixes (including issue #18 and #20)
  • fix get_config and get_blockchain_version
  • fix get_network


  • Several bug fixes (including issue #17)
  • missing steem_instance fixed
  • update_account_profile fixed
  • update_account_metadata added


  • Several bug fixes (including issue #13 and #16)
  • steemconnect v2 integration added
  • token storage added to wallet
  • add setToken, clear_local_token, encrypt_token, decrypt_token, addToken, getTokenForAccountName, removeTokenFromPublicName, getPublicNames added to the wallet class
  • url_from_tx add to steemconnect for creating a URL from any operation
  • login demo add added
  • add -l option to beempy for creating URL from any operation
  • add -s option to beempy for broadcasting via steemconnect
  • addtoken, deltoken and listtoken added to beempy


  • bug fix and improvements for beempy curation


  • is also supported
  • beempy curation improved
  • owner key is used, when provided and when no other permission is given
  • active key is used, when provided and when no posting key is given (post, vote, …)
  • MissingKeyError is raised when a wrong key is set by Steem(keys=[])


  • get_replies() for comments added
  • Account_witness_proxy added
  • Custom added
  • Custom_binary added
  • Prove_authority added
  • Limit_order_create2 added
  • Request_account_recovery added
  • Recover_account added
  • Escrow_transfer added
  • Escrow_dispute added
  • Escrow_release added
  • Escrow_approve added
  • Decline_voting_rights added
  • Export option for votes and curation command under beempy added
  • getOwnerKeysForAccount, getActiveKeysForAccount, getPostingKeysForAccount added
  • Node Class and Nodelist added


  • Several bug fixes
  • CLI improved
  • wait_for_and_get_block refactoring (Thanks to crokkon)
  • Bug fix for, raw_ops added
  • Fix and improve estimate_virtual_op_num
  • Support for New Appbase Operations format


  • Improve rewards command in beempy
  • estimate_virtual_op_num improved and small bug fixed
  • SBD value in Comment always converted to Amount
  • accuracy renamed to stop_diff
  • Doku of estimate_virtual_op_num improved
  • Unit test for estimate_virtual_op_num added
  • beempy rewards command renamed to pending
  • new beempy command: rewards shows now the received rewards


  • Block have only_ops and only_virtual_ops as parameter
  • transactions and operations property added to Block
  • entryId changed to start_entry_id in get_feed, get_blog_entries and get_blog
  • estimate_virtual_op_num() added to Account, can be used to fastly get account op numbers from dates or blocknumbers
  • history and history_reverse uses estimate_virtual_op_num()
  • blockchain.ops() is obsolete
  • only_ops and only_virtual_ops added to blockchain.get_current_block(), blockchain.blocks() and
  • reward, curation, verify added to cli
  • new curation functions added to the Comment class
  • Signed_Transaction.verify() fixed, by trying all recover_parameter from 0 to 3
  • get_potential_signatures, get_transaction_hex and get_required_signatures added to Transactionbuilder
  • KeyNotFound is replaced by MissingKeyError and KeyNotFound is removed


  • Several small bugs fixed
  • cache which stores blockchainobjects is now autocleaned
  • requests.session is now a shared instance
  • websocket will be created again for each Steem instance
  • A node benchmark which uses threads added to examples
  • Documentation improved
  • Optional threading added to beempy pingnode (use –threading with –sort)


  • bug fix release


  • AsciiChart for beempy: pricehistory, tradehistory and orderbook
  • Sort nodes regarding their ping times (beempy ping –sort –remove)
  • currentnode and nextnode skip not working nodes
  • Memory consumption fer requests and websocket reduced when creating more instances of steem
  • trade_history added to market
  • Issue #4 fixed
  • Steem(use_condenser=True) activates condenser_api calls for 19.4 nodes


  • new function for beempy added: power, follower, following, muter, muting, mute, nextnode, pingnode, currentnode
  • support for read-only systems added
  • more unit tests
  • Several improvements and bug fixes


  • beempy (command line tool) improved and all missing functions which are available in steempy are added
  • new functions to beempy added: witnesses, walletinfo, openorders, orderbook and claimreward
  • unit tests for cli added


  • Transactionbuilder and Wallet improved
  • Accounts with more than one authority can be used for signing
  • Examples added
  • reconstruct_tx added to sign and addSigningInformation
  • proposer from Transactionbuilder removed, as it had no function
  • rshares_to_vote_pct added


  • serveral bug fixes and improvements
  • coverage improved
  • rpc improvements
  • Native appbase support for broadcasting transactions added
  • Native appbase support for Transfer added


  • serveral bug fixes and improvements
  • coverage improved
  • steem.get_blockchain_version added
  • post and comment_options moved from beem.commment to beem.steem
  • wait_for_and_get_block improved
  • num_retries handling improved
  • block_numbers can be set as start and stop in account.history and account.history_reverse, when use_block_num=True (default)


  • bug fix release


  • GOLOS chain added
  • Huge speed improvements for all sign/verify operations (around 200%) when secp256k1 can not be installed and cryptography is installed
  • benchmark added
  • Example for speed comparison with steem-python added
  • Several bug fixes and improvements


  • rename wallet.purge() and wallet.purgeWallet() to wallet.wipe()
  • Handle internal node errors
  • Account class improved
  • Several improvements


  • bugfixes for testnet operations
  • refactoring


  • batched api calls possible
  • Threading added for websockets
  • bug fixes


  • beem is now in the beta state, as now 270 unit tests exists
  • unit tests added for appbase
  • bug fixes for appbase-api calls


  • bug fix release for condenser_api


  • beem is appbase ready
  • more examples added
  • print_appbase_calls added
  • https nodes can be used


  • Memo encryption/decryption fixed


  • CLI tool improved
  • bug fixes
  • more unittests


  • bug fixes
  • CLI tool added
  • beem added to conda-forge
  • more unittests


  • works on python 2.7
  • can be installed besides steem-python
  • graphenelib included
  • unit tests added
  • comment and account improved
  • timezone added
  • Delete_comment added


  • Small bug-fix


  • Market fixed
  • Account, Comment, Discussion and Witness class improved
  • Bug fixes



  • Add Comment/Post
  • Add Witness
  • Several bugfixes
  • Added all transactions that are supported from steem-python
  • New library name planned: beem


  • Notify and websocket fixed
  • Several fixes


  • Imported from
  • Replaced all BitShares by Steem
  • Flake8 fixed
  • Unit tests are working
  • renamed to beem
  • Docs fixed
  • Signing fixed
  • pysteem: Account, Amount, Asset, Block, Blockchain, Instance, Memo, Message, Notify, Price, Steem, Transactionbuilder, Vote, Witness are working


This library is licensed under the MIT License.


python-bitshares and python-graphenelib were created by Fabian Schuh (xeroc).

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
beem-0.19.55-py2.py3-none-any.whl (327.3 kB) Copy SHA256 hash SHA256 Wheel py2.py3 Sep 8, 2018
beem-0.19.55.tar.gz (499.6 kB) Copy SHA256 hash SHA256 Source None Sep 8, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page