Output Formats
Return as DataFrame
# As pandas DataFrame (default)
df = (
client.erc20.transfers("USDT")
.network("ETH")
.block_range(21000000, 21010000)
.as_df()
)
# As polars DataFrame
df = (
client.erc20.transfers("USDT")
.network("ETH")
.block_range(21000000, 21010000)
.as_df("polars")
) Save to File
Format is automatically determined by file extension:
# Save as Parquet (recommended for large datasets)
(
client.erc20.transfers("USDT")
.network("ETH")
.block_range(21000000, 21100000)
.as_file("transfers.parquet")
)
# Save as CSV
(
client.erc20.transfers("USDT")
.network("ETH")
.block_range(21000000, 21100000)
.as_file("transfers.csv")
)
# Save as JSON
(
client.erc20.transfers("USDT")
.network("ETH")
.block_range(21000000, 21010000)
.as_file("transfers.json")
) Get Download Link
Get a shareable download link instead of the data directly. Useful for passing to other tools or libraries:
from defistream import DeFiStream
client = DeFiStream()
# Get a download link (CSV format by default)
link_info = (
client.erc20.transfers("USDT")
.network("ETH")
.block_range(21000000, 21100000)
.as_link()
)
print(link_info.filename) # erc20_transfer_ETH_21000000_21100000.csv
print(link_info.link) # https://dl.defistream.dev/dh/abc123/...
print(link_info.expiry) # 2026-02-03 15:30:00
print(link_info.size) # 1.29 MB
# Get as Parquet link
link_info = (
client.erc20.transfers("USDT")
.network("ETH")
.block_range(21000000, 21100000)
.as_link(format="parquet")
)
# Use with polars (reads directly from URL)
import polars as pl
df = pl.read_parquet(link_info.link)
# Use with pandas
import pandas as pd
df = pd.read_parquet(link_info.link) Note: Links expire after 1 hour. The
as_link()method only supportscsvandparquetformats.
Return as Dictionary (JSON)
For small queries, you can get results as a list of dictionaries:
transfers = (
client.erc20.transfers("USDT")
.network("ETH")
.block_range(21000000, 21010000)
.as_dict()
)
for transfer in transfers:
print(f"{transfer['sender']} -> {transfer['receiver']}: {transfer['amount']}") Note:
as_dict()andas_file("*.json")use JSON format which has a 10,000 block limit. For larger block ranges, useas_df()oras_file()with.parquetor.csvextensions, which have no block limit.