I'm assuming 90% of these API requests are reads. Is there a reason Apollo couldn't develop an intermediate proxy server and cache all the responses for a short period of time? I assume that would cut the API usage significantly and potentially the cost.

I didn't check, but I think their back-end already cached stuff somewhat; the dev open sourced it so you can take a look*

* https://github.com/christianselig/apollo-backend