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_status | A = Active, E = Expired, C = Cancelled, T = Terminated |
| operator_class | N = Novice, T = Technician, G = General, A = Advanced, E = Extra, C = Club |
| grant_date / expired_date | Date format: MM/DD/YYYY |
| frn | FCC Registration Number |
| trustee_call_sign | For club/RACES licenses — the individual trustee's callsign |
| previous_call_sign | Prior callsign if the licensee has changed callsigns |
| history[].code | FCC action codes, e.g. LIGRNT (grant), LIREN (renewal), CANCEL (cancellation) |
Error Responses
| Status | Meaning |
|---|---|
| 400 | Missing or invalid parameter |
| 404 | Callsign not found |
| 503 | Database not yet available (initial ingest in progress) |