Backend API libraries
Last edit: @, November 23, 2023
In order for a software application to interact with the Ethereum blockchain (i.e. read blockchain data and/or send transactions to the network), it must connect to an Ethereum node.
For this purpose, every Ethereum client implements the JSON-RPC specification, so there are a uniform set of methods that applications can rely on.
If you want to use a specific programming language to connect with an Ethereum node, there are many convenience libraries within the ecosystem that make this much easier. With these libraries, developers can write intuitive, one-line methods to initialize JSON-RPC requests (under the hood) that interact with Ethereum.
Prerequisites
It might be helpful to understand the Ethereum stack and Ethereum clients.
Why use a library?
These libraries abstract away much of the complexity of interacting directly with an Ethereum node. They also provide utility functions (e.g. converting ETH to Gwei) so as a developer you can spend less time dealing with the intricacies of Ethereum clients and more time focused on the unique functionality of your application.
Available libraries
Alchemy - Ethereum Development Platform.
- alchemy.com(opens in a new tab)
- Documentation(opens in a new tab)
- GitHub(opens in a new tab)
- Discord(opens in a new tab)
BlockCypher - Ethereum Web APIs.
Blast by Bware Labs - Decentralized APIs for Ethereum Mainnet and Testnets.
Infura - The Ethereum API as a service.
Cloudflare Ethereum Gateway.
Coinbase Cloud Node - Blockchain Infrastructure API.
DataHub by Figment - Web3 API services with Ethereum Mainnet and testnets.
NFTPort - Ethereum Data and Mint APIs.
- nftport.xyz(opens in a new tab)
- Documentation(opens in a new tab)
- GitHub(opens in a new tab)
- Discord(opens in a new tab)
Nodesmith - JSON-RPC API access to Ethereum Mainnet and testnets.
Ethercluster - Run your own Ethereum API service supporting both ETH and ETC.
Chainstack - Elastic and dedicated Ethereum nodes as a service.
- chainstack.com(opens in a new tab)
- Documentation(opens in a new tab)
- Ethereum API reference(opens in a new tab)
QuickNode - Blockchain Infrastructure as a Service.
Python Tooling - Variety of libraries for Ethereum interaction via Python.
- py.ethereum.org(opens in a new tab)
- web3.py GitHub(opens in a new tab)
- web3.py Chat(opens in a new tab)
web3j - A Java/Android/Kotlin/Scala integration library for Ethereum.
Rivet - Ethereum and Ethereum Classic APIs as a service powered by open source software.
Nethereum - An open source .NET integration library for blockchain.
Tatum - The ultimate blockchain development platform.
- Tatum(opens in a new tab)
- GitHub(opens in a new tab)
- Documentation(opens in a new tab)
- Discord(opens in a new tab)
Watchdata - Provide simple and reliable API access to Ethereum blockchain.
Zmok - Speed-oriented Ethereum nodes as JSON-RPC/WebSockets API.
- zmok.io(opens in a new tab)
- GitHub(opens in a new tab)
- Documentation(opens in a new tab)
- Discord(opens in a new tab)
NOWNodes - Full Nodes and Block Explorers.
Moralis - Enterprise-Grade EVM API Provider.
- moralis.io(opens in a new tab)
- Documentation(opens in a new tab)
- GitHub(opens in a new tab)
- Discord(opens in a new tab)
- Forum(opens in a new tab)
Chainbase - All-in-one web3 data infrastructure for Ethereum.
GetBlock- Blockchain-as-a-service for Web3 development
BlockPi - Provide more efficient and fast RPC services
- blockpi.io(opens in a new tab)
- Documentation(opens in a new tab)
- GitHub(opens in a new tab)
- Discord(opens in a new tab)
Tokenview - The General Multi-Crypto Blockchain APIs Platform.
- services.tokenview.io(opens in a new tab)
- Documentation(opens in a new tab)
- GitHub(opens in a new tab)
Further reading
Know of a community resource that helped you? Edit this page and add it!
Related topics
Related tutorials
- Set up Web3js to use the Ethereum blockchain in JavaScript – Instructions for getting web3.js set up in your project.
- Calling a smart contract from JavaScript – Using the DAI token, see how to call contracts function using JavaScript.