Я знайшов кілька способів зробити це за допомогою веб-інтерфейсів API. Я думаю, що Поштова служба США була б найточнішою, оскільки поштові індекси - це їхня річ, але Ziptastic виглядає набагато простіше.
Використання поштової служби США HTTP / XML API
Відповідно до цієї сторінки на веб-сайті Поштової служби США, яка документує їх веб-API на основі XML , зокрема Розділ 4.0 (сторінка 22) цього документа PDF , вони мають URL-адресу, куди Ви можете надіслати XML-запит, що містить 5-значний поштовий індекс, і вони відповісти XML-документом, що містить відповідне місто та штат.
Відповідно до їх документації, ось що ви надішлете:
http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=<CityStateLookupRequest%20USERID="xxxxxxx"><ZipCode ID= "0"><Zip5>90210</Zip5></ZipCode></CityStateLookupRequest>
І ось що ви отримаєте назад:
<?xml version="1.0"?>
<CityStateLookupResponse>
<ZipCode ID="0">
<Zip5>90210</Zip5>
<City>BEVERLY HILLS</City>
<State>CA</State>
</ZipCode>
</CityStateLookupResponse>
USPS це вимагає , щоб ви входите з ними , перш ніж ви можете використовувати API, але, наскільки я міг судити, не стягувати плату за доступ. До речі, їх API має деякі інші особливості: ви можете виконувати стандартизацію адрес та пошук поштового індексу, а також весь набір відстеження, доставки, ярликів тощо.
Оновлення: станом на 13 серпня 2017 року Ziptastic тепер є платним API, і його можна знайти тут
Це досить нова послуга, але, згідно з їх документацією, схоже, все, що вам потрібно зробити, це надіслати запит GET на http://ziptasticapi.com приблизно так:
GET http://ziptasticapi.com/48867
І вони повернуть об'єкт JSON за лініями:
{"country": "US", "state": "MI", "city": "OWOSSO"}
Дійсно, це працює. Ви можете перевірити це з командного рядка, виконавши щось на зразок:
curl http://ziptasticapi.com/48867
geocoder.cit.api.here.com/6.2/geocode.json?PostalCode=2400&country=Denmark&app_id={APP_ID}&app_code={APP_CODE}&gen=9
(ви можете вказати адресні частини )