Developer Reference

CallsignTools API

Free, no authentication required. All endpoints return JSON. CORS enabled for all origins.

Base URL: https://callsigntools.com  ·  Rate limiting may be introduced in the future with fair-use API keys.
GET /api/callsign/{callsign}

Look up a single callsign by exact match. Returns full license details and history.

Example Request

GET https://callsigntools.com/api/callsign/W1AW

Example Response

{
  "unique_system_identifier": 1234567,
  "call_sign": "W1AW",
  "license_status": "A",
  "grant_date": "01/01/2020",
  "expired_date": "01/01/2030",
  "entity_name": "ARRL INC",
  "street_address": "225 MAIN ST",
  "city": "NEWINGTON",
  "state": "CT",
  "zip_code": "06111",
  "operator_class": "C",
  "frn": "0001234567",
  "history": [
    { "log_date": "01/01/2020", "code": "LIGRNT" },
    { "log_date": "12/15/2019", "code": "LIREN" }
  ]
}

GET /api/search?q={query}

Search licenses by callsign prefix, name, or city. Returns up to 50 results. History is not included in search results.

Parameter Type Description
q string Callsign prefix, name, or city. Case-insensitive.

Example Request

GET https://callsigntools.com/api/search?q=W1AW

Example Response

{
  "count": 2,
  "results": [
    {
      "call_sign": "W1AW",
      "license_status": "A",
      "entity_name": "ARRL INC",
      "city": "NEWINGTON",
      "state": "CT",
      "operator_class": "C",
      ...
    },
    ...
  ]
}

Field Reference

Field Description
license_statusA = Active, E = Expired, C = Cancelled, T = Terminated
operator_classN = Novice, T = Technician, G = General, A = Advanced, E = Extra, C = Club
grant_date / expired_dateDate format: MM/DD/YYYY
frnFCC Registration Number
trustee_call_signFor club/RACES licenses — the individual trustee's callsign
previous_call_signPrior callsign if the licensee has changed callsigns
history[].codeFCC action codes, e.g. LIGRNT (grant), LIREN (renewal), CANCEL (cancellation)

Error Responses

Status Meaning
400Missing or invalid parameter
404Callsign not found
503Database not yet available (initial ingest in progress)