GeoNames has many different types of web service
Placenames:
http://www.geonames.org/export/web-services.html#findNearbyPlaceName
Webservice Type : REST
Url : api.geonames.org/findNearbyPlaceName?
Parameters : lat,lng,
lang: language of returned 'name' element (the pseudo language code 'local' will return it in local language),
radius: radius in km (optional), maxRows: max number of rows (default 10)
style: SHORT,MEDIUM,LONG,FULL (default = MEDIUM), verbosity of returned xml document
localCountry: in border areas this parameter will restrict the search on the local country, value=true
Result : returns the closest populated place for the lat/lng query as xml document. The unit of the distance element is 'km'.
Example:
http://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo
Response (XML)
<geoname><toponymName>Chrüzegg</toponymName><name>Chrüzegg</name><lat>47.2985</lat><lng>9.01488</lng><geonameId>7910950</geonameId><countryCode>CH</countryCode><countryName>Switzerland</countryName><fcl>P</fcl><fcode>PPLX</fcode><distance>1.13459</distance></geoname></geonames>