Get ERC20 token transfers by wallet address
curl --request GET \
--url https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers \
--header 'X-API-Key: <api-key>'import requests
url = "https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"result": [
{
"token_name": "Tether USD",
"token_symbol": "USDT",
"token_decimals": "6",
"transaction_hash": "0x2d30ca6f024dbc1307ac8a1a44ca27de6f797ec22ef20627a1307243b0ab7d09",
"address": "0x057Ec652A4F150f7FF94f089A38008f49a0DF88e",
"block_timestamp": "2021-04-02T10:07:54.000Z",
"block_number": 12526958,
"block_hash": "0x0372c302e3c52e8f2e15d155e2c545e6d802e479236564af052759253b20fd86",
"from_address": "0xd4a3BebD824189481FC45363602b83C9c7e9cbDf",
"value": 650000000000000000,
"transaction_index": 12,
"log_index": 2,
"possible_spam": "false",
"verified_contract": "false",
"token_logo": "cdn.moralis.io/325/large/Tether-logo.png?1598003707",
"to_address_entity": "Beaver Build",
"to_address_entity_logo": "https://beaverbuild.com/favicon.ico",
"to_address": "0x62AED87d21Ad0F3cdE4D147Fdcc9245401Af0044",
"to_address_label": "Binance 2",
"from_address_entity": "Opensea",
"from_address_entity_logo": "https://opensea.io/favicon.ico",
"from_address_label": "Binance 1"
}
],
"page": "2",
"page_size": "100",
"cursor": "<string>"
}Activity
Token Transfers
Get all ERC20 token transfers for a given wallet address, sorted by block number (newest first).
GET
/
{address}
/
erc20
/
transfers
Get ERC20 token transfers by wallet address
curl --request GET \
--url https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers \
--header 'X-API-Key: <api-key>'import requests
url = "https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://deep-index.moralis.io/api/v2.2/{address}/erc20/transfers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"result": [
{
"token_name": "Tether USD",
"token_symbol": "USDT",
"token_decimals": "6",
"transaction_hash": "0x2d30ca6f024dbc1307ac8a1a44ca27de6f797ec22ef20627a1307243b0ab7d09",
"address": "0x057Ec652A4F150f7FF94f089A38008f49a0DF88e",
"block_timestamp": "2021-04-02T10:07:54.000Z",
"block_number": 12526958,
"block_hash": "0x0372c302e3c52e8f2e15d155e2c545e6d802e479236564af052759253b20fd86",
"from_address": "0xd4a3BebD824189481FC45363602b83C9c7e9cbDf",
"value": 650000000000000000,
"transaction_index": 12,
"log_index": 2,
"possible_spam": "false",
"verified_contract": "false",
"token_logo": "cdn.moralis.io/325/large/Tether-logo.png?1598003707",
"to_address_entity": "Beaver Build",
"to_address_entity_logo": "https://beaverbuild.com/favicon.ico",
"to_address": "0x62AED87d21Ad0F3cdE4D147Fdcc9245401Af0044",
"to_address_label": "Binance 2",
"from_address_entity": "Opensea",
"from_address_entity_logo": "https://opensea.io/favicon.ico",
"from_address_label": "Binance 1"
}
],
"page": "2",
"page_size": "100",
"cursor": "<string>"
}Authorizations
Path Parameters
The address of the wallet
Example:
"0xcB1C1FdE09f811B294172696404e88E658659905"
Query Parameters
The chain to query
Available options:
eth, 0x1, sepolia, 0xaa36a7, polygon, 0x89, bsc, 0x38, bsc testnet, 0x61, avalanche, 0xa86a, cronos, 0x19, arbitrum, 0xa4b1, chiliz, 0x15b38, gnosis, 0x64, base, 0x2105, base sepolia, 0x14a34, optimism, 0xa, polygon amoy, 0x13882, linea, 0xe708, moonbeam, 0x504, moonriver, 0x505, flow, 0x2eb, flow-testnet, 0x221, ronin, 0x7e4, ronin-testnet, 0x31769, lisk, 0x46f, pulse, 0x171, sei-testnet, 0x530, sei, 0x531, monad, 0x8f Example:
"eth"
The minimum block number from which to get the transactions
- Provide the param 'from_block' or 'from_date'
- If 'from_date' and 'from_block' are provided, 'from_block' will be used.
Required range:
x >= 0The maximum block number from which to get the transactions.
- Provide the param 'to_block' or 'to_date'
- If 'to_date' and 'to_block' are provided, 'to_block' will be used.
Required range:
x >= 0The start date from which to get the transactions (format in seconds or datestring accepted by momentjs)
- Provide the param 'from_block' or 'from_date'
- If 'from_date' and 'from_block' are provided, 'from_block' will be used.
Get the transactions up to this date (format in seconds or datestring accepted by momentjs)
- Provide the param 'to_block' or 'to_date'
- If 'to_date' and 'to_block' are provided, 'to_block' will be used.
List of contract addresses of transfers
The desired page size of the result.
Required range:
x >= 0The order of the result, in ascending (ASC) or descending (DESC)
Available options:
ASC, DESC Example:
"DESC"
The cursor returned in the previous response (used for getting the next page).

