Accuracy of IP based GeoLocation varies depending on the database used to identify the user location.Through GeoLocation, we can map IP addresses to the country, region, city, latitude/longitude, ISP, etc. All of this information is collected and stored in different database from different registrars. Some registrars may be very accurate in providing information about their IP, though some may enter not updated or incorrect data. Rule of thumb: "the more aggregated and generic data you ask for the more precise will be the geo-localization". Country, than region and city are much more precise (normally 90 to 95%) compared to the exact location of the user such as zip code/street address/building number etc. This higher precision is because of the IP address allocation and registration for each particular country (It varies from country to country) and because it's based in most of the cases on provider position rather than user or company position.
So in short:
- Locating the country/region has got the highest precision (95-99%)
- Locating the city could be a bit less accurate
- Identifying the exact user location such as Zip code/building number is much less accurate
- IP is traced from Provider or organization registration
- Use of proxies by the user hides the exact location
- Not updated data in the registrar IP database (whois information)
Here you can find an interesting university paper: Internet Geolocation and Evasion