Query onchain data. Pay for what you actually use.
Bloklake is a direct API and SQL layer over Ethereum, Robinhood, Base, Polygon, and more, billed by the gigabyte you query, not a seat, not a plan tier you'll never fill.
No credit card. No minimum commitment. $0.50/GB, metered.
from bloklake import Client
client = Client(api_key="BLOKLAKE_API_KEY")
# Every Uniswap V3 swap on Ethereum in this block range
swaps = client.query(
chain="ethereum",
table="logs",
block_range=(19_000_000, 19_050_000),
filters={
# Swap(address,address,int256,int256,uint160,uint128,int24)
"topic0": "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67",
},
columns=["block_number", "tx_hash", "log_index", "address", "topics", "data"],
)
Pay for the resources you consume, not an arbitrary subscription.
Most data platforms sell you a tier and hope you don't use it all. We meter what actually crosses the wire.
- Same price, whether you use it or not.
- Capacity sits idle. You still pay.
- Locked into a contract and a seat count.
- Outgrow the tier, and the sales team calls.
- $0.50 per GB. That's the whole model.
- Nothing running, nothing billed.
- No contract. No seats. Leave anytime.
- Outgrow pay-as-you-go, and you decide when to talk to us.
Three ways to get data out of the chain
Self-serve when you want speed, managed when you want it off your plate.
API access
Query blocks, transactions, and logs straight from your code. 2 RPS included on pay-as-you-go; custom plans unlock higher throughput and raw SQL.
Bulk data exports
Full historical backfills exported straight to your S3 bucket as Parquet, CSV, or TSV. No pipeline to babysit.
Custom data engineering
Don't build and maintain pipelines. Tell us the shape you need and we'll run it. You focus on your product.
One method, any chain, any table.
client.query(chain, table, block_range, filters, columns). Filter logs by topic0 to catch Uniswap trades, Polymarket fills, or anything else you can point an event signature at.
Filter the logs table by the Swap event topic0. No need to know a specific pool address up front.
from bloklake import Client
client = Client(api_key="BLOKLAKE_API_KEY")
# Every Uniswap V3 swap on Ethereum in this block range
swaps = client.query(
chain="ethereum",
table="logs",
block_range=(19_000_000, 19_050_000),
filters={
# Swap(address,address,int256,int256,uint160,uint128,int24)
"topic0": "0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67",
},
columns=["block_number", "tx_hash", "log_index", "address", "topics", "data"],
)
Same shape, different chain: Polymarket settles on Polygon through its CTF Exchange contract.
from bloklake import Client
client = Client(api_key="BLOKLAKE_API_KEY")
# Every Polymarket CTF Exchange order fill on Polygon
fills = client.query(
chain="polygon",
table="logs",
block_range=(60_000_000, 60_100_000),
filters={
"address": "0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E", # CTF Exchange
# OrderFilled(bytes32,address,address,uint256,uint256,uint256,uint256,uint256)
"topic0": "0xd0a08e8c493f9c94f29311604c9de1b4e8c8d4c06bd0c789af57f2d65bfec0f6",
},
columns=["block_number", "tx_hash", "log_index", "topics", "data"],
)
Stop maintaining pipelines. Start querying the chain.
Join the waitlist for API access, or talk to us about bulk exports and custom data engineering.