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

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

payload = {
"jsonrpc": "2.0",
"method": "txpool_content",
"params": [],
"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: 'txpool_content', params: [], 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' => 'txpool_content',
'params' => [

],
'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\": \"txpool_content\",\n \"params\": [],\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\": \"txpool_content\",\n \"params\": [],\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\": \"txpool_content\",\n \"params\": [],\n \"id\": 1\n}"

response = http.request(request)
puts response.read_body
{
  "jsonrpc": "<string>",
  "id": 123,
  "result": {
    "pending": {},
    "queued": {}
  }
}
Tempo API method that returns the contents of the transaction pool. This includes both pending and queued 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

None.

Response

  • result — object containing pending and queued transactions:
    • pending — object mapping addresses to their pending transactions (keyed by nonce)
    • queued — object mapping addresses to their queued transactions (keyed by nonce)
Each transaction object contains:
  • hash — transaction hash
  • nonce — sender’s nonce
  • from — sender address
  • to — recipient address
  • value — value in wei
  • gas — gas limit
  • gasPrice — gas price
  • input — transaction data

txpool_content code examples

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

const getTxpoolContent = async () => {
    const content = await provider.send("txpool_content", []);

    const pendingAddresses = Object.keys(content.pending);
    const queuedAddresses = Object.keys(content.queued);

    console.log(`Pending transactions from ${pendingAddresses.length} addresses`);
    console.log(`Queued transactions from ${queuedAddresses.length} addresses`);

    // Show details for pending transactions
    for (const [address, txs] of Object.entries(content.pending)) {
      console.log(`\nPending from ${address}:`);
      for (const [nonce, tx] of Object.entries(txs)) {
        console.log(`  Nonce ${nonce}: ${tx.hash}`);
        console.log(`    To: ${tx.to || 'Contract Creation'}`);
        console.log(`    Gas: ${parseInt(tx.gas, 16)}`);
      }
    }
  };

getTxpoolContent();
from web3 import Web3

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

result = web3.provider.make_request("txpool_content", [])
content = result['result']

pending_addresses = list(content['pending'].keys())
queued_addresses = list(content['queued'].keys())

print(f"Pending transactions from {len(pending_addresses)} addresses")
print(f"Queued transactions from {len(queued_addresses)} addresses")

# Show details for pending transactions
for address, txs in content['pending'].items():
    print(f"\nPending from {address}:")
    for nonce, tx in txs.items():
        print(f"  Nonce {nonce}: {tx['hash']}")
        print(f"    To: {tx.get('to', 'Contract Creation')}")
        print(f"    Gas: {int(tx['gas'], 16)}")
curl -X POST "CHAINSTACK_NODE_URL" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "txpool_content", "params": [], "id": 1}'

Body

application/json
jsonrpc
string
default:2.0
method
string
default:txpool_content
params
any[]
id
integer
default:1

Response

200 - application/json

Transaction pool content

jsonrpc
string
id
integer
result
object
Last modified on June 22, 2026