Do I need to prevent duplicates in Google Places API? - google-maps

I run a local business community website and I think it would be great to automatically create a google place for each of the businesses that are on my website. The actual business owners are on my website, so their information is accurate.
I can see that in the google places API, I can easily create google places, but what if they already have one? Will it be spammy to auto-create places for them or does google have an algorithm for accepting all results and sorting them on their own?
I think it would have been smart for Google to allow me to essentially create a canonical database for them of what I have and then they can do what they want with it. Is that how it works or do I need to manually ask my clients if they already have a google place?

The Google Places API isn't the best way to get data to Google about business location. Currently, the add functions don't allow you to add all the information that you would like to add, including opening hours etc. You can use Google Places for Business instead.
To answer your main question, Google would take results added through either the Places API or Google Places for Business and de-dupe them, but it would help Google and data accuracy to first search for a place, see if that matches and if it doesn't add it.

Related

Use multiple Google Map Account for websites on the same server

I have one real website using google map and It is binded with several domains. Each domain serves for a separated group of client.
Google map announces new policy updates that apply from 11th june 2018 that decrease free limit usage from 25K map loads per day to 28K map load per month
My questions is Can I use map api key which generated from separated google account to increase free usage ?
I have read this question carefully use multiple Google Maps API Keys for same server?
But link seems broken and I can't find relevant information as answer on that question or some other questions too
In my case, although my sites have the same code based and IP, however they works like different sites on shared hosts. One more thing, Google assigns free usage based on account (not google map key) so I think I can use multiple account to increase limit
So can I do this ? I don't want to break Google rules and I appreciate for any comment
You can not since is against Google terms, please check section 3.2.4.e in this link https://cloud.google.com/maps-platform/terms/#16-limitation-of-liability.
No Circumventing Fees. Customer will not circumvent the applicable Fees. For example, Customer will not create multiple billing accounts or Projects to avoid incurring Fees; prevent Google from accurately calculating Customer’s Service usage levels; abuse any free Service quotas; or offer access to the Services under a “time-sharing” or “service bureau” model.
I'm not sure if it's against the rules:
Google Maps guy said here, that it's OK https://twitter.com/GMapsPlatform/status/1001061642363461633

Google Maps API missing street names

I'm trying to geocode multiple addresses. My problem is that sometimes the address actually exists but Google Maps didn't label that street, so I can't find the geocode.
I want to know if there is some way to add street names with any Google API or any software with an API that will allow me to do this.
For example, if Street 11 doesn't exist, add two coordinates from end to start naming the street. This way the next time I look up, I can find it.
I have found multiple services such as SmartyStreets, but they are not even close to Google's geocode accuracy. If I found this software, I could also do batches of addresses in a small period of time.
The tool that was used to edit map data at Google has a name Map Maker.
https://mapmaker.google.com/mapmaker
The bad news is that this tool was deprecated and will be shut down in March 2017. I am not aware about a possible replacement, haven't seen any announce yet.
You can try to follow this help article while Map Maker is still available:
https://support.google.com/mapmaker/?hl=en#topic=1094356
Alternatively you can use the "Report a problem" link on the bottom right corner of the maps.google.com.
https://support.google.com/maps/answer/3094088
Hope it helps!
First, a side note for your information:
Geocoding partial addresses or addresses that aren't real (according to the postal service) can result in really weird geocoding information. I can imagine that a lot of partial or unreal addresses don't return results because it is just too hard to guess.
As it is, most geocoding services have to extrapolate latitude and longitude by using information such as street and zip code endpoints, directions, and number of valid addresses on the street. In a lot of ways, there is guesswork involved for everyone. Google often has great geocode information because they have extensive hours driving cars with cameras and sensors marking exact locations of buildings on streets (that information is not obvious from an address). If street names are incorrect, new, old, or some other problem, it makes this "extrapolation" process even harder. Generally, you will see similar enough quality across geocoding APIs and services, and there will still be enough uncommon errors, that choosing your API based on geocoding accuracy should only be done in special cases. It's not common to need exact geocoding precision and most APIs can meet normal geocoding needs (but, in your case, maybe it is necessary, I don't know). Choose APIs based on program design needs. For instance, Google has great business and place search but doesn't validate or verify addresses, while SmartyStreets does.
Here are some possible ways to fix the problem:
If you want to get an address added to Google Maps, the best way I've heard of is to report an error on the map to Google.
Google has this website for making your maps (https://www.google.com/maps/d), but it might not fit your problem very well.
You can also open Google Maps, find the location (searching for a latitude and longitude pair, if you have it, will work well on Google Maps), then right click to add a missing place or report an error. (These will be saved in your contributions, which you can view from the menu opened by the three-bar icon menu in the search bar.)
Full disclosure: I worked for SmartyStreets.

Terms and Conditions Google Maps: Can I store lat/lng and address components?

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.

google maps integration details

Does anyone know if it is possible to integrate Google maps and use also their data on topics.
Im using cakephp Framework.
I want to integrate a map of munich with fashion stores shown into my website.
But i want to show the results that come on google maps for fashion shops munich.
In the tutorials i see only ways to create your own markers.....
and second question is , i also would like to display the details , like opening hours and stuff.... is this data also available for automatic usage?
Yes, you can. You can style the POI on the map.
Also, you can only show the data google has available. They may not have every place, and a LOT of their places do not have hours. If you want a lot of data, I would suggest using your own markers.

Is there an API to maintain business locations in Google Places?

Is there any way to add a business with complete information (with address, geospatial location, categories, trading hours etc) to Google Places in a programmatic fashion?
We want to add new franchises to a listing of stores. Manual changes are too brittle, the bulk upload takes a long time to be confirmed and the standard Places API has only a very limited method on it. Am I missing something or is there no support for managing your own store listings via an API?
I don't think you're missing anything at this time. Support for that sort of thing is currently limited to what's documented at the link you provide, I believe.
The Places stuff is in the odd grey area where Google is kind of pushing it and promoting it, but also saying that it's just in Labs, it's just experimental, etc., so it may not have all the features you need.
There might be other ways to get your businesses into Google Maps, if your concern is Google Maps generally and not the Google Places stuff specifically. If they exist, they may have more fully featured API capabilities for updates. Or this might be a big dead end.
If this issue is closer to a big annoyance instead of a total dealbreaker, then the approach I'd recommend, if you can wait long enough, would be to implement what you can in the existing API, and keep an eye on the API docs to see if they add more capabilities in the coming months. Open a feature request for Places API in the issue tracker and maybe keep an eye on other features requests there, especially issue 2431.