Vail ReRBN API Documentation

Welcome to the Vail ReRBN API! Access real-time and historical ham radio spot data from the Reverse Beacon Network.

No Authentication

All endpoints are freely accessible. Start using the API immediately.

100 Requests/Minute

Generous rate limits for monitoring and data analysis.

Real-Time Data

Live spots from RBN telnet servers, updated continuously.

Try it now

Test the API interactively with our visual query builder

Open API Playground →

Your First API Call

Get the most recent spots for W1AW:

Search for W1AW on 20m CW
curl "https://vailrerbn.com/api/v1/spots?call=W1AW&mode=CW&band=20m"
Search for W1AW on 20m CW
import requests

response = requests.get(
    "https://vailrerbn.com/api/v1/spots",
    params={
        "call": "W1AW",
        "mode": "CW",
        "band": "20m"
    }
)
data = response.json()
print(f"Found {data['total']} spots")

for spot in data["spots"]:
    grid = spot.get('grid', 'Unknown')
    print(f"{spot['callsign']} ({grid}) on {spot['frequency']} kHz")
Search for W1AW on 20m CW
const params = new URLSearchParams({
  call: 'W1AW',
  mode: 'CW',
  band: '20m'
});

const response = await fetch(
  `https://vailrerbn.com/api/v1/spots?${params}`
);
const data = await response.json();

console.log(`Found ${data.total} spots`);

data.spots.forEach(spot => {
  const grid = spot.grid || 'Unknown';
  console.log(`${spot.callsign} (${grid}) on ${spot.frequency} kHz`);
});
Search for W1AW on 20m CW
<?php
$params = http_build_query([
    'call' => 'W1AW',
    'mode' => 'CW',
    'band' => '20m'
]);

$response = file_get_contents(
    "https://vailrerbn.com/api/v1/spots?$params"
);
$data = json_decode($response, true);

echo "Found {$data['total']} spots\n";

foreach ($data['spots'] as $spot) {
    echo "{$spot['callsign']} on {$spot['frequency']} kHz\n";
}
Search for W1AW on 20m CW
require 'net/http'
require 'json'

uri = URI('https://vailrerbn.com/api/v1/spots')
uri.query = URI.encode_www_form({
  call: 'W1AW',
  mode: 'CW',
  band: '20m'
})

response = Net::HTTP.get(uri)
data = JSON.parse(response)

puts "Found #{data['total']} spots"

data['spots'].each do |spot|
  puts "#{spot['callsign']} on #{spot['frequency']} kHz"
end

Find recent spots for W1AW on the 20-meter band in CW mode

Continue to Quickstart Tutorial →

Base URL

https://vailrerbn.com/api/v1

All API endpoints use this base URL. Responses are JSON with ISO 8601 UTC timestamps.

Rate Limits

Limit Window
100 requests 1 minute

Rate limit headers are included in all responses:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1704825600

Explore the Documentation

Quickstart Tutorial

Get started in 5 minutes with step-by-step examples

API Endpoints

Complete reference for all 7 endpoints with examples in 5 languages

How-To Guides

Common use cases like real-time monitoring, band analysis, and data export

Pagination Guide

Visual explanation of offset vs cursor-based pagination

Troubleshooting

Common errors and solutions

Glossary

RBN and API terminology explained

What is the Reverse Beacon Network?

The Reverse Beacon Network (RBN) is a network of automated receiving stations (skimmers) around the world that listen to amateur radio bands and report which stations they hear, when, and how strong the signals are. It's like having thousands of listening posts monitoring propagation 24/7.

Vail ReRBN aggregates this data and makes it searchable through a simple REST API, perfect for:

  • Monitoring specific callsigns in real-time
  • Analyzing band conditions and propagation
  • Contest logging and score verification
  • Station performance analysis
  • DX alerting and notifications

Learn more about RBN →