Querying SharePoint Term store with REST API and I’m not joking..

If you are a seasoned SharePoint developer then I wont be surprised if you question the credibility of this blog post title — Querying Term store with REST API, because for most of your life you have gone through the pain of using JSOM to deal with term store because that was the only way to do it. 
You had to suffer from the SharePoint client side libraries (SP.Taxomony.js, one of the few to mention) and their dependencies before you could even start to solve the problem you wanted to. All your code was using REST API to interact with SharePoint and there was this widely accepted solution using JSOM to get what you needed from Term Store. I’m not saying its bad, but deep down you miss beautiful REST API for Term stores.

Below is quite a simple approach ( which Microsoft hasn’t documented to use for external applications ) to query term store using REST API.

More info here ..

Its for you to take a decision to use it or not.

Its a simple POST request to one of the internal service (which will probably not be taken out by MS because they happen to use it internally). 
Below is sample code to get all terms from a term set.

$.ajax({
url:"https://<your-tenant>.sharepoint.com/_vti_bin/TaxonomyInternalService.json/GetChildTermsInTermSetWithPaging",
type:"POST",
headers: {
"accept":"application/json;odata.metadata=minimal",
"content-type": "application/json;charset=utf-8",
"odata-version":"4.0",
"X-RequestDigest": $("#__REQUESTDIGEST").val()

},
data:JSON.stringify({
lcid: 1033,
sspId: "guid-here", //Term store ID
guid: "guid-here", //Term set ID
includeDeprecated: false,
pageLimit: 1000,
pagingForward: false,
includeCurrentChild: false,
currentChildId: "00000000–0000–0000–0000–000000000000",
webId: "00000000–0000–0000–0000–000000000000",
listId: "00000000–0000–0000–0000–000000000000"
}),
success:function(data){
console.log("Rejoice, for now you can use REST",data);
}
})