I'm working on an activity scheduler app where users can see nearby restaurants and bars, create activities there, and then save past activities to an activity history. As such, I need a service to retrieve information on nearby points of interest and then cache them, to be able to save activity details for the activity history feature.
Currently, I'm using the Google Maps Places API to show nearby restaurants and bars, and it works great; I'm able to show information on each location (name, address, distance, price, a photo from the location, and the Google rating), but I recently found that the Places API's terms explicitly forbids caching or saving any data. This means I'd either have to rewrite most of the app so that every time an activity is displayed, the API must be called and all the activity details re-retrieved (which will surely damage the app's performance, lengthen development, and be much more expensive than I anticipated), or I will have to switch to a different service.
I've looked far and wide, but non-Google data sources I've found have either still disallowed caching or have major data completeness problems (many, for instance, lack key features like location photos, price, and rating). Displaying place data and attaching it to an object seems like such a common task (and I'm simply trying to attach place data to my activity objects), so there surely is a straightforward solution that can let me just use places information without breaking my app or destroying its performance.
Could anyone with experience in this area share their insight?