take a look at https://forum.inaturalist.org/t/displaying-a-chronologically-sorted-life-list/65042/10. that describes logic to solve a slightly different problem, but you could tweak it to address the problem here. it’ll be more efficient than checking one taxon at a time. (note that step #1 in that logic could be replaced with a single call to /observations/taxonomy if you’re not trying to display the whole list of all species, and you would just have to sort by obs count as part of parsing the response.)
…
also, for your achievements page, i think you should display all the badges as soon as the user loads the page, then fill in the stats as you can get data for them. that will be a more satisfying experience for users rather than waiting for all the data to load before seeing anything, i think.