Developer documentation
Ham Radio Events API
Read-only REST API for amateur radio activity data: contests, POTA, SOTA, DXpeditions, nets, and field days. Sign in to get your personal API key.
Authentication
Sign in and open the API portal to copy your key. Every request must include it.
Query stringhttps://www.qsodates.com/api/v1/search?q=CQ+WW&api_key=qd_your_key_here
HeadersX-API-Key: qd_your_key_here
Authorization: Bearer qd_your_key_here
Keys start with qd_. Do not use your login JWT as the API key.
Base URL
All API requests go to the public QSO Dates endpoint at www.qsodates.com.
https://www.qsodates.com/api/v1
Rate limits
20Requests per day
UTCResets midnight
1 keyPer signed-in user
Response headers include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. Requests without a valid key return 401.
Endpoints
All endpoints are GET and require your API key.
GET/activities
List published ham radio activities with optional filters and pagination.
Examplehttps://www.qsodates.com/api/v1/activities?type=Contest&country=United+States&page=1&limit=50&api_key=qd_your_key_here
| Parameter | Where | Description |
|---|
type | query | Activity type name (optional) |
country | query | Country filter (optional) |
band | query | Band filter (optional) |
page | query | Page number (default 1) |
limit | query | Results per page (default 50, max 200) |
GET/activity/{id}
Full detail for a single activity by UUID.
Examplehttps://www.qsodates.com/api/v1/activity/550e8400-e29b-41d4-a716-446655440000?api_key=qd_your_key_here
| Parameter | Where | Description |
|---|
id | path | Activity UUID |
GET/search
Search activities by name, callsign, organizer, or description.
Examplehttps://www.qsodates.com/api/v1/search?q=CQ+WW&api_key=qd_your_key_here
| Parameter | Where | Description |
|---|
q | query | Search text (required for text search) |
page | query | Page number (optional) |
limit | query | Results per page (optional) |
GET/activity-types
List all activity types (Contest, POTA, SOTA, etc.).
Examplehttps://www.qsodates.com/api/v1/activity-types?api_key=qd_your_key_here
GET/schedule
Upcoming activities within a date range.
Examplehttps://www.qsodates.com/api/v1/schedule?from=2026-07-01&to=2026-12-31&api_key=qd_your_key_here
| Parameter | Where | Description |
|---|
from | query | Start date ISO (optional) |
to | query | End date ISO (optional) |
Example response
Typical JSON from GET /activities:
{
"activities": [
{
"id": "uuid",
"name": "CQ WW DX Contest",
"type": "Contest",
"callsign": "W1AW",
"start_at": "2026-10-24T00:00:00Z",
"end_at": "2026-10-25T23:59:59Z",
"country": "United States",
"bands": ["160m", "80m", "40m"],
"modes": ["SSB", "CW"],
"website": "https://..."
}
],
"total": 1,
"page": 1,
"limit": 50
}Errors
401UnauthorizedMissing or invalid API key.
403ForbiddenAccount is blocked.
404Not foundActivity does not exist.
429Too many requestsDaily API limit reached.
400Bad requestInvalid or missing query parameters.
Bulk download
Export all published activities as JSON or CSV from the downloads page. No API key required.