I've used a Mapbox Topographical map before, and that satisfied the needs of my users.
Here's an old link I buried up. Haven't gotten to play with it though, so can't vouch for it. Introducing the Surface API | Mapbox
I've also seen an Elevation API, but again, have not used it.
Hope that helps!