API предоставляет ipgeobase.ru
Есть для разных языков программирования библиотеки, в том числе и для php - ross.vc/?p=204
Сам ей пользуюсь на разных сайтах, где требуется определить город.
Обычно перед тем как начать задачу или взять проект сам разработчик оценивает работу по срокам. Либо это делает руководитель отдела из ходя из предыдущего опыта подобных проектов. Сроки как правило берутся с запасом и учетом текущей нагрузки.