Możesz zrobić kombo, czyli użyć kluczy oraz Too Many Requests. W wielu popularnych publicznych API jest właśnie takie coś zrobione, np google, facebook, openstreetmaps itp. Zalecane jest też cacheowanie wyników przez samo API oraz użytkowników, żeby nie robić ci za dużego ruchu na endpointach. Te same dane i tak nie są potrzebne do odświeżania więcej niż raz na sekundę / (jakiś inny odstęp czasu).
https://www.owasp.org/index.php/REST_Security_Cheat_Sheet#API_Keys
Uważaj żeby nie przesadzić z tym ograniczaniem ilości odpytywań per sekunda, bo jak źle zaimplementujesz, to klient może nie móc pobrać danych z jednego endpointa, a później z innego przez timeout.