ots_getBlockTransactions
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "ots_getBlockTransactions",
"params": [
1000,
0,
10
],
"id": 1
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm"
payload = {
"jsonrpc": "2.0",
"method": "ots_getBlockTransactions",
"params": [1000, 0, 10],
"id": 1
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'ots_getBlockTransactions',
params: [1000, 0, 10],
id: 1
})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm', 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://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'method' => 'ots_getBlockTransactions',
'params' => [
1000,
0,
10
],
'id' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"ots_getBlockTransactions\",\n \"params\": [\n 1000,\n 0,\n 10\n ],\n \"id\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"ots_getBlockTransactions\",\n \"params\": [\n 1000,\n 0,\n 10\n ],\n \"id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"method\": \"ots_getBlockTransactions\",\n \"params\": [\n 1000,\n 0,\n 10\n ],\n \"id\": 1\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 1,
"result": {
"txs": [],
"receipts": [],
"firstPage": true,
"lastPage": true
}
}Hyperliquid node API
ots_getBlockTransactions | Hyperliquid EVM
The ots_getBlockTransactions JSON-RPC method retrieves paginated transactions for a specific block on the Hyperliquid EVM blockchain.
POST
/
evm
ots_getBlockTransactions
curl --request POST \
--url https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "ots_getBlockTransactions",
"params": [
1000,
0,
10
],
"id": 1
}
'import requests
url = "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm"
payload = {
"jsonrpc": "2.0",
"method": "ots_getBlockTransactions",
"params": [1000, 0, 10],
"id": 1
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'ots_getBlockTransactions',
params: [1000, 0, 10],
id: 1
})
};
fetch('https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm', 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://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'jsonrpc' => '2.0',
'method' => 'ots_getBlockTransactions',
'params' => [
1000,
0,
10
],
'id' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm"
payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"ots_getBlockTransactions\",\n \"params\": [\n 1000,\n 0,\n 10\n ],\n \"id\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"ots_getBlockTransactions\",\n \"params\": [\n 1000,\n 0,\n 10\n ],\n \"id\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"jsonrpc\": \"2.0\",\n \"method\": \"ots_getBlockTransactions\",\n \"params\": [\n 1000,\n 0,\n 10\n ],\n \"id\": 1\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "2.0",
"id": 1,
"result": {
"txs": [],
"receipts": [],
"firstPage": true,
"lastPage": true
}
}This method is available on Chainstack. Not all Hyperliquid methods are available on Chainstack, as the open-source node implementation does not support them yet — see Hyperliquid methods for the full availability breakdown.
ots_getBlockTransactions JSON-RPC method retrieves paginated transactions for a specific block on the Hyperliquid EVM blockchain. This Otterscan-specific method optimizes data transfer by removing verbose fields like logs and providing pagination support for blocks with many transactions.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
- block number (integer, required): The block number to retrieve transactions from
- page number (integer, required): The page number to retrieve (0-indexed)
- page size (integer, required): The number of transactions per page
Response
The method returns a paginated response with transaction data and receipts.Response structure
fullblock— the complete block informationnumber— block numberhash— block hashparentHash— parent block hashtimestamp— block timestampgasLimit— block gas limitgasUsed— total gas usedbaseFeePerGas— base fee per gas
receipts— array of transaction receipts (simplified, without logs)transactionHash— hash of the transactionstatus— success status (0x1 for success, 0x0 for failure)cumulativeGasUsed— cumulative gas used up to this transactiongasUsed— gas used by this transactioneffectiveGasPrice— actual gas price paidcontractAddress— contract address created (if applicable)
txs— array of transactions for the requested page- Standard transaction fields (hash, from, to, value, input, etc.)
Usage example
curl -X POST https://hyperliquid-mainnet.core.chainstack.com/4f8d8f4040bdacd1577bff8058438274/evm \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "ots_getBlockTransactions",
"params": [1000, 0, 10],
"id": 1
}'
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("YOUR_CHAINSTACK_ENDPOINT"))
# ots_getBlockTransactions is an Otterscan method, so call it through the raw provider.
response = w3.provider.make_request("ots_getBlockTransactions", [1000, 0, 10])
print(response["result"])
import { JsonRpcProvider } from "ethers";
const provider = new JsonRpcProvider("YOUR_CHAINSTACK_ENDPOINT");
// ots_getBlockTransactions is an Otterscan method, so send it as a raw request.
const result = await provider.send("ots_getBlockTransactions", [1000, 0, 10]);
console.log(result);
import { createPublicClient, http } from "viem";
const client = createPublicClient({
transport: http("YOUR_CHAINSTACK_ENDPOINT"),
});
// ots_getBlockTransactions is an Otterscan method, so issue it as a raw request.
const result = await client.request({
method: "ots_getBlockTransactions",
params: [1000, 0, 10],
});
console.log(result);
Use your own endpoint in your code. The code examples use a placeholder Chainstack endpoint (YOUR_CHAINSTACK_ENDPOINT) — replace it with your own Hyperliquid node endpoint from the Chainstack console. The curl above uses a shared public endpoint for quick checks only; do not use it in production.
Example response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"fullblock": {
"number": "0x3e8",
"hash": "0xe8399bf41516f5ca663c79bc30db02b4989385c2f3a96f42958dea5753cbf4a9",
"parentHash": "0x7c8f6a0e4d3b2a1c9e5f8b7d4a6c3e9f2b8d5a7c1e4f9b3a6d8c2e5f7a9b4c6d",
"timestamp": "0x6734e8d0",
"gasLimit": "0x1c9c380",
"gasUsed": "0xa410",
"baseFeePerGas": "0x7"
},
"receipts": [
{
"transactionHash": "0xf94f3d2ed5b59aefb6a0e566af8e86552014d84f6ed2f38a1366dedffe723381",
"status": "0x1",
"cumulativeGasUsed": "0x5208",
"gasUsed": "0x5208",
"effectiveGasPrice": "0x3b9aca00",
"contractAddress": null
}
],
"txs": [
{
"hash": "0xf94f3d2ed5b59aefb6a0e566af8e86552014d84f6ed2f38a1366dedffe723381",
"from": "0x1234567890abcdef1234567890abcdef12345678",
"to": "0x5555555555555555555555555555555555555555",
"value": "0xde0b6b3a7640000",
"gas": "0x5208",
"gasPrice": "0x3b9aca00",
"input": "0x",
"nonce": "0x0",
"transactionIndex": "0x0"
}
]
}
}
Pagination example
To retrieve all transactions from a large block:// Page 0: transactions 0-9
params: [1000, 0, 10]
// Page 1: transactions 10-19
params: [1000, 1, 10]
// Page 2: transactions 20-29
params: [1000, 2, 10]
Use cases
Theots_getBlockTransactions method is essential for:
- Block explorers: Display transaction lists with pagination controls
- Large block handling: Efficiently process blocks with many transactions
- Performance optimization: Reduce bandwidth by excluding verbose log data
- Transaction indexing: Build transaction databases with pagination
- API rate limiting: Control data flow with page-based retrieval
- Mobile applications: Optimize data usage with smaller response sizes
- Real-time monitoring: Process new blocks transaction by transaction
- Data analysis: Systematically analyze all transactions in blocks
- Archive services: Export block transaction data in manageable chunks
- User interfaces: Implement infinite scroll or pagination in dApps
Body
application/json
JSON-RPC version
Available options:
2.0 The RPC method name
Available options:
ots_getBlockTransactions Parameters: [block number, page, page size]
Request identifier
Last modified on June 24, 2026
Was this page helpful?