Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A node.js library for the SSL Labs API.

npm version Build Status Coverage Status dependencies npm downloads per month License

SSL Labs APIs expose the complete SSL/TLS server testing functionality in a programmatic fashion, allowing for scheduled and bulk assessment. We are making the APIs available to encourage site operators to regularly test their server configuration.


npm install node-ssllabs


var ssllabs = require("node-ssllabs");

ssllabs.scan("", function (err, host) {

Test Usage

Testing with Mocha and Should.js.

var ssllabs = require("node-ssllabs"),
	should = require("should");

describe("", function () {
	it("should get an A+", function (done) {
		ssllabs.scan("", function (err, host) {
			if (err) {
				throw err;
			host.endpoints.forEach(function (endpoint) {

Advanced Usage

var ssllabs = require("node-ssllabs");

	"host": "",
	"fromCache": true,
	"maxAge": 24
}, function (err, host) {
}); (err, info) {

	"host": "",
	"publish": true,
	"startNew": true,
	"all": "done"
}, function (err, host) {

	"host": "",
	"fromCache": true,
	"maxAge": 72,
	"all": "on",
	"ignoreMismatch": true
}, function (err, host) {

	"host": "",
	"s": "",
	"fromCache": true
}, function (err, endpointData) {

ssllabs.getStatusCodes(function (err, statusCodes) {

ssllabs.getRootCertsRaw(function (err, rootCertsRaw) {

	trustStore: 5
}, function (err, rootCertsRaw) {

ssllabs.getRootCerts(function (err, rootCerts) {

	trustStore: 5
}, function (err, rootCerts) {

Proxy all requests via a tunneling agent

As of version 1.1.0, this library will respect your HTTPS_PROXY environment variable and tunnel all requests to the specified URL. Compatible with all protocols supported by proxy-agent.

As of version 2.1.0, this library will set the proxy agent on each request it makes and will not override the global HTTP agent.


node-ssllabs is available under the MIT License.


  • add (more) support for access rate and rate limiting
  • incorporate new info field, newAssessmentCoolOff, to access rate and rate limiting
  • add option to specify an array of hosts to scan
  • figure out if the maxAge parameter is required with the fromCache parameter
  • make API version changeable (maybe?) with createClient()?

TODO for next minor release

  • have the scan function emit events for polling progress

TODO for next major release

  • promise-ify and modernize
  • refactor to be a Universal ES6 module that can be used client side and server side with the fetch and URL libraries
  • maintain support for using tunneling proxies (server side only?)

Change Log

2.1.0— April 16, 2020

  • set proxy agent on each HTTP request instead

2.0.0— April 10, 2020

  • dropping support for node 6 because eslint and nyc no longer support it

1.1.3— April 10, 2020

  • added User Agent header to all requests
  • improved error handling

1.1.2— May 22, 2019

  • refactored code to reduce cognitive complexity
  • increased test coverage

1.1.1— May 21, 2019

  • refactored code to eliminate some duplicate code
  • added test coverage reporting

1.1.0— May 4, 2019

1.0.2— May 3, 2019

  • smaller install
  • better testing
  • faster builds

1.0.1— May 3, 2019

  • call callback with error instead of throwing
  • normalized error handling code patterns
  • reordered tests so the fast tests run before the slow tests
  • added more tests for error handling in getEndpointData() and getRootCertsRaw()

1.0.0— May 3, 2019

  • moved async to dev dependency (as it should have been)
  • removed underscore dependency (was very lightly used)
  • added dependency on node v4.0.0 for Object.assign

0.6.0— May 2, 2019

  • updated API endpoint from v2 to v3
  • updated dependencies
  • switched from JSHint to eslint for syntax checking
  • fixed typos
  • added basic support for access rate and rate limiting to scan()
  • added support for the trustStore parameter to the getRootCertsRaw() call
  • added getRootCerts() call that returns the data as a plain-old object

0.5.0 — July 14, 2016

  • added support for new API call, getRootCertsRaw
  • improved testing with Mocha
  • improved normalizeOptions function
  • updated documentation

0.4.3 — May 1, 2015

  • removed requirement that maxAge must be set if fromCache is set
  • added check that fromCache is set if maxAge is set
  • fixed bug where NaN was accepted for the maxAge parameter

0.4.2 — April 27, 2015

  • added call to info before calling analyze in the scan function

0.4.1 — April 27, 2015

  • refactored scan function to use analyze function for dryness
  • improved test to ensure parallel scanning maintains context

0.4.0 — April 23, 2015

  • added option to only specify a hostname for scanning
  • added test for lost context in parallel scans
  • added test if startNew and fromCache options are both true
  • added additional parameter tests and verification

0.3.0 — April 21, 2015

0.2.0 — April 20, 2015

  • updated to work properly in other packages.

0.1.0 — April 20, 2015

  • added support for the getEndpointData api endpoint.
  • added support for the getStatusCodes api endpoint.
  • improved error handling and reporting.

0.0.1 — April 20, 2015

  • Initial version
  • supports two api endpoints, info and analyze


A node.js module for the SSL Labs API.




No packages published