debug_getRawBlock
curl --request POST \
--url https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154 \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_getRawBlock",
"params": [
"latest"
]
}
'import requests
url = "https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_getRawBlock",
"params": ["latest"]
}
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({id: 1, jsonrpc: '2.0', method: 'debug_getRawBlock', params: ['latest']})
};
fetch('https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154', 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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154",
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([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'debug_getRawBlock',
'params' => [
'latest'
]
]),
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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getRawBlock\",\n \"params\": [\n \"latest\"\n ]\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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getRawBlock\",\n \"params\": [\n \"latest\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
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 \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getRawBlock\",\n \"params\": [\n \"latest\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": "<string>"
}Arbitrum node API
debug_getRawBlock | Arbitrum
Arbitrum API method that returns the RLP-encoded block data for a given block number or tag. Available on Arbitrum via Chainstack.
POST
/
66f812de2a6724a75a51f60dd6f2a154
debug_getRawBlock
curl --request POST \
--url https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154 \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "debug_getRawBlock",
"params": [
"latest"
]
}
'import requests
url = "https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_getRawBlock",
"params": ["latest"]
}
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({id: 1, jsonrpc: '2.0', method: 'debug_getRawBlock', params: ['latest']})
};
fetch('https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154', 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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154",
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([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'debug_getRawBlock',
'params' => [
'latest'
]
]),
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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getRawBlock\",\n \"params\": [\n \"latest\"\n ]\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://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getRawBlock\",\n \"params\": [\n \"latest\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nd-954-882-037.p2pify.com/66f812de2a6724a75a51f60dd6f2a154")
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 \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"debug_getRawBlock\",\n \"params\": [\n \"latest\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": "<string>"
}Arbitrum API method that returns the RLP-encoded block data for a given block number or tag. The response includes the complete block in its raw encoded format, including the header and all transactions. This method is useful for low-level block analysis and custom block processing.
Learn how to deploy a node with the debug and trace API methods enabled.
This method is available for post-Nitro blocks only (block 22,207,815 and later). For pre-Nitro blocks, use the
arbtrace_* methods instead.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
quantity or tag— the block number in hex format or block tag (latest,earliest,pending,safe,finalized).
Response
data— the RLP-encoded block data as a hex string, including the header and all transactions.
debug_getRawBlock code examples
const ethers = require('ethers');
const NODE_URL = "YOUR_CHAINSTACK_ENDPOINT";
const provider = new ethers.JsonRpcProvider(NODE_URL);
const debugGetRawBlock = async (block) => {
const result = await provider.send("debug_getRawBlock", [block]);
console.log(result);
};
debugGetRawBlock("latest");
from web3 import Web3
node_url = "YOUR_CHAINSTACK_ENDPOINT"
web3 = Web3(Web3.HTTPProvider(node_url))
result = web3.provider.make_request('debug_getRawBlock', ["latest"])
print(result)
Use case
Thedebug_getRawBlock method is useful for applications that need to process or archive raw block data. Developers building custom block explorers, data pipelines, or cross-chain verification tools can use this method to retrieve the complete block in its serialized format for custom parsing and analysis.Last modified on June 22, 2026
Was this page helpful?