diff --git a/main.go b/main.go
index 0d66446250537ae2e98a10fb0a47cec520df1586..2cc2e1b8f917efcdaf2e541567d188697d8b3dee 100644
--- a/main.go
+++ b/main.go
@@ -51,12 +51,12 @@ type ApiError struct {
 	Message string `json:"message"`
 }
 
-type ResultObject struct {
+type VolumeStatus struct {
 	State  []string `json:"state"`
 	Errors []string `json:"errors"`
 }
 
-type ResultSensor struct {
+type Sensor struct {
 	Name  string `json:"name"`
 	Value string `json:"value"`
 	State string `json:"state"`
@@ -65,6 +65,10 @@ type ResultSensor struct {
 	Type  string `json:"type"`
 }
 
+type LicenseInfo struct {
+	DaysLeft string `json:"license_days_left"`
+}
+
 type Exporter struct {
 	URI    string
 	mutex  sync.Mutex
@@ -72,13 +76,14 @@ type Exporter struct {
 
 	apiReachable float64
 
-	up             *prometheus.Desc
-	scrapeFailures  prometheus.Counter
-	volumeOnline   *prometheus.Desc
-	jbodStatus	   *prometheus.Desc
-	jbodTemp       *prometheus.Desc
-	jbodVoltage	   *prometheus.Desc
-	jbodSlotStatus *prometheus.Desc
+	up             	*prometheus.Desc
+	scrapeFailures 	 prometheus.Counter
+	volumeOnline   	*prometheus.Desc
+	jbodStatus	   	*prometheus.Desc
+	jbodTemp       	*prometheus.Desc
+	jbodVoltage	   	*prometheus.Desc
+	jbodSlotStatus 	*prometheus.Desc
+	licenseDaysLeft	*prometheus.Desc
 }
 
 func NewExporter(uri string) *Exporter {
@@ -124,6 +129,12 @@ func NewExporter(uri string) *Exporter {
 			[]string{"jbod", "slot", "state"},
 			nil,
 		),
+		licenseDaysLeft: prometheus.NewDesc(
+			prometheus.BuildFQName(namespace, "license", "days_left"),
+			"License days left.",
+			nil,
+			nil,
+		),
 		client: &http.Client{
 			Transport: &http.Transport{
 				TLSClientConfig: &tls.Config{InsecureSkipVerify: *insecure},
@@ -187,6 +198,12 @@ func (e *Exporter) collect(ch chan<- prometheus.Metric) error {
 		}
 	}
 
+	// License
+	err = e.getLicenseInfo(ch)
+	if err != nil {
+		err = fmt.Errorf("getLicenseInfo(): %v", err)
+	}
+
 	return err
 }
 
@@ -206,12 +223,12 @@ func (e *Exporter) getVolumeStatus(ch chan<- prometheus.Metric, volume string) e
 	apiResponse, err := e.queryApi(ch, "volume", "get_status", []string{volume}); if err != nil { return err }
 	apiResult, err := json.Marshal(apiResponse.Result); if err != nil { return err }
 
-	var result = new(ResultObject)
-	err = json.Unmarshal(apiResult, &result); if err != nil { return err }
+	var volumeStatus = new(VolumeStatus)
+	err = json.Unmarshal(apiResult, &volumeStatus); if err != nil { return err }
 
 	var volumeOnline float64 = 0
-	if len(result.State) > 0 {
-		if result.State[0] == "ONLINE" { volumeOnline = 1 }
+	if len(volumeStatus.State) > 0 {
+		if volumeStatus.State[0] == "ONLINE" { volumeOnline = 1 }
 	}
 
 	ch <- prometheus.MustNewConstMetric(e.volumeOnline, prometheus.GaugeValue, volumeOnline, volume)
@@ -235,7 +252,7 @@ func (e *Exporter) getJBODSensors(ch chan<- prometheus.Metric, jbod string) erro
 	apiResponse, err := e.queryApi(ch, "jbod", "get_sensors", []string{jbod}); if err != nil { return err }
 	apiResult, err := json.Marshal(apiResponse.Result); if err != nil { return err }
 
-	var sensors []ResultSensor
+	var sensors []Sensor
 	err = json.Unmarshal([]byte(apiResult), &sensors)
 
 	for _, sensor := range sensors {
@@ -265,6 +282,20 @@ func (e *Exporter) getJBODSensors(ch chan<- prometheus.Metric, jbod string) erro
 	return err
 }
 
+func (e *Exporter) getLicenseInfo(ch chan<- prometheus.Metric) error {
+
+	apiResponse, err := e.queryApi(ch, "appliance", "get_license_info", []string{}); if err != nil { return err }
+	apiResult, err := json.Marshal(apiResponse.Result); if err != nil { return err }
+
+	var licenseInfo LicenseInfo
+	err = json.Unmarshal([]byte(apiResult), &licenseInfo)
+
+	daysLeft, _ := strconv.ParseFloat(licenseInfo.DaysLeft, 64)
+	ch <- prometheus.MustNewConstMetric(e.licenseDaysLeft, prometheus.GaugeValue, daysLeft)
+
+	return err
+}
+
 func (e *Exporter) queryApi(ch chan<- prometheus.Metric, object string, method string, params []string) (*ApiResponse, error) {
 
 	reqObject := &ApiRequest{