What is the best way of geocoding IP addresses? I have ~ 10,000 - 30,000 addresses to geocode once. The IP addresses are from all over the world and I only want the Long/Lat. Accuracy to the city level is not essential, but ideally it would be within 10-20 km. Searching around I saw MaxMind which seems like a good option, but before I download and frequent myself with their API, are there any other recommended alternatives out there?
IPInfoDB can be used. They don't have a query limit, but they will throttle you to 1 response/sec if you request too frequently.
Alternately, if you feel like writing a little bit more code, you can download their database and run the batch queries yourself. I can't imagine it'd take long to set up, and it will process your 30k IP addresses quite quickly.
I have heard about simplegeo api https://simplegeo.com/docs/api-endpoints/simplegeo-context May work for you
If you don't want to lose time installing a database that will eat up your resources, you can use an online API. I am using http://www.ipgp.net/ip-address-geolocation-api/ and it let you to query up to 1m IP Addresses.
I would say the best way is to use an online API. Managing a database on your end is a PAIN! Trust me, I've been there and IP locations change all the time so you'd have to update your database on the regular. With an online API they do all of that work for you.
I've been using an online API at https://www.zipcodeservices.com. I get 100,000 queries a year for $25.99 a month and not throttling of requests. It's pretty straight forward and is always up and working.
If I need more requests a year, they have different service plans that you could easily migrate up to.
for north america this one works http://geocoder.ca