This repository contains the code for an interactive visualization of the general frequency allocations based on the ITU Radio Regulations, Edition of 2024, based on the famous US frequency allocation map
It contains the data of Region 1 [Europe, Africa, Middle East, CIS], Region 2 [Americas], and Region 3 [Asia-Pacific] and has the following services:
- Aeronautical mobile
- Aeronautical mobile (OR)
- Aeronautical mobile-satellite
- Aeronautical mobile-satellite (OR)
- Aeronautical radionavigation
- Aeronautical radionavigation-satellite
- Amateur
- Amateur-satellite
- Broadcasting
- Broadcasting-satellite
- Earth exploration-satellite
- Fixed
- Fixed-satellite
- Inter-satellite
- Land mobile
- Land mobile-satellite
- Maritime mobile
- Maritime mobile-satellite
- Maritime radionavigation
- Maritime radionavigation-satellite
- Meteorological aids
- Meteorological-satellite
- Mobile
- Mobile-satellite
- Radionavigation
- Radionavigation-satellite
- Radio astronomy
- Radiodetermination-satellite
- Radiolocation
- Space operation
- Space research
- Standard frequency and time signal
- Standard frequency and time signal-satellite
- Wireless power transmission
Source: ITU Radio Regulations, 2024 Edition, Articles 1 and 5.
The allocation dataset is exposed in two ways:
GET https://spectrum.vdesmond.com/api/v1/allocations.json
Complete unfiltered dataset with all ITU regions (1–3), 9 kHz – 275 GHz.
GET https://spectrum.vdesmond.com/api/v1/allocations
All query parameters are optional and combinable:
| Parameter | Type | Description |
|---|---|---|
region |
R1 | R2 | R3 |
ITU region. Always includes ALL entries plus the region-specific ones. Comma-separated for multiple: R1,R2 |
services |
string |
Service name(s), comma-separated. OR logic, case-insensitive partial match. e.g. AMATEUR or AMATEUR,FIXED |
freq_start |
number (kHz) |
Lower bound. Keeps allocations where freq_end >= freq_start. |
freq_end |
number (kHz) |
Upper bound. Keeps allocations where freq_start <= freq_end. Combine with freq_start to filter by overlap. |
Response includes an X-Total-Count header with the number of matched records.
Examples:
# Full unfiltered dataset (static)
curl "https://spectrum.vdesmond.com/api/v1/allocations.json"
# HF amateur allocations in Region 1 (3–30 MHz)
curl "https://spectrum.vdesmond.com/api/v1/allocations?region=R1&services=AMATEUR&freq_start=3000&freq_end=30000"
# Check matched record count via response header
curl -I "https://spectrum.vdesmond.com/api/v1/allocations?region=R3&services=BROADCASTING"
# → X-Total-Count: 42[
{
"freq_start": 9.0,
"freq_end": 11.3,
"region": "ALL",
"services": ["METEOROLOGICAL AIDS", "RADIONAVIGATION"],
"is_primary": [true, true],
"footnotes": ["5.54A"]
},
...
]| Field | Type | Description |
|---|---|---|
freq_start |
number |
Start frequency in kHz |
freq_end |
number |
End frequency in kHz |
region |
"ALL" | "R1" | "R2" | "R3" |
ALL = identical across regions |
services |
string[] |
Allocated radio services |
is_primary |
boolean[] |
true = PRIMARY, false = secondary |
footnotes |
string[] |
ITU RR Article 5 footnote references |
React, Vite, D3, Framer
Application code is licensed under the MIT License.
The frequency allocation data is derived from the ITU Radio Regulations, 2024 Edition (© ITU), reproduced for informational and educational purposes. It is not sublicensed under MIT. Do not use it for regulatory or operational purposes and cross-reference with the official ITU RR for authoritative information.