Вы можете использовать HTTP / XML API Почтовой службы США
Согласно этой странице на веб-сайте почтовой службы США, которая документирует их веб-API на основе XML , в частности, раздел 3.0 (стр. 13) этого документа PDF , у них есть URL, где Вы можете отправить запрос XML, содержащий адрес, за исключением почтового индекса, и они ответят документом XML, содержащим полный адрес.
Вы не можете выполнить поиск только по городу и штату, потому что один город может содержать несколько почтовых индексов, поэтому вам также необходимо передать адрес улицы.
Согласно их документации, ваш запрос будет выглядеть так:
GET http://SERVERNAME/ShippingAPITest.dll?API=ZipCodeLookup&XML=<ZipCodeLookupRequest%20USERID="xxxxxxx"><Address ID="0"><Address1></Address1> <Address2>6406 Ivy Lane</Address2><City>Greenbelt</City><State>MD</State></Address></ZipCodeLookupRequest>
А вот что вы получите обратно:
<?xml version="1.0"?>
<ZipCodeLookupResponse>
<Address ID="0">
<Address2>6406 IVY LN</Address2>
<City>GREENBELT</City>
<State>MD</State>
<Zip5>20770</Zip5>
<Zip4>1441</Zip4>
</Address>
</ZipCodeLookupResponse>
USPS требует , чтобы вы зарегистрировались в них, прежде чем сможете использовать API, но, насколько я могу судить, плата за доступ не взимается. Кстати, их API имеет ряд других функций: вы можете выполнять стандартизацию адресов и поиск по почтовому индексу, а также весь набор средств отслеживания, доставки, этикеток и т. Д.