My friend and I are building a standard coffee shop finder app to explore the google places and maps api.
We want to know if we can save google data (just like the name, placeID, lat, long, and maybe type) to user's devices so that our users could see these places - their favourites - as markers on the map, without needing to be connected to the internet.
We are thinking that we could save this information to core-data on the user's device and save just the placeIDs on our server (connected to the users profile) so as not to break Google's caching rules. We are wondering if this would in fact infringe on Google's rules. Any help or insight would be appreciated as Google's documentation on this area is a bit ambiguous.
Also if possible we would like to save some information other then the place IDs to our server. So we are wondering if a business name retrieved from Google's web service api is considered Google's property or is that something we could store on our server? Thanks in advance!
The caching policy is set in section 10.5 d of Google Maps API Terms of Service. You can temporarily save the data for the purpose of improving the performance:
No caching or storage. You will not pre-fetch, cache, index, or store any Content to be used outside the Service, except that you may store limited amounts of Content solely for the purpose of improving the performance of your Maps API Implementation due to network latency (and not for the purpose of preventing Google from accurately tracking usage), and only if such storage:
is temporary (and in no event more than 30 calendar days);
is secure;
does not manipulate or aggregate any part of the Content or Service; and
does not modify attribution in any way.
https://developers.google.com/maps/terms#section_10_5
Please also note that place ID is exempt from this rule and you can store place IDs without any restrictions. This is documented here:
https://developers.google.com/places/place-id#save-id
Hope this clarifies your doubts.
This question has been asked in a few places on SO, but I've found the answers to be either slightly contradictory or "thin"... so I'm not sure if asking again will help but here goes.
The google "help" page says that the google team maintains a "presence" on SO, so if you are a google chap, please could you make this clear, and if you are not please also make this clear, thank you :)
So, what I want to do...
User searches for a set of locations. These will be used to form a travel itinerary. I want to take the lat/lng and the address components and store them in my own database so that when another uses search for trips in some country, some place etc etc I can go about finding them.
The big question, does the terms of conditions allow this? The relevant bit that worries me is...
10.1.3 Restrictions against Data Export or Copying.
... snip ...
(b) No Pre-Fetching, Caching, or Storage of Content. You must not
pre-fetch, cache, or store any Content, except that you may store: (i)
limited amounts of Content for the purpose of improving the
performance of your Maps API Implementation if you do so temporarily
(and in no event for more than 30 calendar days), ...snip... For example,
you must not use the Content to create an independent database of "places"
or other local listings information.
Would what I want to do violate this. It sounds to me like it might, but then that renders the question, why would I use google maps for this kind of application? Other travel sites appear to?!
There is no problem if you store
latitude and longitude
addresses
As those would be "user preferences" in your app.
The restrictions on data export refer to the tiles and photos used to display the maps. In general people want this feature to have a cache mechanism or provide offline functionality. This is not allowed* and only the official mobile app has this features.
*Google actually allows it, but you have to read the finer print, more on that below.
Longer answer, analyzing the ToC:
No Pre-Fetching, Caching, or Storage of Content. You must not pre-fetch, cache, or store any Content...
What does content mean? This is map tiles, terrain tiles, photos of places, satellite photos etc. The content, in the ToC, is anything that has been created by Google and provided as part of the Google map service. But, not everything provided in the service has been created nor is owned by Google.
Addresses are not created or owned by Google, this is public information. What Google has done is to gather them and put them in a presentable, easy to search, interface. But it is not part of "the content".
GPS locations are not created or owned by Google, this is public information as well. In fact, GPS was created by the department of defense (DoD) in the US. They are the ones who control its use.
...For example, you must not use the Content to create an independent database of "places" or other local listings information.
It wouldn't be fair to Google if you downloaded a subset of the content, lets say all the tiles and photos for your home town. Once you have your copy of the files, you do a little processing on them, maybe add trivia or fun facts that only you know because you grew up there. And then use that to provide a re-branded service. Something called JimboMaps perhaps. That is the type of thing that is prohibited.
you may store: (i) limited amounts of Content for the purpose of improving the performance of your Maps API Implementation if you do so temporarily
Guess what, you are actually allowed to store content in you database. Any of it, photos, tiles etc. The catch is:
You can store limited amounts. A few blocks, probably a small region is ok. But don't store a whole town or suburb.
You can't store anything for more than 30 days.
The only valid reason to do this is performance improvement of your application. See this: Google Maps v3 - Map tile caching on client?
...you must not use the Content to create an independent database of "places" or other local listings information.
It is just saying that you are not allowed to create JimboMaps.
The newest Google Maps Platform Terms of Service (which takes effect July 16, 2018) is a bit more explicit about this.
3.2.4 Restrictions Against Misusing the Services.
(a) No Scraping. Customer will not extract, export, or scrape Google
Maps Content for use outside the Services. For example, Customer will
not:(i) pre-fetch, cache, index, or store Google Maps Content for more
than 30 days; (ii) bulk download geocodes; or (iii) copy business
names, addresses, or user reviews.
Yes, the address might be public knowledge, but the process to obtain it is subject to the terms of the service you use...
This is from Google's Developer pages:
https://developers.google.com/maps/articles/geocodestrat
*Caching Considerations
The Google Maps API allows you to cache geocodes (i.e. store them on your server for a limited period). Caching can be useful if you have to repeatedly look up the same address. However, there are two important things to keep in mind.
1.The Google Maps API Terms of Service allow you to use geocodes derived from the service on Google Maps or Google Earth only. You may not sell or distribute them in other fashion.
2.Geocoding changes often as our data gets more and more accurate. So even if you have cached data, you should refresh it periodically, to make sure you are getting the best geocodes for your locations.
The Google Maps API for Flash requires the use of API keys. Many people mistakenly think quotas are tied to keys. However, keys don't affect your geocoding quota at all. Registering for a new key won't help. Quota is solely tied to IP addresses. Therefore a new key won't give you any more quota at a particular IP address.*
This quote from their website (https://developers.google.com/maps/documentation/geocoding/geocoding-strategies) says you can save data for your use if you know you will need it many times, but recommends you update periodically.
Caching considerations
The Google Maps Platform Terms of Service allow you to cache geocodes (that is, store them on your server for a limited period). Caching can be useful if you have to repeatedly look up the same address. However, keep in mind that geocoding results change as our data gets more and more accurate. So even if you have cached data, you should refresh it periodically, to make sure you are getting the best geocodes for your locations.
TL;DR: I think storing lat/long from services provided by Google is not allowed
Google Maps Platforms terms (21.11.2019)
3.2.4 Restrictions Against Misusing the Services.
(a) No Scraping. Customer will not extract, export, or otherwise scrape Google Maps Content for use outside the Services. For example, Customer will not: (i) pre-fetch, index, store, reshare, or rehost Google Maps Content outside the services; (ii) bulk download Google Maps tiles, Street View images, geocodes, directions, distance matrix results, roads information, places information, elevation values, and time zone details; (iii) copy and save business names, addresses, or user reviews; or (iv) use Google Maps Content with text-to-speech services.
To me it looks like storing lat/long is (even explicitly) prohibited.
"Google Maps Content" is actually defined in the terms & conditions.
"Google Maps Content" means any content provided through the Services (whether created by Google or its third-party licensors), including map and terrain data, imagery, traffic data, and places data (including business listings).
Also the remark about it being ok to cache data for some time and periodically refresh it is no longer there, see Geocoding API Policies.
Pre-Fetching, Caching, or Storage of Content
Applications using the Geocoding API are bound by the Google Maps Platform Terms of Service. Section 3.2.4(a) and (b) of the terms states that you must not pre-fetch, index, store, or cache any Content except under the limited conditions stated in the terms.
Note that the place ID, used to uniquely identify a place, is exempt from the caching restriction. You can therefore store place ID values indefinitely. Place ID values are returned in the place_id field in Geocoding API responses.
For what it's worth you can store Place IDs instead of lat/long ;-)
You may want to use another service for lat/long geocoding.
Like others have said, the updated terms https://cloud.google.com/maps-platform/terms/#3.-license. section 3.2.3 (b) explicitly states (May 6, 2020)
(b) No Caching. Customer will not cache Google Maps Content except as expressly permitted under the Maps Service Specific Terms.
BUT
The specific terms (handily not linked in the terms, that I could easily see) mention this
(hopefully this is the specific terms https://cloud.google.com/maps-platform/terms/maps-service-terms updated June 14, 2020)
1.4 Caching. Customer can temporarily cache latitude (lat) and longitude (lng) values from the Directions API for up to 30 consecutive calendar days, after which Customer must delete the cached latitude and longitude values. Customer can cache Directions API Place ID (place_id) values, in accordance with the Directions API Policies.
Section 1.4 is for the directions API, but most of the other API's have the same exception. Unfortunately it doesn't mention address data.
I'm currently developing a small webpage for a customer where i need a simple map with pins. It's really basic usage and the customer is going to hit the page maybe 50-100 times/month, what is a good service price-wise? I have tried contacting google, bing, and two local (swedish) providers, but the customer service is.. not good...
Your problem is that you say it's an "internal" project - I assume this means that it's not hosted on a publicly-accessible webpage?
For non-public sites, both Google and Bing require you to take out an enterprise licence agreement, which is normally prohibitively expensive for small businesses. (Licences are individually-negotitated, but think of the order of $10,000 per annum).
Alternatively, you could look at using the Leaflet JS map control (http://leaflet.cloudmade.com), displaying data from open street map (http://osm.org) - both of which are free and open source (and, in many cases, have higher quality data than either Bing or Google anyway)
ask about the new Bing Maps CRM licensing thats available, it may well meet your needs and be cost effective for you
Google's usage guidelines state:
Web sites and applications using each of the Maps API may at no cost generate up to 25,000 map loads per day for each API
So if I have two sites on a single web server, do they share the limit of 25,000 map loads, or does each site have its own limit of 25,000 map loads?
Did you read the part when the query limit is exceeded? The Api simply doesn't compute a query and Google isn't sending a bill to you. You have to apply to the paid program yourself. I want to say you can show your user a brief explanation when that happens or redirect them to another site. Anyway it's written web sites not server so my opionion is you don't have to worry about this.
The limit is per API key not per website. But you have to "exceeded the limits for more than 90 consecutive days". Also "Non-profits and applications deemed in the public interest are not subject to these usage limits".
See the FAQ: http://code.google.com/apis/maps/faq.html#usagelimits
My requirements are fairly straightforward, so I am hoping someone can give me a little guidance.
I am writing a (commercial) software app that needs to return the distance and ETA from a fixed point to a desination. I am not concerned with the actual maps, as I am not displaying them. I just need to be able to pass a start/stop to an API and have it return these results.
I have looked into MapQuest, Google, and Microsoft, but am not sure which is the best for my situation. I am leaning towards Mapquest, but am still not sure. Since this is for commercial use, I know that I will have to pay a fee, so I want to make sure I select the correct service; otherwise, I will end up paying for something that I cannot use. All of these choices are overkill for what I need, but I don't know what else is out there - if anything.
Any input is appreciated.
You can use a spatial enabled database to calculate the distance with no need of maps at all.
Home page of PostGis
I am not concerned with the actual maps, as I am not displaying them
Then the Google Maps API isn't much use to you, unless you go with a Premier license.
In that case, the Directions API would be perfect:
http://code.google.com/apis/maps/documentation/directions/
If your website is not available to the public, and is behind a paywall, then here are your prices for the google api.
Product Offering:
Google Maps API Premier OEM pricing
Page View Pricing(Pooled usage between all of your customers)
Page View is a single load of the Google Maps JavaScript by the end user's browser
For Internal Facing/Business to Business Paid Applications (pricing includes $2,500/year developer's license) *$11,250 for 100K page views per year
* $20,000 for 250K page views per year
* $37,500 for 500K views per year
* $72,500 for 1.5 million page views per year
* Please call for pricing above 1.5 million internal page views per year
For External/Business to Consumer Paid Applications (pricing includes $2,500/year developer's license)
* $20,000 for 1 million page views per year
* $37,500 for 2 million page views per year
* $55,000 for 3 million page views per year
* $72,500 for 5 million page views per year
* Please call for pricing above 5 external million page views per year