В свое время решал подобный вопрос. Для городских кодов все просто — в википедии есть
Телефонный план нумерации России, можно опираться на описанные в нем правила распределения кодов по субъектам и городам. Альтернативный вариант — взять базу МТТ или другого оператора междугородней связи (например,
Ростелеком или
Комстар), которую придется напарсить ручками. А для мобильных — сложнее. Тут я только один способ нашел: парсить страницы операторов (того же МТТ, к примеру) и следить за актуальностью информации.