Skip to main content
POST
/
api
/
v2
/
ethereum
/
block
/
mev-bids
๐Ÿ’Ž MEV Bids
curl --request POST \
  --url https://beaconcha.in/api/v2/ethereum/block/mev-bids \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "block": {
    "view": "latest"
  },
  "chain": "mainnet",
  "page_size": 25
}
'
import requests

url = "https://beaconcha.in/api/v2/ethereum/block/mev-bids"

payload = {
"block": { "view": "latest" },
"chain": "mainnet",
"page_size": 25
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({block: {view: 'latest'}, chain: 'mainnet', page_size: 25})
};

fetch('https://beaconcha.in/api/v2/ethereum/block/mev-bids', 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://beaconcha.in/api/v2/ethereum/block/mev-bids",
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([
'block' => [
'view' => 'latest'
],
'chain' => 'mainnet',
'page_size' => 25
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://beaconcha.in/api/v2/ethereum/block/mev-bids"

payload := strings.NewReader("{\n \"block\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\",\n \"page_size\": 25\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
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://beaconcha.in/api/v2/ethereum/block/mev-bids")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"block\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\",\n \"page_size\": 25\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://beaconcha.in/api/v2/ethereum/block/mev-bids")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"block\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\",\n \"page_size\": 25\n}"

response = http.request(request)
puts response.read_body
{
  "data": [
    {
      "relay": "<string>",
      "builder_pubkey": "<string>",
      "value": "<string>",
      "slot_offset_ms": 123,
      "relay_received_at": 123,
      "won": true,
      "block_number": 1,
      "block_hash": "<string>",
      "parent_hash": "<string>",
      "source": "get_header",
      "optimistic_submission": true
    }
  ],
  "ready": true,
  "paging": {
    "next_cursor": "<string>"
  }
}
{
"error": "Bad request. Please check your input and try again."
}
{
"error": "Unauthorized. Please provide a valid API key."
}
{
"error": "endpoint not allowed for your subscription tier. upgrade your subscription at https://beaconcha.in/pricing."
}
{
"error": "The requested resource was not found."
}
{
"error": "method not allowed: GET. all public API endpoints use POST."
}
{
"error": "Rate limit exceeded. Please try again later."
}
{
"error": "internal server error. please try again later."
}
{
"error": "An unexpected error occurred."
}

Authorizations

Authorization
string
header
required

Authorization header with value: Bearer YOUR_TOKEN. Refer to the API Keys section to create your API key.

Body

application/json
block
Number ยท object
required

Specify a block using one of the following methods.

  • Block number
  • View: "latest" or "finalized"
chain
enum<string>
default:mainnet

The Ethereum chain to query.

Available options:
mainnet,
hoodi
slot_offset_ms_range
object

Inclusive bounds (in milliseconds relative to slot start) used to filter bids by their slot offset. Either bound may be omitted or null to leave that side unbounded.

cursor
string
default:""

Cursor value for pagination. See our pagination guide for more details.

page_size
integer
default:25

The number of bids to return per page.

Required range: 1 <= x <= 200

Response

Successful response.

Paginated response containing the relay bid ladder for the block's slot.

data
object[]
required
ready
boolean
required

true when the underlying data pipeline has fully processed this slot and the result is definitive. false when the slot falls within the pipeline lag window (roughly 4 hours behind the chain head) โ€” the empty response reflects current pipeline state and may change when the exporter catches up.

paging
object