PlaceSpotter

PlaceSpotter helps developers make their applications location-aware by identifying places in unstructured and atomic content – feeds, web pages, news, status updates – and returning geographic metadata for geographic indexing and markup. The service is available as a REST API which developers can pass in any textual content (or links) and get back geographic entities. This section of the document describes some key concepts that are relevant to the use of PlaceSpotter.

Key Concepts

Many of the Key Concepts here will be familiar to users of the GeoPlanet API; GeoPlanet is a core Yahoo! web service that can be used to obtain more information about the places returned by PlaceSpotter, such as the relationship of one place to containing or adjacent places.

1. Places v. Place Names Yahoo! PlaceSpotter aims to capture all forms of how a place is called, and disambiguate the place-name to its canonical form. The platform identifies and disambiguates every place-name to a specific place concept, referenced by its unique identifier, the Where-on-Earth ID (WOEID). WOEIDs always reference a place, not a place name. For example, “New York”, “New York City”, “NYC”, and “the Big Apple” are all variant names for WOEID 2459115. If PlaceSpotter find these variants in the text, it will understand them to be multiple appellations of the same place.

This approach extends to a multi-lingual environment: “München” in Germany is “Munich” to the English speaking world and “Monaco di Bavaria” to the Italians, but may also be keyed as “Muenchen” and “Munchen” if special characters, diacritical marks, and ligatures are not available to the user. All of these spatial appellations are simply multiple names for the same place, and therefore will be identified and understood as the same identifier (WOEID 676757).

2. Where On Earth Identifiers (WOEID) Spatial entities identified by Yahoo! PlaceSpotter are uniquely referenced by a positive 32-bit identifier: the Where On Earth ID (WOEID). WOEIDs are permanent and non-repetitive, and are assigned to all entities shared across PlaceSpotter, GeoPlanet, Upcoming, and many other Yahoo! APIs. Read more about WOEIDs in the GeoPlanet Documentation on WOEIDs.

WOEIDs reference a particular geostatic named place, and are not used to refer to businesses or individual addresses. When it encounters a structured address, PlaceSpotter will not perform street-level geocoding but will instead provide the WOEID of the smallest bounding named place known, frequently a postal code or neighborhood.

3. Coverage Yahoo! PlaceSpotter uses the Yahoo! Geo-informatics database information. This global database consists of six million (and growing) named places including administrative areas, settlements , postal, codes, points of interest, colloquial regions, islands, etc. Coverage varies from country to country and Yahoo! is always working to improve and update the database information.

4. Place Types Places are categorized to help identify the specific place you are searching for, such as a county and city of the same name. These Place Types have distinctive codes and names that are returned for each place. The complete list of Place Types may be found in the Yahoo! GeoPlanet Documentation on Place Types.

5. Language Yahoo! PlaceSpotter is UTF-8 compliant and supports location names for usage variations and in multiple languages, including English, French, German, Italian, Spanish as well as local multi-byte character set data in Japanese, Traditional Chinese, and Korean. To specify the language, set the inputLanguage query parameter to a code described by RFC 4646.

6. Positional Consistency Places in PlaceSpotter are primarily represented by WOEIDs, but we also return a coarse representation in Longitude/Latitude using the WGS84 datum. See more on how we work with positioning, space, and place in the GeoPlanet Documentation on Positional Consistency. WOEIDs returned by PlaceSpotter can be passed onto the GeoPlanet API for further geographic exploration.

7. Document Scope Some documents contain multiple place references within a geographic area, such as a county, state, or country. The geographic area associated with a document is called its Document Scope and is a place itself. Yahoo! PlaceSpotter uses the place references in a document along with rules to determine the Document Scope. There are two flavors of Document Scope: Geographic Scope, and Administrative Scope. Geographic Scope is the place that best describes the document and may be of any place type. Administrative Scope is the place that best describes the document and has an administrative place type. The administrative place types are:

  • Country
  • State
  • County
  • Local Administrative Area
  • Town

For example, if your document contains the places “Bolinas”, “San Francisco”, and “Sacramento”, we will return “California” (WOEID 2347563) as the Administrative Scope, and “Northern California” (WOEID 55857166) as the Geographic Scope. Sometimes the same WOEID will be returned for both.

8. Place Reference A portion of text within a document that conveys geographic context is called a place reference. A place reference may be ambiguous, such as “Springfield” (there are 26 Springfields in the US alone), or unambiguous, such as “London, England”. Yahoo! PlaceSpotter identifies these place references and returns them in its response document, along with the actual text and list of WOEIDs that match each place reference. This makes it possible to highlight text and create links to content associated with the place reference.

Additional Information

On Addresses

Yahoo! PlaceSpotter is not a geocoder, so addresses in requests are resolved to the smallest bounding Place, usually a town or a postal code. Also, WOEIDs are not assigned to individual house numbers or street names.

On Coordinates

Yahoo! PlaceSpotter delivers bounding boxes and centroids of named places. This information is not definitive, and we make no claims to be the authority on the center of a place, its best routing point, nor the approximation of its extents. We provide coordinates only to assist users in finding the place on a map, and zooming to the correct extents.

On Zip Codes and Postcodes

Postal codes, such as US zip codes or UK postcodes, are assigned by postal authorities within a country for the purpose of expediting mail delivery, and do not necessarily align with administrative areas or cities in that country. For example, in the US, a city may be served by multiple zip codes, and a zip code may serve multiple cities.

On WOEID Management

The world’s geography is not static; Yahoo! PlaceSpotter acknowledges this reality. We employ a significant number of automated and editorial processes that are designed to ensure the currency and accuracy of our geographic resource. Constant administrative, postal, and geographic processes render locations obsolete: cities grow to absorb adjacent towns and villages, postal codes are created, terminated, and modified on a frequent basis in most countries that have them, and new development replaces outdated infrastructure. In Japan, for example, the “gappei” process constantly re-organises the nation’s official administrative geography by a method of merging, splitting, and redrawing geographical boundaries.

In cases where a place is stripped of its official status, Yahoo! will migrate the place to a historical category so that it can still be recognised, and its relationships to its successor places are updated so they can be discovered. Such places cease to be included in the administrative hierarchy. Their WOEIDs will remain unchanged.

In cases where a place is still current, yet has been redefined in respect of name, geometry or category, the WOEID will remain unchanged, and the attribution is updated to reflect the change.

As we continuously refine Yahoo! PlaceSpotter there are times when we need to deprecate existing WOEIDs; there are two primary scenarios in which we will take this infrequent course of action:

  1. Duplicate Places: where improved integration procedures or editorial intervention discovers that the same place is represented twice, usually due to naming, positional or categorisation irregularities.

    For example, the place “CIA” was originally represented in PlaceSpotter as a suburb category location, but subsequently identified as a match for “Calgary International Airport”; the original WOEID for the suburb place was thus deprecated and mapped to the new WOEID for the airport. PlaceSpotter, however, continues to accommodate transparently and permanently the deprecated, duplicate WOEID. This approach to data management allows us to improve and refine the underlying resource without impacting offline content which has been indexed against it.

  2. Invalid Places: where the detailed editorial evaluation process finds no corroborative information verifying a place’s existence, or concludes that the place is out of PlaceSpotter’s scope.

    In the rare instance when this occurs, it is usually due to the integration of historical locations that have no bearing to the “real world”, or situations where places are deemed to be unspecific or unverifiable.

    In these situations, the WOEID of the invalid place will be deprecated and mapped to the WOEID of its parent place.

On Naming and Representation

Yahoo! aims to capture the geography of the Earth as it is used by the world’s people. To this end we are guided by various standards and sources of geographical information. For country codes and names, we rely on ISO 3166-1 but make no specific claim as to official designation or authority of disputed territories.

We appreciate that the subjective and personal nature of world geography ensures that there is no single authoritative hierarchy and we do not aim to impose one here. Rather, the PlaceSpotter hierarchy is presented to facilitate geographic discovery, and ultimately assist in disambiguating identically named places, and resolving spatial appellations to a unique, open, and permanent identifier.

Feedback

Yahoo! aims to improve PlaceSpotter at every opportunity, and we could always use your help. Please post comments, questions, and bugs (outrageous!) to the Yahoo! BOSS Forum.

Web Service

Yahoo! PlaceSpotter is a RESTful Web service, accessible at the following URI:

https://yboss.yahooapis.com/geo/placespotter?[parameters]

Requests to PlaceSpotter are sent as HTTP messages, using a URI (Uniform Resource Identifier) to indicate what resource is desired, HTTP headers to provide context for the request, and a message body composed of parameters and the document to be processed. You will also need to use Yahoo!’s OAuth authentication code to authenticate your API call to Yahoo!

The PlaceSpotter Web service supports only the HTTP PUT method. Other HTTP methods are not supported.

A resource identifies an object (commonly referred to as “nouns” in REST terminology). The PlaceSpotter Web service has one type of resource: document. The resource name is appended to the base URI, as shown by the Examples.

Query Parameters

The Web service supports several parameters (name/value pairs) called “query parameters” that allow users to specify a particular language or format for the response. Query parameters are encoded using one of two encodings: application/x-www-form-urlencoded, or multipart/form-data. Note that qery parameter names are case sensitive.

The following query parameters are supported by the Web service:

Parameter Example Description Defaults Optional/Required
inputLanguage inputLanguage=fr-CA Use specified language (RFC 4646) for place name recognition. en-US Optional
outputType outputType=xml Return results in the specified format. Allowed values: xml, json. See also Response Formats. xml Optional
callback callback=myfunc Return JSON response as a JavaScript function call (JSONP). The value of callback is the name of the JavaScript function. The outputType must be set to “json”. (none) Optional
documentContent documentContent=I+live+in+New+York+City Input document to be processed by the request. (none) Required Rule: Required if documentURL is not specified. Either documentContent or documentURL must be specified, but not both.
documentTitle documentTitle=News+from+New+York+City Title of input document to be processed. Only processed for plaintext documents. (none) Optional
documentURL documentURL=http://rss.slashdot/Slashdot/slashdot URL of input document to be processed by the request. (none) Required Rule: Required if documentContent is not specified. Either documentContent or documentURL must be specified,but not both.
documentType documentType=text/plain MIME document type. Allowed vaues: text/plain, text/html, text/xml, text/rss, application/xml, application/rss+xml. (none)

Optional Rule: Required if documentContent is specified. Optional if documentURLis specified.

If documentType is omitted, then the document itself determines the type. If the content of the input document does not match the content type indicated by documentType, misleading results may be returned.

autoDisambiguate autoDisambiguate=false If true, return only the most likely named place for each place reference. If false, override the the place disambiguation feature of PlaceSpotter. true Optional
focusWoeId focusWoeId=2459115 WOEID of named place to be used as a search focus. Identifies a place that will be used to bias the disamgibuation feature. (none) Optional
confidence confidence=8 Return only results that have equal or higher confidence. 8 Optional
characterLimit characterLimit=1000 Process only the first N characters of the input document . (none) Optional

Response Formats

To specify the response format, set the outputType query parameter. The default response format is XML. The Web service supports the following response formats:

Format Description
XML eXtensible Markup Language (XML) is an open standard specification for serializing structured data.
JSON JavaScript Object Notation

XML Response Elements

The XML response is returned by default, or if the outputType parameter is set to “xml”. The response document uses the XML specification to encode data and the document structure is defined by a Relax NG schema, which can be used to validate the response document.

The root element is called contentlocation. This element contains the following subelements:

Element Example Description
processingTime 0.0123 Time in seconds to process the document.
version build 090409 Version of the software used to process the document.
documentLength 10234 Length in bytes of the document.
document (container) Container for content location information. There may be more than one document element if the input document is an RSS document. Each item in an RSS document will be described by a separate document element in the response. If the input document (or RSS item) does not contain any place references, the corresponding document element will be empty (contain no child elements).

The document element contains the following subelements:

Element Description
administrativeScope Container for the smallest administrative place that best describes the document. Note that if there is no administrative place that best describes the document, the WOEID for that place will be 0.
geographicScope Container for the smallest place that best describes the document.
localScopes Container for list of localScope subelements.
extents Container for the the map extents covering the places mentioned in the document.
placeDetails Container for one named place mentioned in the document. If the input document (or RSS item) does not contain any place references, the corresponding document element will be empty (contain no child elements).
referenceList Container for place references.

The localScopes element contains the following subelement:

Element Description
localScope Container for the smallest named place associated with the document. There may be more than one localScope element.

The extents element contains the following subelements:

Element Example Description
center
``<latitude>40.7145</latitude>
<longitude>-74.0071</longitude>``
Coordinates of center (WGS84). Can be used to mark the location of the place on a map.
southWest
``<latitude>35.9902</latitude>
<longitude>-115.4</longitude>``
Coordinates of southwest corner of bounding box (WGS84). The southWest and northEast elements can be used to draw a box around the place on a map.
northEast
``<latitude>40.9176</latitude>
<longitude>-73.7004</longitude>``
Coordinates of northeast corner of bounding box (WGS84).

The placeDetails element contains the following subelements:

Element Example Description
matchType 0 Type of match. Indicates whether the place was determined using text (such as a place name) or using coordinates only (0=text or text and coordinates, 1=coordinates only).
weight 3 Relative weight of the place within the document (range 1-100). Indicates the importance of the place to the document. The value is the sum of the weights of all the place references for the place. Place reference weights vary depending on where the place reference occurs within the document. Place weights are also used to determine the administrative and geographic scope for the document.
confidence 10 Confidence that the document mentions the place (range 1-10). Indicates the confidence that the document refers to the place and not some other place. It is the highest confidence associated with any of the place references for the place. It is possible to have a low-weight, high confidence place, such as San Francisco California, as well as a high-weight, low confidence place, such as Golden Gate Park.
placeId 1 Identifier for the place within the response.
placeReferenceIds 2 List of place reference identifiers referring to the place.
place (container) Container for place information.

In PlaceSpotter 1.2 (or later), the same WOEID may be used in multiple placeDetails elements. The placeId element should be used to distinguish between such places. The placeReferenceIds element may be used to determine the text that matched the place.

The place, adminstrativeScope, and geographicScope elements contain the following subelements:

Element Example Description
woeId 2436704 Permanent identifier for the place.
type Town Place type name for the place.
name Las Vegas, NV, US Fully qualified name for the place.
centroid
``<latitude>36.1718</latitude>
<longitude>-115.14</longitude>``
Centroid for the place.

The localScope element contains the following subelement:

Element Description
ancestors Container for a list of places that contain another place.

The ancestors element contains the following subelement:

Element Description
ancestor Container for a place that contains another place.

The ancestor element contains the following subelements:

Element Example Description
woeId 2436704 Permanent identifier for the place.
type Town Place type name for the place.
name Las Vegas, NV, US Name for the place (city, state, country or equivalent).

The referenceList element contains one or more of the following subelement:

Element Description
reference Container for one place reference found in the document. Each reference element describes a portion of the document that was matched to a place (or places).

The reference element contains the following subelements:

Element Example Description
woeIds 2436704 List of WOEIDs matching the place reference. Multiple WOEIDs will be separated by a space character. Each WOEID in a reference element will match the WOEID in one of the placeDetails elements.
placeReferenceId 1 Identifier for the place reference within the response.
placeIds 1 List of place identifiers the place reference refers to.
text las vegas, nv Actual text of place reference.
isPlaintextMarker 1 Flag indicating if the place reference is plain text (1=plaintext).
type plaintext Type of text marker for place reference (plaintext, xpath, xpathwithcounts). If the type element is xpathwithcounts, the start and end elements are set to the starting byte index and ending byte index of the text within that element.
start 26 Index of the first character in the place reference (if type is plaintext or xpathwithcounts) or -1 (if type is xpath).
end 39 Index of the first character after the place reference (if type is plaintext or xpathwithcounts) or -1 (if type is xpath).
xpath   Xpath of the place reference (if type is xpath or xpathwithcounts) or empty (if type is plaintext).

For plaintext documents, the isPlaintextMarker element is set to 1, the type element is set to “plaintext”, and the start and end elements are set to the starting byte index and ending byte index of the text within the document. For structured documents (HTML, XML), the isPlaintextMarker element is set to 0, the type element is set to “xpath” or “xpathwithcounts”, and the xpath element is set to the xpath of the element containing the text.

Error Codes

Response Errors

The Web service can return the following error messages:

Error Code Cause Solution
400 Bad Request The appid parameter was invalid or not specified. Register your application with Yahoo! to get an appid and provide the appid parameter for each request.
404 Not Found The URI has no match in the display map. Make sure that you have spelled the resource correctly and are using the supported parameters.
413 Request Entity Too Large There is currently a 50,000 byte limit for documents processed by PlaceSpotter. Documents above this length are rejected. Specify a smaller document.
415 Unsupported Media Type Document specified does not have a supported document type. Specify a valid media type. For a list of valid types, see the documentType query parameter.
999 Unable to process request at this time Your application is probably sending too many requests, too quickly. This can happen if you are batching requests. While this type of problem is usually temporary, if you continue to experience this error, we recommend that you try to wait (sleep) between requests to avoid this situation.

Examples

XML is the default response format. This example shows the XML response for the following parameters: ``documentContent=Sunnyvale+CA and

\ ``documentType=text/plain.

Request URI and Parameters:

https://yboss.yahooapis.com/geo/placespotter?documentContent=Sunnyvale+CA&documentType=text/plain

Response Data:

<bossresponse responsecode="200">
  <placespotter>
    <document>
      <administrativescope>
        <woeid>2502265</woeid>
        <type>Town</type>
        <name>Sunnyvale, CA, US</name>
        <centroid>
          <latitude>37.3716</latitude>
          <longitude>-122.038</longitude>
        </centroid>
      </administrativescope>
      <geographicscope>
        <woeid>2502265</woeid>
        <type>Town</type>
        <name>Sunnyvale, CA, US</name>
        <centroid>
          <latitude>37.3716</latitude>
          <longitude>-122.038</longitude>
        </centroid>
      </geographicscope>
      <localscopes>
        <localscope>
          <woeid>2502265</woeid>
          <type>Town</type>
          <name>Sunnyvale, CA, US (Town)</name>
          <centroid>
            <latitude>37.3716</latitude>
            <longitude>-122.038</longitude>
          </centroid>
          <southwest>
            <latitude>37.3316</latitude>
            <longitude>-122.081</longitude>
          </southwest>
          <northeast>
            <latitude>37.4518</latitude>
            <longitude>-121.979</longitude>
          </northeast>
          <ancestors>
            <ancestor>
              <woeid>12587712</woeid>
              <type>County</type>
              <name>Santa Clara</name>
            </ancestor>
            <ancestor>
              <woeid>2347563</woeid>
              <type>State</type>
              <name>California</name>
            </ancestor>
            <ancestor>
              <woeid>23424977</woeid>
              <type>Country</type>
              <name>United States</name>
            </ancestor>
          </ancestors>
        </localscope>
      </localscopes>
      <extents>
        <center>
          <latitude>37.3716</latitude>
          <longitude>-122.038</longitude>
        </center>
        <southwest>
          <latitude>37.3316</latitude>
          <longitude>-122.081</longitude>
        </southwest>
        <northeast>
          <latitude>37.4518</latitude>
          <longitude>-121.979</longitude>
        </northeast>
      </extents>
      <placedetails>
        <placeid>1</placeid>
        <place>
          <woeid>2502265</woeid>
          <type>Town</type>
          <name>Sunnyvale, CA, US</name>
          <centroid>
            <latitude>37.3716</latitude>
            <longitude>-122.038</longitude>
          </centroid>
        </place>
        <placereferenceids>1</placereferenceids>
        <matchtype>0</matchtype>
        <weight>1</weight>
        <confidence>10</confidence>
      </placedetails>
      <referencelist>
        <reference>
          <woeids>2502265</woeids>
          <placereferenceid>1</placereferenceid>
          <placeids>1</placeids>
          <start>0</start>
          <end>13</end>
          <isplaintextmarker>1</isplaintextmarker>
          <text>Sunnyvale,+CA</text>
          <type>plaintext</type>
          <xpath/>
        </reference>
      </referencelist>
    </document>
  </placespotter>
</bossresponse>
This example shows the JSON response for the following parameters: ``,
, and ``

Request URI and Parameters:

https://yboss.yahooapis.com/geo/placespotter?documentContent=Sunnyvale+CA&outputType=json&documentType=text/plain

Response Data:

({
  "bossresponse": {
    "responsecode": "200",
    "placespotter": [{
      "administrativescope": {
        "woeid": "2502265",
        "type": "Town",
        "name": "Sunnyvale, CA, US",
        "centroid": {
          "latitude": "37.3716",
          "longitude": "-122.038"
        }
      },
      "geographicscope": {
        "woeid": "2502265",
        "type": "Town",
        "name": "Sunnyvale, CA, US",
        "centroid": {
          "latitude": "37.3716",
          "longitude": "-122.038"
        }
      },
      "localscopes": [{
        "woeid": "2502265",
        "type": "Town",
        "name": "Sunnyvale, CA, US (Town)",
        "centroid": {
          "latitude": "37.3716",
          "longitude": "-122.038"
        },
        "southwest": {
          "latitude": "37.3316",
          "longitude": "-122.081"
        },
        "northeast": {
          "latitude": "37.4518",
          "longitude": "-121.979"
        },
        "ancestors": [{
          "woeid": "12587712",
          "type": "County",
          "name": "Santa Clara"
        },
        {
          "woeid": "2347563",
          "type": "State",
          "name": "California"
        },
        {
          "woeid": "23424977",
          "type": "Country",
          "name": "United States"
        }]
      }],
      "extents": {
        "center": {
          "latitude": "37.3716",
          "longitude": "-122.038"
        },
        "southwest": {
          "latitude": "37.3316",
          "longitude": "-122.081"
        },
        "northeast": {
          "latitude": "37.4518",
          "longitude": "-121.979"
        }
      },
      "placedetails": {
        "placeid": "1",
        "place": {
          "woeid": "2502265",
          "type": "Town",
          "name": "Sunnyvale, CA, US",
          "centroid": {
            "latitude": "37.3716",
            "longitude": "-122.038"
          }
        },
        "placereferenceids": "1",
        "matchtype": "0",
        "weight": "1",
        "confidence": "10"
      },
      "referencelist": [{
        "woeids": "2502265",
        "placereferenceid": "1",
        "placeids": "1",
        "start": "0",
        "end": "13",
        "isplaintextmarker": "1",
        "text": "Sunnyvale,+CA",
        "type": "plaintext"
      }]
    }]
  }
})

Request URI and Parameters:

https://yboss.yahooapis.com/geo/placespotter?documentContent=Sunnyvale+US&documentType=text/plain&autoDisambiguate=false&outputType=xml

Response Data:

<bossresponse responsecode="200">
  <placespotter>
    <document>
      <administrativescope>
        <woeid>2347563</woeid>
        <type>State</type>
        <name>California, US</name>
        <centroid>
          <latitude>37.2719</latitude>
          <longitude>-119.27</longitude>
        </centroid>
      </administrativescope>
      <geographicscope>
        <woeid>55857166</woeid>
        <type>Colloquial</type>
        <name>Northern California, CA, US</name>
        <centroid>
          <latitude>38.8979</latitude>
          <longitude>-120.028</longitude>
        </centroid>
      </geographicscope>
      <localscopes>
        <localscope>
          <woeid>2502265</woeid>
          <type>Town</type>
          <name>Sunnyvale, CA, US (Town)</name>
          <centroid>
            <latitude>37.3716</latitude>
            <longitude>-122.038</longitude>
          </centroid>
          <southwest>
            <latitude>37.3316</latitude>
            <longitude>-122.081</longitude>
          </southwest>
          <northeast>
            <latitude>37.4518</latitude>
            <longitude>-121.979</longitude>
          </northeast>
          <ancestors>
            <ancestor>
              <woeid>12587712</woeid>
              <type>County</type>
              <name>Santa Clara</name>
            </ancestor>
            <ancestor>
              <woeid>2347563</woeid>
              <type>State</type>
              <name>California</name>
            </ancestor>
            <ancestor>
              <woeid>23424977</woeid>
              <type>Country</type>
              <name>United States</name>
            </ancestor>
          </ancestors>
        </localscope>
        <localscope>
          <woeid>55970389</woeid>
          <type>Suburb</type>
          <name>Sunnyvale, Placerville, CA, US (Suburb)</name>
          <centroid>
            <latitude>38.7321</latitude>
            <longitude>-120.726</longitude>
          </centroid>
          <southwest>
            <latitude>38.7302</latitude>
            <longitude>-120.727</longitude>
          </southwest>
          <northeast>
            <latitude>38.7387</latitude>
            <longitude>-120.722</longitude>
          </northeast>
          <ancestors>
            <ancestor>
              <woeid>2473310</woeid>
              <type>Town</type>
              <name>Placerville</name>
            </ancestor>
            <ancestor>
              <woeid>12587678</woeid>
              <type>County</type>
              <name>El Dorado</name>
            </ancestor>
            <ancestor>
              <woeid>2347563</woeid>
              <type>State</type>
              <name>California</name>
            </ancestor>
            <ancestor>
              <woeid>23424977</woeid>
              <type>Country</type>
              <name>United States</name>
            </ancestor>
          </ancestors>
        </localscope>
      </localscopes>
      <extents>
        <center>
          <latitude>38.7321</latitude>
          <longitude>-120.726</longitude>
        </center>
        <southwest>
          <latitude>37.3316</latitude>
          <longitude>-122.081</longitude>
        </southwest>
        <northeast>
          <latitude>38.7387</latitude>
          <longitude>-120.722</longitude>
        </northeast>
      </extents>
      <placedetails>
        <placeid>1</placeid>
        <place>
          <woeid>2502265</woeid>
          <type>Town</type>
          <name>Sunnyvale, CA, US</name>
          <centroid>
            <latitude>37.3716</latitude>
            <longitude>-122.038</longitude>
          </centroid>
        </place>
        <placereferenceids>1</placereferenceids>
        <matchtype>0</matchtype>
        <weight>1</weight>
        <confidence>10</confidence>
      </placedetails>
      <placedetails>
        <placeid>2</placeid>
        <place>
          <woeid>55970389</woeid>
          <type>Suburb</type>
          <name>Sunnyvale, Placerville, CA, US</name>
          <centroid>
            <latitude>38.7321</latitude>
            <longitude>-120.726</longitude>
          </centroid>
        </place>
        <placereferenceids>1</placereferenceids>
        <matchtype>0</matchtype>
        <weight>1</weight>
        <confidence>1</confidence>
      </placedetails>
      <referencelist>
        <reference>
          <woeids>2502265 55970389</woeids>
          <placereferenceid>1</placereferenceid>
          <placeids>1 2</placeids>
          <start>0</start>
          <end>13</end>
          <isplaintextmarker>1</isplaintextmarker>
          <text>Sunnyvale, CA</text>
          <type>plaintext</type>
          <xpath/>
        </reference>
      </referencelist>
    </document>
  </placespotter>
</bossresponse>