Skip to content

Ethereum method

eth_feeHistory

Returns historical base fees and priority-fee percentiles over a block range.

moderateModerate: reads state or executes code, but over a bounded range.Primary specification (opens in a new tab)

How each provider handles it

9 providers

Provider support for eth_feeHistory on Ethereum
ProviderStatusSuccessMedian
PublicNodeSupported100.0%21 ms
TenderlySupported100.0%28 ms
dRPCSupported99.4%46 ms
MEV BlockerSupported99.9%49 ms
NodeRealSupported100.0%88 ms
Blast APISupported99.4%104 ms
MerkleRate limited5.3%107 ms
1RPConerpcRate limited1.8%1212 ms
CloudflareFailing0.0%—

Success excludes calls the provider does not implement — an optional method a provider declines to offer is a capability fact, not a failure, and is never scored as one.

Over time

Median latency per day. Gaps are periods with no measurement, drawn as gaps rather than joined across — a line through missing data invents a measurement that was never taken.

Logarithmic scale — each gridline is ten times the one below it. Click a provider in the legend to hide it. 1 provider is not plotted: they returned no successful response in this window, so they have no latency.

When it degraded

A degradation is a bucket where a provider fell away from ITS OWN median for this method over the window, not from the cohort's. A provider that is consistently slower than its peers is not degraded — it is slower, which the ranking already says. Buckets with fewer than 20 samples are skipped, because a claim about a provider cannot rest on a handful of calls, and adjacent bad buckets are merged so one outage reads as one incident.

1RPC

  • median rose to 2549ms from a typical 1005ms

    latency · 2026-10-02 00:00Z → 2026-10-03 00:00Z

What it does

The EIP-1559 fee oracle. It returns the base fee for each block in the range — plus one extra for the next block — the fraction of gas each block used, and, if percentiles are requested, the effective priority fee at each of them.

This is what a wallet actually uses to suggest a fee. `gasUsedRatio` shows whether blocks are full, which is what drives the base fee up or down.

Parameters

blockCountQUANTITYrequired
How many blocks to return, in hex. Must be greater than zero.
newestBlockQUANTITY | TAGrequired
The newest block in the range, or latest.
rewardPercentilesArray of numbersoptional
Percentiles between 0 and 100. Omit and reward is not returned at all.

Returns

Object with oldestBlock, baseFeePerGas, gasUsedRatio, and reward when percentiles were requested.

Try it

Runnable as written, against a keyless public endpoint. Nothing here needs an API key.

Request

curl -s https://ethereum-rpc.publicnode.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","method":"eth_feeHistory","params":["0x5","latest",[20,50,80]],"id":1}'

As JSON-RPC

{
  "jsonrpc": "2.0",
  "method": "eth_feeHistory",
  "params": ["0x5", "latest", [20, 50, 80]],
  "id": 1
}

Response

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "oldestBlock": "0x10b52f",
    "baseFeePerGas": ["0x3fa63a3f", "0x37f999ee", "0x3e36f20a"],
    "gasUsedRatio": [0.0177, 0.9459, 0.6535],
    "reward": [["0x3b9aca00", "0x59682f00"], ["0x3a13012", "0x3a13012"]]
  }
}

Things that bite

  • baseFeePerGas has one more entry than blockCount: the last is the base fee for the block after the newest, which is the one a caller is about to pay.
  • Since Dencun, nodes may also return baseFeePerBlobGas and blobGasUsedRatio. Their absence is not an error.

Why it is measured

It reads a bounded range of recent blocks, so it costs meaningfully more than a single header fetch without being as unbounded as a log query.

Called every 300 seconds per endpoint, with jitter so the fleet does not hit a provider in lockstep.

7d window · generated 2026-10-08 18:55:18 UTC · 9 providers