QSO Dates

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 string
https://www.qsodates.com/api/v1/search?q=CQ+WW&api_key=qd_your_key_here
Headers
X-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.

Example
https://www.qsodates.com/api/v1/activities?type=Contest&country=United+States&page=1&limit=50&api_key=qd_your_key_here
ParameterWhereDescription
typequeryActivity type name (optional)
countryqueryCountry filter (optional)
bandqueryBand filter (optional)
pagequeryPage number (default 1)
limitqueryResults per page (default 50, max 200)
GET/activity/{id}

Full detail for a single activity by UUID.

Example
https://www.qsodates.com/api/v1/activity/550e8400-e29b-41d4-a716-446655440000?api_key=qd_your_key_here
ParameterWhereDescription
idpathActivity UUID
GET/search

Search activities by name, callsign, organizer, or description.

Example
https://www.qsodates.com/api/v1/search?q=CQ+WW&api_key=qd_your_key_here
ParameterWhereDescription
qquerySearch text (required for text search)
pagequeryPage number (optional)
limitqueryResults per page (optional)
GET/activity-types

List all activity types (Contest, POTA, SOTA, etc.).

Example
https://www.qsodates.com/api/v1/activity-types?api_key=qd_your_key_here
GET/schedule

Upcoming activities within a date range.

Example
https://www.qsodates.com/api/v1/schedule?from=2026-07-01&to=2026-12-31&api_key=qd_your_key_here
ParameterWhereDescription
fromqueryStart date ISO (optional)
toqueryEnd 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

401Unauthorized

Missing or invalid API key.

403Forbidden

Account is blocked.

404Not found

Activity does not exist.

429Too many requests

Daily API limit reached.

400Bad request

Invalid or missing query parameters.

Bulk download

Export all published activities as JSON or CSV from the downloads page. No API key required.