Skip to main content
POST
/
eth_getTransactionByBlockNumberAndIndex
curl --request POST \
  --url https://tempo-mainnet.core.chainstack.com/c3ce2925b51f1ed18719fe8a23bbdccf/ \
  --header 'Content-Type: application/json' \
  --data '
{
  "jsonrpc": "2.0",
  "method": "eth_getTransactionByBlockNumberAndIndex",
  "params": [
    "latest",
    "0x0"
  ],
  "id": 1
}
'
import requests

url = "https://tempo-mainnet.core.chainstack.com/c3ce2925b51f1ed18719fe8a23bbdccf/"

payload = {
"jsonrpc": "2.0",
"method": "eth_getTransactionByBlockNumberAndIndex",
"params": ["latest", "0x0"],
"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: 'eth_getTransactionByBlockNumberAndIndex',
params: ['latest', '0x0'],
id: 1
})
};

fetch('https://tempo-mainnet.core.chainstack.com/c3ce2925b51f1ed18719fe8a23bbdccf/', 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://tempo-mainnet.core.chainstack.com/c3ce2925b51f1ed18719fe8a23bbdccf/",
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' => 'eth_getTransactionByBlockNumberAndIndex',
'params' => [
'latest',
'0x0'
],
'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://tempo-mainnet.core.chainstack.com/c3ce2925b51f1ed18719fe8a23bbdccf/"

payload := strings.NewReader("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getTransactionByBlockNumberAndIndex\",\n \"params\": [\n \"latest\",\n \"0x0\"\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://tempo-mainnet.core.chainstack.com/c3ce2925b51f1ed18719fe8a23bbdccf/")
.header("Content-Type", "application/json")
.body("{\n \"jsonrpc\": \"2.0\",\n \"method\": \"eth_getTransactionByBlockNumberAndIndex\",\n \"params\": [\n \"latest\",\n \"0x0\"\n ],\n \"id\": 1\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://tempo-mainnet.core.chainstack.com/c3ce2925b51f1ed18719fe8a23bbdccf/")

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\": \"eth_getTransactionByBlockNumberAndIndex\",\n \"params\": [\n \"latest\",\n \"0x0\"\n ],\n \"id\": 1\n}"

response = http.request(request)
puts response.read_body
{
  "jsonrpc": "<string>",
  "id": 123,
  "result": {}
}
Tempo API method that returns information about a transaction by block number and transaction index position.
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

  • blockNumber — the block number (hex) or tag (latest, earliest, pending)
  • transactionIndex — the transaction index position (hex)

Response

  • result — the transaction object, or null if not found:
    • hash — transaction hash
    • nonce — sender’s transaction count
    • blockHash — hash of the containing block
    • blockNumber — block number
    • transactionIndex — index in the block
    • from — sender address
    • to — recipient address (null for contract creation)
    • value — value transferred in wei
    • gas — gas limit
    • gasPrice — gas price
    • input — transaction data
    • v, r, s — signature values

eth_getTransactionByBlockNumberAndIndex code examples

const ethers = require('ethers');
const NODE_URL = "CHAINSTACK_NODE_URL";
const provider = new ethers.JsonRpcProvider(NODE_URL);

const getTransactionByIndex = async (blockNumber, index) => {
    const tx = await provider.send("eth_getTransactionByBlockNumberAndIndex", [
      blockNumber,
      index
    ]);

    if (tx) {
      console.log(`Transaction at block ${blockNumber}, index ${parseInt(index, 16)}:`);
      console.log(`  Hash: ${tx.hash}`);
      console.log(`  From: ${tx.from}`);
      console.log(`  To: ${tx.to || 'Contract Creation'}`);
      console.log(`  Gas: ${parseInt(tx.gas, 16)}`);
    } else {
      console.log("Transaction not found");
    }
  };

// Get first transaction in latest block
getTransactionByIndex("latest", "0x0");
from web3 import Web3

node_url = "CHAINSTACK_NODE_URL"
web3 = Web3(Web3.HTTPProvider(node_url))

result = web3.provider.make_request("eth_getTransactionByBlockNumberAndIndex", [
    "latest",
    "0x0"
])

tx = result['result']
if tx:
    print(f"Transaction at latest block, index 0:")
    print(f"  Hash: {tx['hash']}")
    print(f"  From: {tx['from']}")
    print(f"  To: {tx.get('to', 'Contract Creation')}")
    print(f"  Gas: {int(tx['gas'], 16)}")
else:
    print("Transaction not found")
curl -X POST "CHAINSTACK_NODE_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_getTransactionByBlockNumberAndIndex",
    "params": ["latest", "0x0"],
    "id": 1
  }'

Body

application/json
jsonrpc
string
default:2.0
method
string
default:eth_getTransactionByBlockNumberAndIndex
params
any[]

Block number (hex) or tag, and transaction index position

id
integer
default:1

Response

200 - application/json

The transaction object

jsonrpc
string
id
integer
result
object | null

Transaction object or null if not found

Last modified on June 22, 2026