# QRZ.com XML API — what a free account returns, and what a subscription adds

Captured 2026-08-02 on F4BPO's two accounts, same callsign looked up twice
within a minute. Kept because the difference is the answer to a question that
comes back regularly: *"someone told me their logger gets the 6-character
locator from QRZ without paying"*. It does not.

## Free account — `SubExp: non-subscriber`

```xml
<Callsign>
  <call>F4BPO</call>
  <fname>Gregory</fname>
  <name>Salaun</name>
  <addr2>Veigy-Foncenex</addr2>
  <country>France</country>
</Callsign>
<Session>
  <SubExp>non-subscriber</SubExp>
  <Message>A subscription is required to access the complete record.</Message>
</Session>
```

**Five fields.** No `grid`, no `lat`/`lon`, no `dxcc`, no zones, no email, no
street, no image.

## Subscriber — `SubExp: Sat Jul 3 21:45:38 2027`

```xml
<Callsign>
  <call>F4BPO</call>          <dxcc>227</dxcc>        <nickname>Greg</nickname>
  <fname>Gregory</fname>      <name>Salaun</name>
  <addr2>Veigy-Foncenex</addr2><zip>74140</zip>       <country>France</country>
  <lat>46.103333</lat>        <lon>6.290000</lon>     <grid>JN36dc</grid>
  <ccode>97</ccode>           <land>France</land>     <class>2</class>
  <codes>E</codes>            <qslmgr>Lotw, Buro, Direct</qslmgr>
  <email>…</email>            <u_views>56966</u_views>
  <bio>4414</bio>             <biodate>2026-07-08 15:30:58</biodate>
  <image>https://cdn-xml.qrz.com/o/f4bpo/F4BPO_Greg_png.jpg</image>
  <imageinfo>800:1200:221041</imageinfo>
  <moddate>2025-08-24 19:55:31</moddate>
  <eqsl>0</eqsl>              <mqsl>1</mqsl>          <lotw>1</lotw>
  <cqzone>14</cqzone>         <ituzone>27</ituzone>
  <geoloc>user</geoloc>       <name_fmt>Gregory "Greg" Salaun</name_fmt>
  <serial>1000134</serial>
</Callsign>
```

## Consequences

- **A free QRZ account can never fill the locator, the coordinates, the zones
  or the e-mail.** If someone reports a logger doing it on a free account, they
  are either using HamQTH (free, returns a 6-character `grid`) or they hold an
  XML subscription without realising it — the QRZ.com account and the "XML
  Logbook Data" subscription are sold separately. `SubExp` in the session block
  settles it in one request.
- **Profile edits take a few minutes to reach the XML feed.** Changing the grid
  on the website and looking the callsign up immediately returns the OLD value,
  which looks exactly like a stale cache. Re-test after a few minutes before
  suspecting the logger. (This cost an hour on 2026-08-02.)

## Fields OpsLog does not use yet

`qrz.go` maps call, name, addr1/2, zip, state, county, country, grid, lat, lon,
dxcc, cqzone, ituzone, cont, email, qslmgr and image. Left on the table:

- **`geoloc`** — `user` when the operator entered the position by hand, versus a
  geocoded value derived from the postal address. This is a direct statement of
  how much the coordinates and the locator can be trusted, and it is exactly
  the question the grid-precision rule in App.tsx tries to answer by comparing
  string lengths. Worth wiring if the locator ever misbehaves again.
- **`eqsl` / `mqsl` / `lotw`** — the station's QSL preferences as flags, more
  reliable than parsing the free-text `qslmgr`.
- `nickname` / `name_fmt`, `class`, `moddate`, `bio`.
