geo based IP lookup with ColdFusion

I've been looking around for a bit for a free location lookup based on an IP address. Preferably as an API call so I don't need to install/add too much my end.

I've come across hostip.info. This service is a community-based project with around 8,542,587 entries in the database!

They have a good API which supplies text and XML results, and they even have the database freely available for download with daily updates.

Below is a quick example of some code to get the country (you can find more examples at the site). If you want to see it in action click here.

view plain print about
1<cfhttp url="http://api.hostip.info/?ip=#cgi.remote_host#" method="get" result="geoInfo" />
2
3<cfscript>
4    geoXml = xmlParse(geoInfo.fileContent);
5    country = geoXml.HostipLookupResultSet['gml:featureMember']['hostip']['countryname'].xmlText;
6    countryAbbrev = geoXml.HostipLookupResultSet['gml:featureMember']['hostip']['countryAbbrev'].xmlText;
7
</cfscript>
8
9<cfoutput>Your IP address is: #cgi.remote_host#<br/>
10Your country is: #country#    (#countryAbbrev#)
11</cfoutput>    
12<hr/>
13Full dump
14<cfdump var="#geoXml#"    />

For more info/help see also:

Posted: 13-Sep-2008

View: 14997

Permalink: here

Comments

I have used hostip.info for quite some time in WhosOnCFC (thanks to Joshua Cyr). It does a pretty good job, but for a free service you definitely cannot complain.

#1 Shane Zehnder
13/Sep/08 8:30 PM

i think you'll find that it's webservice or even a straight lookup from it's d/l db won't scale very well. you'll be better off with a local binary "db" like our geoLocator http://www.sustainablegis.com/projects/geoLocator/... (which unfortunately doesn't get updated as frequently as we like) or maybe maxmind's.

#2 PaulH
13/Sep/08 8:55 PM

Andy, very good article.
If you don't mind, I translated it to Portuguese and posted in our Brazilian blog http://porqueCF.com.br/blog (that means: why CF?). Of course I gave you all the credits and set links to your blog. Let me know if that was ok.
I also added yours to my "preferred blogs " session in http://ricardo.parente.us.
Thanks.
Ricardo

#3 Ricardo
16/Sep/08 8:33 PM

@Ricardo thats fine :) Thanks for the heads up though

#4 Andy Jarrett
17/Sep/08 1:44 AM

I always use http://www.ipgp.net because it is the most accurate and it gives a map too.

#5 Jeff
01/Nov/08 6:47 AM