Javascript class to geocode Dutch addresses
Using Promise when async/await is supported is a sign of an anti-pattern. The only case you ever manually build promise in an environment that supports async/await is when the asynchronous operation cannot be written linearly/when you can't await (e.g. resolve must be called in a callback).

// You cannot really "await" this kind of API, hence the wrapper Promise.
foo() {
  return new Promise((resolve, reject){
    someAPIThatOnlyDoesCallbacks((err, data) =&gt; {
      if (err) reject(err)
      else resolve(data)
    })
  })
}


But in your case, fetch returns a promise, response.json() also returns a promise. You can just return the promise generated by the whole fetch operation itself.

_get(url) {
  return fetch(url).then(r =&gt; r.json())
}


Next, consider using Url and UrlSearchParams to construct your url. This way, the url is constructed correctly. 

async suggest(url, param1, param2, ....){
  // Create the url
  const url = new URL(url)

  // Append the values
  url.searchParams.append('param1', param1)
  url.searchParams.append('param2', param2)

  // Construct the url
  return await this._get(url.toString())
}


On to other things, there's currently nothing in your class that is instance-specific (the base url is hardcoded, params are supplied at call time). You can simply export a bunch of stateless functions from the module instead of having to instantiate an instance.

const getJSON = url =&gt; fetch(url).then(r =&gt; r.json())
const geocoderUrl = "https://geodata.nationaalgeoregister.nl/locatieserver/v3/"

export const suggest = async (query) {
  const url = new URL('suggest', geocoderUrl)
  url.searchParams.append('q', query)
  return await getJSON(url.toString());
}

export const lookup = async(id) =&gt; {
  const url = new URL('lookup', geocoderUrl)
  url.searchParams.append('id', id)
  return await getJSON(url.toString());
}