Telia data plan

Fetching total and remaining data on a Telia mobile subscription.

The following homeyscript will login and parse the total GB and remaining GB of your Telia mobile subscription. Name it telia.js, or similar:

const between = function(str, strf, strt) {
    return str.split(strf).pop().split(strt)[0].trim();
}

if (args.length === 0) {
    throw new Error("Cannot run without arguments. Format is:  mobilenumber;password")
}

let a = args[0].split(';')
let mobile = a[0].trim()
let password = a[1].trim()

let postbody = {
    "Username": mobile,
    "Password": password
}
let cookie = "cookieConsentLevel=3; ROUTEID_CSS=.NCNO-1; ROUTEID_RECSS=.NCNO-1; _gcl_au=1.1.1071439771.1588404619; _gid=GA1.2.693156927.1588404620; _fbp=fb.1.1588404619754.1570612504; _dc_gtm_UA-3214365-1=1; _hjid=8ca343c8-c972-4794-8ff6-7156d0adb5d5; nmstat=1588404710200; _scid=bb633357-5e50-42b9-b694-ba82d0a707ac; _ga=GA1.1.1888154566.1588404619; _ga_75H3PZJWHY=GS1.1.1588404619.1.0.1588404621.58"
const response = await fetch("https://min-side.telia.no/re/api/mssa-proxy/no/rs/auth/basic?goToMinbedrift=false", {
  "headers": {
    "accept": "application/json",
    "accept-language": "nb-NO,nb;q=0.9,no;q=0.8,nn;q=0.7,en-US;q=0.6,en;q=0.5",
    "authorization": "Basic bXNzYS1wcm94eS11c2VyOnJmVGV0VzVQblA=",
    "cache-control": "no-cache",
    "client-id": "css",
    "content-type": "application/json",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "cookie": cookie
  },
  "referrer": "https://min-side.telia.no/re/login?CT_ORIG_URL=https%3A%2F%2Fwww.telia.no%2Fmin-side",
  "referrerPolicy": "no-referrer-when-downgrade",
  "body": JSON.stringify(postbody),
  "method": "POST",
  "mode": "cors"
});

//console.log("Response", response)

let raw = response.headers.raw()['set-cookie']
let rawd = raw[0].split(';')
let session = null
rawd.forEach(el => {
    let dc = el.split('=')
    if (dc[0] === 'CTSESSION') {
        session = dc[1]
    }
})

cookie += '; CTSESSION=' + session


const response2 = await fetch("https://www.telia.no/forbruk/?ts=1588404892199", {
  "headers": {
    "accept": "*/*",
    "accept-language": "nb-NO,nb;q=0.9,no;q=0.8,nn;q=0.7,en-US;q=0.6,en;q=0.5",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "x-requested-with": "XMLHttpRequest",
    "cookie": cookie
  },
  "referrer": "https://www.telia.no/forbruk/",
  "referrerPolicy": "no-referrer-when-downgrade",
  "body": null,
  "method": "GET",
  "mode": "cors"
});
const body = await response2.text()

let total = between(body, '<p class="donut-chart__value">', '</p><p class="donut-chart__value-caption">igjen av totalt</p>')
let remaining = between(body, '<p class="donut-chart__value-caption">', '</p></div></div></div></div></div><div class="chart-legend__container">')
// console.log(body)

let tot = parseFloat(total.split(' ')[0] )
let rem = parseFloat(remaining.split(' ')[0])

console.log("total "+ tot)
console.log("remaining " + rem)

await setTagValue("telia_" + mobile + "_tot", {type: 'number', title:'Telia [' + mobile + '] total'}, tot)
await setTagValue("telia_" + mobile + "_rem", {type: 'number', title:'Telia [' + mobile + '] remaining'}, rem)

return true

In order to update data, create a flow like this:

Example flow fetching subscription data for three mobile subscriptions

The homeyscript above takes one paramter in this format: 12345678;password

The number is your mobile number, and the password is your password in Telia minside. If you enter wrong password a few subsequent attempts, Telia will block your password, and you will need to reset the password.

The homeyscript will create a tag for the total available data for this month, and another tag for the remaining data for this month.

The flow above add a Logic Set numeric variable to store the results.

Logic view showing total and remaining data plans in GB.

Last updated

Was this helpful?