Perform WiFi network scanning from node via system tools

Usage no npm install needed!

<script type="module">
  import airportScan from '';



Perform WiFi network scanning from node on a Mac using airport.


$ npm install airport-scan


const scan = require('airport-scan')

.then(function (info) {})
.catch(function (err) {})


This tool will only work on Mac, because it uses the airport -s command to retrieve raw information.

The scan will first try airport, followed by the expected absolute location /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport. If neither of these exists, it will fail.

API reference

performScan() -> Promise(information)

Promise for information on found access points.

Return object is of the form:

  "accessPoints": [                   // List of access points found by the scan
      "id": 0,                        // Incremental numerical ID for the AP
      "security": [ {                 // Description of the securities in use by AP - can be null
        "protocol": "WPA2",           // Protocol
        "auth": "PSK",                // Auth encryption scheme
        "unicast": "AES",             // Unicast encryption scheme
        "group": "AES",               // Group (multicast) encryption scheme
        "raw": "WPA2(PSK/AES/AES)"    // Raw output formatted as by airport -s
      } ],
      "cc": "GB",                     // Country code reported - can be null
      "ht": true,                     // Is high-throughput mode enabled?
      "channel": ["2"],               // Channel (as [string] because sometimes '+1' etc)
      "rssi": -82,                    // RSSI (
      "bssid": "12:34:56:78:90:ab",   // BSSID (MAC address) for the AP
      "ssid": "Jack's Wifi"           // SSID reported
      "id": 1,
      "security": null,
      "cc": null,
      "ht": false,
      "channel": ["60", "+1"],
      "rssi": -83,
      "bssid": "12:34:56:78:90:ab",
      "ssid": "Jack's Open Wifi"
    // ...
  "commands": [                       // Reports the commands run to retrieve the raw data
    "airport -s"