Text Search (nueva)

Selecciona la plataforma: Android iOS JavaScript Servicio web

Una búsqueda de texto (nueva) muestra información sobre un conjunto de lugares en función de una cadena; por ejemplo, "pizza en Buenos Aires", "tiendas de zapatos cerca de Santiago" o "Calle principal 123". El servicio responde con una lista de lugares que coinciden con la cadena de texto y con cualquier personalización de ubicación que se haya establecido.

El servicio resulta particularmente útil para realizar consultas sobre direcciones ambiguas en un sistema automatizado y los componentes sin dirección de la cadena pueden establecer coincidencias con empresas y direcciones. Entre los ejemplos de consultas de direcciones ambiguas se incluyen direcciones con formato deficiente o solicitudes que incluyen componentes sin dirección, como nombres de empresas. Las solicitudes como los dos primeros ejemplos de la siguiente tabla pueden mostrar cero resultados, a menos que se establezca una ubicación, como una región, una restricción de ubicación o un sesgo de ubicación.

“10 High Street, Reino Unido” o “123 Main Street, EE.UU.” Varias "High Street" en el Reino Unido y varias "Main Street" en EE.UU. La consulta no muestra los resultados deseados, a menos que se establezca una restricción de ubicación.
"ChainRestaurant New York" Varias ubicaciones de "ChainRestaurant" en Nueva York, sin dirección ni nombre de calle
“10 High Street, Escher, Reino Unido” o “123 Main Street, Pleasanton, EE.UU.” Solo hay una “High Street” en la ciudad de Escher, Reino Unido, y una sola “Main Street” en la ciudad de Pleasanton, California, EE.UU.
"UniqueRestaurantName New York" Solo hay un establecimiento con este nombre en Nueva York, por lo que no se necesita una dirección para diferenciarlo.
"pizza restaurants in New York" Esta consulta contiene su restricción de ubicación y "pizzerías" es un tipo de lugar bien definido. Devuelve varios resultados.
"+1 514-670-8700"

Esta consulta contiene un número de teléfono. Muestra varios resultados de los lugares asociados con ese número de teléfono.

El Explorador de APIs te permite realizar solicitudes en vivo para que te familiarices con la API y sus opciones:

Pruébalo

Solicitudes de Text Search

Una solicitud de búsqueda de texto es una solicitud HTTP POST como la siguiente:

https://places.googleapis.com/v1/places:searchText

Pasa todos los parámetros en el cuerpo de la solicitud JSON o en los encabezados como parte de la solicitud POST. Por ejemplo:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel' \
'https://places.googleapis.com/v1/places:searchText'

Respuestas de Text Search (nueva)

La Búsqueda de texto (nueva) muestra un objeto JSON como respuesta. En la respuesta, figura lo siguiente:

  • El array places contiene todos los lugares que coinciden.
  • Cada lugar del array está representado por un objeto Place. El objeto Place contiene información detallada sobre un solo lugar.
  • La FieldMask que se pasa en la solicitud especifica la lista de campos que se devuelven en el objeto Place.

El objeto JSON completo tiene el siguiente formato:

{
  "places": [
    {
      object (Place)
    }
  ]
}

Parámetros obligatorios

  • FieldMask

    Para especificar la lista de campos que se mostrarán en la respuesta, crea una máscara de campo de respuesta. Pasa la máscara de campo de respuesta al método con el parámetro de URL $fields o fields, o con el encabezado HTTP X-Goog-FieldMask. No hay una lista predeterminada de campos que se muestran en la respuesta. Si omites la máscara de campo, el método mostrará un error.

    El enmascaramiento de campos es una práctica de diseño recomendada para garantizar que no solicites datos innecesarios, lo que ayuda a evitar tiempos de procesamiento y cargos de facturación adicionales.

    Especifica una lista separada por comas de los tipos de datos de lugar que se mostrarán. Por ejemplo, para recuperar el nombre visible y la dirección del lugar.

    X-Goog-FieldMask: places.displayName,places.formattedAddress

    Usa * para recuperar todos los campos.

    X-Goog-FieldMask: *

    Especifica uno o más de los siguientes campos:

    • Los siguientes campos activan el SKU Text Search (solo ID):

      places.attributions, places.id, places.name*, nextPageToken

      * El campo places.name contiene el nombre de recurso del lugar expresado de la siguiente forma: places/PLACE_ID. Utiliza places.displayName para acceder al nombre del lugar en forma de texto.
    • Los siguientes campos activan el SKU Text Search (Basic):

      places.accessibilityOptions, places.addressComponents, places.adrFormatAddress, places.businessStatus, places.containingPlaces, places.displayName, places.formattedAddress, places.googleMapsLinks*, places.googleMapsUri, places.iconBackgroundColor, places.iconMaskBaseUri, places.location, places.photos, places.plusCode, places.primaryType, places.primaryTypeDisplayName, places.pureServiceAreaBusiness, places.shortFormattedAddress, places.subDestinations, places.types, places.utcOffsetMinutes, places.viewport

      * El campo places.googleMapsLinks se encuentra en la etapa de vista previa de la fase previa a la DG y no se cobra, lo que significa que la facturación es de USD 0 por el uso durante la vista previa.
    • Los siguientes campos activan el SKU de Text Search (Advanced):

      places.currentOpeningHours, places.currentSecondaryOpeningHours, places.internationalPhoneNumber, places.nationalPhoneNumber, places.priceLevel, places.priceRange, places.rating, places.regularOpeningHours, places.regularSecondaryOpeningHours, places.userRatingCount, places.websiteUri
    • Los siguientes campos activan el SKU de Text Search (Preferred):

      places.allowsDogs, places.curbsidePickup, places.delivery, places.dineIn, places.editorialSummary, places.evChargeOptions, places.fuelOptions, places.goodForChildren, places.goodForGroups, places.goodForWatchingSports, places.liveMusic, places.menuForChildren, places.parkingOptions, places.paymentOptions, places.outdoorSeating, places.reservable, places.restroom, places.reviews, places.routingSummaries,* places.servesBeer, places.servesBreakfast, places.servesBrunch, places.servesCocktails, places.servesCoffee, places.servesDessert, places.servesDinner, places.servesLunch, places.servesVegetarianFood, places.servesWine, places.takeout

      * Solo Búsqueda de texto y Búsqueda cercana
  • textQuery

    Es la cadena de texto en la que se realiza la búsqueda, por ejemplo, "restaurante", "calle principal 123" o "mejor lugar para visitar en San Francisco". La API muestra posibles coincidencias en función de esta cadena y ordena los resultados según la relevancia percibida.

Parámetros opcionales

  • includedType

    Restringe los resultados a los lugares que coinciden con el tipo especificado en la Tabla A. Solo se puede especificar un tipo. Por ejemplo:

    • "includedType":"bar"
    • "includedType":"pharmacy"
  • includePureServiceAreaBusinesses

    Si se establece en true, la respuesta incluye empresas que visitan a los clientes o les entregan sus productos directamente, pero que no tienen una ubicación física. Si se establece en false, la API solo muestra empresas con una ubicación física.

  • languageCode

    Es el idioma en el que se mostrarán los resultados.

    • Consulta la lista de idiomas admitidos. Google actualiza con frecuencia los idiomas admitidos, por lo que es posible que esta lista no sea completa.
    • Si no se proporciona languageCode, el valor predeterminado de la API es en. Si especificas un código de idioma no válido, la API mostrará un error INVALID_ARGUMENT.
    • La API hace todo lo posible para proporcionar una dirección legible para el usuario y los locales. Para alcanzar este objetivo, muestra las direcciones en el idioma local transliterada en una secuencia de comandos legible para el usuario, si es necesario, que respete el idioma preferido. Todas las demás direcciones se muestran en el idioma preferido. Los componentes de la dirección se muestran en el mismo idioma, que se selecciona a partir del primer componente.
    • Si un nombre no está disponible en el idioma preferido, la API usa la coincidencia más cercana.
    • El idioma preferido tiene poco efecto en el conjunto de resultados que la API selecciona para mostrar y el orden en el que se muestran. El geocodificador interpreta las abreviaturas de forma diferente según el idioma, como las abreviaturas para tipos de calle o sinónimos que pueden ser válidos en un idioma pero no en otro.
  • locationBias

    Especifica un área para buscar. Esta ubicación funciona como un sesgo, lo que significa que se pueden mostrar resultados alrededor de la ubicación especificada, incluidos los resultados fuera del área especificada.

    Puedes especificar locationRestriction o locationBias, pero no ambos. Piensa en locationRestriction como la especificación de la región en la que deben estar los resultados y en locationBias como la especificación de la región en la que es probable que los resultados estén dentro o cerca, pero que puede estar fuera del área.

    Especifica la región como un viewport rectangular o como un círculo.

    • Un círculo se define por el punto central y el radio en metros. El radio debe estar entre 0.0 y 50000.0, inclusive. El valor predeterminado es 0.0. Por ejemplo:

      "locationBias": {
        "circle": {
          "center": {
            "latitude": 37.7937,
            "longitude": -122.3965
          },
          "radius": 500.0
        }
      }
    • Un rectángulo es un viewport de latitud-longitud, representado como dos puntos altos y bajos diagonalmente opuestos. El punto bajo marca la esquina suroeste del rectángulo, y el punto alto representa la esquina noreste del rectángulo.

      Un viewport se considera una región cerrada, lo que significa que incluye su límite. Los límites de latitud deben oscilar entre -90 y 90 grados inclusive, y los límites de longitud deben oscilar entre -180 y 180 grados inclusive:

      • Si low = high, la ventana de visualización consta de ese único punto.
      • Si low.longitude > high.longitude, el rango de longitud se invierte (la ventana de visualización cruza la línea de longitud de 180 grados).
      • Si low.longitude = -180 grados y high.longitude = 180 grados, la ventana de visualización incluye todas las longitudes.
      • Si low.longitude = 180 grados y high.longitude = -180 grados, el rango de longitud está vacío.
      • Si low.latitude > high.latitude, el rango de latitud está vacío.

      Se deben propagar los valores bajo y alto, y el cuadro representado no puede estar vacío. Un viewport vacío genera un error.

      Por ejemplo, este viewport encierra por completo la ciudad de Nueva York:

      "locationBias": {
        "rectangle": {
          "low": {
            "latitude": 40.477398,
            "longitude": -74.259087
          },
          "high": {
            "latitude": 40.91618,
            "longitude": -73.70018
          }
        }
      }
  • locationRestriction

    Especifica un área para buscar. No se muestran resultados fuera del área especificada.

    Especifica la región como un viewport rectangular. Para ver un ejemplo de cómo definir el viewport, consulta la descripción de locationBias.

    Puedes especificar locationRestriction o locationBias, pero no ambos. Piensa en locationRestriction como la especificación de la región en la que deben estar los resultados y en locationBias como la especificación de la región en la que es probable que los resultados estén dentro o cerca, pero que puede estar fuera del área.

  • maxResultCount (obsoleto)

    Especifica la cantidad de resultados (entre 1 y 20) que se mostrarán por página. Por ejemplo, si estableces un valor de maxResultCount de 5, se mostrarán hasta 5 resultados en la primera página. Si hay más resultados que se pueden mostrar a partir de la consulta, la respuesta incluye un nextPageToken que puedes pasar a una solicitud posterior para acceder a la siguiente página.

  • evOptions

    Especifica parámetros para identificar los conectores de carga y las tarifas de carga disponibles para vehículos eléctricos (VE).

    • connectorTypes

      Filtra por el tipo de conector de carga de VE disponible en un lugar. Se filtrará un lugar que no admita ninguno de los tipos de conectores. Los tipos de conectores de carga de VE compatibles incluyen cargadores combinados (CA y CC), cargadores Tesla, cargadores que cumplen con GB/T (para carga rápida de VE en China) y cargadores de tomacorrientes. Para obtener más información, consulta la documentación de referencia.

    • minimumChargingRateKw

      Filtra los lugares por la tarifa mínima de carga de VE en kilovatios (kW). Se filtran los lugares que cobran una tarifa inferior a la tarifa de carga mínima. Por ejemplo, para encontrar cargadores de VE con tasas de carga de al menos 10 kW, puedes establecer este parámetro en "10".

  • minRating

    Restringe los resultados solo a aquellos cuya calificación promedio de los usuarios sea superior o igual a este límite. Los valores deben estar entre 0.0 y 5.0 (inclusive) en incrementos de 0.5. Por ejemplo: 0, 0.5, 1.0, …, 5.0 inclusive. Los valores se redondean al 0.5 más cercano. Por ejemplo, un valor de 0.6 elimina todos los resultados con una calificación inferior a 1.0.

  • openNow

    Si es true, muestra solo los lugares que están abiertos en el momento en que se envía la consulta. Si es false, muestra todas las empresas, independientemente del estado de apertura. Los lugares que no especifican los horarios de atención en la base de datos de Google Places se mostrarán si estableces este parámetro en false.

  • pageSize

    Especifica la cantidad de resultados (entre 1 y 20) que se mostrarán por página. Por ejemplo, si estableces un valor de pageSize de 5, se mostrarán hasta 5 resultados en la primera página. Si hay más resultados que se pueden mostrar a partir de la consulta, la respuesta incluye un nextPageToken que puedes pasar a una solicitud posterior para acceder a la siguiente página.

  • pageToken

    Especifica el nextPageToken del cuerpo de la respuesta de la página anterior.

  • priceLevels

    Restringe la búsqueda a lugares que están marcados con ciertos niveles de precios. La opción predeterminada es seleccionar todos los niveles de precios.

    Especifica un array de uno o más valores definidos por PriceLevel.

    Por ejemplo:

    "priceLevels":["PRICE_LEVEL_INEXPENSIVE", "PRICE_LEVEL_MODERATE"]
  • rankPreference

    Especifica cómo se clasifican los resultados en la respuesta según el tipo de consulta:

    • Para una búsqueda categórica, como "Restaurantes en la ciudad de Nueva York", el valor predeterminado es RELEVANCE (clasifica los resultados por relevancia de la búsqueda). Puedes establecer rankPreference en RELEVANCE o DISTANCE (clasifica los resultados por distancia).
    • Para una consulta no categórica, como "Mountain View, CA", te recomendamos que no configures rankPreference.
  • regionCode

    Es el código de región que se usa para dar formato a la respuesta, especificado como un valor de código CLDR de dos caracteres. Este parámetro también puede tener un efecto sesgado en los resultados de la búsqueda. No hay un valor predeterminado.

    Si el nombre del país del campo formattedAddress en la respuesta coincide con regionCode, se omite el código de país de formattedAddress. Este parámetro no tiene efecto en adrFormatAddress, que siempre incluye el nombre del país cuando está disponible, ni en shortFormattedAddress, que nunca lo incluye.

    La mayoría de los códigos CLDR son idénticos a los códigos ISO 3166-1, con algunas excepciones notables. Por ejemplo, el ccTLD del Reino Unido es "uk" (.co.uk), mientras que su código ISO 3166-1 es "gb" (técnicamente para la entidad de "Reino Unido de Gran Bretaña e Irlanda del Norte"). El parámetro puede afectar los resultados según la ley aplicable.

  • strictTypeFiltering

    Se usa con el parámetro includedType. Cuando se establece en true, solo se muestran los lugares que coinciden con los tipos especificados por includeType. Cuando es falso, el valor predeterminado, la respuesta puede contener lugares que no coinciden con los tipos especificados.

Ejemplos de Text Search

Cómo buscar un lugar mediante una cadena de consulta

En el siguiente ejemplo, se muestra una solicitud de Búsqueda de texto para "Comida vegetariana picante en Sydney, Australia":

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress' \
'https://places.googleapis.com/v1/places:searchText'

Ten en cuenta que el encabezado X-Goog-FieldMask especifica que la respuesta contiene los siguientes campos de datos: places.displayName,places.formattedAddress. La respuesta tiene el siguiente formato:

{
  "places": [
    {
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "175 First Ave, Five Dock NSW 2046, Australia",
      "displayName": {
        "text": "Veggo Sizzle - Vegan & Vegetarian Restaurant, Five Dock, Sydney",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "29 King St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Peace Harmony",
        "languageCode": "en"
      }
    },
    ...
  ]
}

Agrega más tipos de datos a la máscara de campo para mostrar información adicional. Por ejemplo, agrega places.types,places.websiteUri para incluir el tipo de restaurante y la dirección web en la respuesta:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.types,places.websiteUri' \
'https://places.googleapis.com/v1/places:searchText'

La respuesta ahora tiene el siguiente formato:

{
  "places": [
    {
      "types": [
        "vegetarian_restaurant",
        "vegan_restaurant",
        "chinese_restaurant",
        "restaurant",
        "food",
        "point_of_interest",
        "establishment"
      ],
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "websiteUri": "http://www.motherchusvegetarian.com.au/",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    {
      "types": [
        "vegan_restaurant",
        "thai_restaurant",
        "vegetarian_restaurant",
        "indian_restaurant",
        "italian_restaurant",
        "american_restaurant",
        "restaurant",
        "food",
        "point_of_interest",
        "establishment"
      ],
      "formattedAddress": "175 First Ave, Five Dock NSW 2046, Australia",
      "websiteUri": "http://www.veggosizzle.com.au/",
      "displayName": {
        "text": "Veggo Sizzle - Vegan & Vegetarian Restaurant, Five Dock, Sydney",
        "languageCode": "en"
      }
    },
    ...
  ]
}

Cómo filtrar lugares por nivel de precio

Usa la opción priceLevel para filtrar los resultados a los restaurantes definidos como económicos o moderadamente costosos:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "priceLevels":["PRICE_LEVEL_INEXPENSIVE", "PRICE_LEVEL_MODERATE"]
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel' \
'https://places.googleapis.com/v1/places:searchText'

En este ejemplo, también se usa el encabezado X-Goog-FieldMask para agregar el campo de datos places.priceLevel a la respuesta, de modo que tenga el siguiente formato:

{
  "places": [
    {
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "115 King St, Newtown NSW 2042, Australia",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Green Mushroom",
        "languageCode": "en"
      }
    },
    ...
  ]
}

Agrega opciones adicionales para definir mejor tu búsqueda, como includedType, minRating, rankPreference, openNow y otros parámetros que se describen en Parámetros opcionales.

Cómo restringir la búsqueda a un área especificada

Usa locationRestriction o locationBias, pero no ambos, para restringir una búsqueda a un área. Piensa en locationRestriction como la especificación de la región en la que deben estar los resultados y en locationBias como la especificación de la región a la que deben estar cerca los resultados, pero que puede estar fuera del área.

Cómo restringir un área con locationRestriction

Usa el parámetro locationRestriction para restringir los resultados de la consulta a una región especificada. En el cuerpo de la solicitud, especifica los valores de latitud y longitud low y high que definen el límite de la región.

En el siguiente ejemplo, se muestra una solicitud de Búsqueda de texto para "comida vegetariana" en la ciudad de Nueva York. Esta solicitud solo muestra los primeros 10 resultados de los lugares que están abiertos.

curl -X POST -d '{
  "textQuery" : "vegetarian food",
  "pageSize" : "10",
  "locationRestriction": {
    "rectangle": {
      "low": {
        "latitude": 40.477398,
        "longitude": -74.259087
      },
      "high": {
        "latitude": 40.91618,
        "longitude": -73.70018
      }
    }
  }
}' \
  -H 'Content-Type: application/json' \
  -H 'X-Goog-Api-Key: API_KEY' \
  -H 'X-Goog-FieldMask: places.id,places.formattedAddress' \
  'https://places.googleapis.com/v1/places:searchText'

Cómo personalizar una área con locationBias

En el siguiente ejemplo, se muestra una solicitud de Búsqueda de texto para “comida vegetariana” sesgada a una ubicación dentro de un radio de 500 metros de un punto en el centro de San Francisco. Esta solicitud solo muestra los primeros 10 resultados de los lugares que están abiertos.

curl -X POST -d '{
  "textQuery" : "vegetarian food",
  "openNow": true,
  "pageSize": 10,
  "locationBias": {
    "circle": {
      "center": {"latitude": 37.7937, "longitude": -122.3965},
      "radius": 500.0
    }
  },
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress' \
'https://places.googleapis.com/v1/places:searchText'

Cómo buscar cargadores de VE con una tasa de carga mínima

Usa minimumChargingRateKw y connectorTypes para buscar lugares con cargadores disponibles que sean compatibles con tu VE.

En el siguiente ejemplo, se muestra una solicitud de conectores de carga para VE Tesla y J1772 tipo 1 con una tasa de carga mínima de 10 kW en Mountain View, California. Solo se muestran cuatro resultados.

curl -X POST -d '{
    "textQuery": "EV Charging Station Mountain View",
    "pageSize": 4,
    "evOptions": {
      "minimumChargingRateKw": 10,
      "connectorTypes": ["EV_CONNECTOR_TYPE_J1772","EV_CONNECTOR_TYPE_TESLA"]
    }
  }' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H "X-Goog-FieldMask: places.displayName,places.evChargeOptions" \
'https://places.googleapis.com/v1/places:searchText'

La solicitud muestra la siguiente respuesta:

{
  "places": [
    {
      "displayName": {
        "text": "EVgo Charging Station",
        "languageCode": "en"
      },
      "evChargeOptions": {
        "connectorCount": 16,
        "connectorAggregation": [
          {
            "type": "EV_CONNECTOR_TYPE_CHADEMO",
            "maxChargeRateKw": 100,
            "count": 8,
            "availableCount": 5,
            "outOfServiceCount": 0,
            "availabilityLastUpdateTime": "2024-01-10T19:10:00Z"
          },
          {
            "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1",
            "maxChargeRateKw": 100,
            "count": 2,
            "availableCount": 2,
            "outOfServiceCount": 0,
            "availabilityLastUpdateTime": "2024-01-10T19:10:00Z"
          },
          {
            "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1",
            "maxChargeRateKw": 350,
            "count": 6,
            "availableCount": 3,
            "outOfServiceCount": 0,
            "availabilityLastUpdateTime": "2024-01-10T19:10:00Z"
          }
        ]
      }
    },
    {
      "displayName": {
        "text": "EVgo Charging Station",
        "languageCode": "en"
      },
      "evChargeOptions": {
        "connectorCount": 6,
        "connectorAggregation": [
          {
            "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1",
            "maxChargeRateKw": 100,
            "count": 4,
            "availableCount": 3,
            "outOfServiceCount": 0,
            "availabilityLastUpdateTime": "2024-01-10T19:10:00Z"
          },
          {
            "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1",
            "maxChargeRateKw": 350,
            "count": 2,
            "availableCount": 0,
            "outOfServiceCount": 2,
            "availabilityLastUpdateTime": "2024-01-10T19:10:00Z"
          }
        ]
      }
    },
    {
      "displayName": {
        "text": "EVgo Charging Station",
        "languageCode": "en"
      },
      "evChargeOptions": {
        "connectorCount": 5,
        "connectorAggregation": [
          {
            "type": "EV_CONNECTOR_TYPE_J1772",
            "maxChargeRateKw": 3.5999999046325684,
            "count": 1,
            "availableCount": 0,
            "outOfServiceCount": 1,
            "availabilityLastUpdateTime": "2024-01-10T19:10:00Z"
          },
          {
            "type": "EV_CONNECTOR_TYPE_CHADEMO",
            "maxChargeRateKw": 50,
            "count": 2,
            "availableCount": 0,
            "outOfServiceCount": 0,
            "availabilityLastUpdateTime": "2024-01-10T19:10:00Z"
          },
          {
            "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1",
            "maxChargeRateKw": 50,
            "count": 2,
            "availableCount": 0,
            "outOfServiceCount": 0,
            "availabilityLastUpdateTime": "2024-01-10T19:10:00Z"
          }
        ]
      }
    },
    {
      "displayName": {
        "text": "Electric Vehicle Charging Station",
        "languageCode": "en"
      },
      "evChargeOptions": {
        "connectorCount": 10,
        "connectorAggregation": [
          {
            "type": "EV_CONNECTOR_TYPE_OTHER",
            "maxChargeRateKw": 210,
            "count": 10
          }
        ]
      }
    }
  ]
}

Busca empresas de servicio en área

Usa el parámetro includePureServiceAreaBusinesses para buscar empresas sin una dirección física de servicio (por ejemplo, un servicio de limpieza móvil o un camión de comida).

En el siguiente ejemplo, se muestra una solicitud de plomeros en San Francisco:

curl -X POST -d '{
  "textQuery" : "plumber San Francisco",
  "includePureServiceAreaBusinesses": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress' \
'https://places.googleapis.com/v1/places:searchText'

En la respuesta, las empresas sin una dirección física de servicio no incluyen el campo formattedAddress:

{
  "places": [
    {
      "formattedAddress": "3450 Sacramento St #204, San Francisco, CA 94118, USA",
      "displayName": {
        "text": "Advanced Plumbing & Drain",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "1455 Bancroft Ave, San Francisco, CA 94124, USA",
      "displayName": {
        "text": "Magic Plumbing Heating & Cooling",
        "languageCode": "en"
      }
    },
    /.../
    {
      "displayName": {
        "text": "Starboy Plumbing Inc.",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "78 Dorman Ave, San Francisco, CA 94124, USA",
      "displayName": {
        "text": "Cabrillo Plumbing, Heating & Air",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "540 Barneveld Ave # D, San Francisco, CA 94124, USA",
      "displayName": {
        "text": "Mr. Rooter Plumbing of San Francisco",
        "languageCode": "en"
      }
    },
    /.../
    {
      "displayName": {
        "text": "Pipeline Plumbing",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "350 Bay St #100-178, San Francisco, CA 94133, USA",
      "displayName": {
        "text": "One Source Plumbing and Rooter",
        "languageCode": "en"
      }
    },
    /.../
  ]
}

Especifica una cantidad de resultados que se mostrarán por página

Usa el parámetro pageSize para especificar la cantidad de resultados que se mostrarán por página. El parámetro nextPageToken en el cuerpo de la respuesta proporciona un token que se puede usar en llamadas posteriores para acceder a la siguiente página de resultados.

En el siguiente ejemplo, se muestra una solicitud de "pizza en Nueva York" limitada a 5 resultados por página:

 curl -X POST -d '{
  "textQuery": "pizza in New York",
  "pageSize": 5
  }' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H "X-Goog-FieldMask: places.id,nextPageToken" \
'https://places.googleapis.com/v1/places:searchText'
{
  "places": [
    {
      "id": "ChIJifIePKtZwokRVZ-UdRGkZzs"
    },
    {
      "id": "ChIJPxPd_P1YwokRfzLhSiACEoU"
    },
    {
      "id": "ChIJrXXKn5NZwokR78g0ipCnY60"
    },
    {
      "id": "ChIJ6ySICVZYwokR9rIK8HjXhzE"
    },
    {
      "id": "ChIJ6xvs94VZwokRnT1D2lX2OTw"
    }
  ],
  "nextPageToken": "AeCrKXsZWzNVbPzO-MRWPu52jWO_Xx8aKwOQ69_Je3DxRpfdjClq8Ekwh3UcF2h2Jn75kL6PtWLGV4ecQri-GEUKN_OFpJkdVc-JL4Q"
}

Para acceder a la siguiente página de resultados, usa pageToken para pasar el nextPageToken en el cuerpo de la solicitud:

 curl -X POST -d '{
  "textQuery": "pizza in New York",
  "pageSize": 5,
  "pageToken": "AeCrKXsZWzNVbPzO-MRWPu52jWO_Xx8aKwOQ69_Je3DxRpfdjClq8Ekwh3UcF2h2Jn75kL6PtWLGV4ecQri-GEUKN_OFpJkdVc-JL4Q"
  }' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H "X-Goog-FieldMask: places.id,nextPageToken" \
'https://places.googleapis.com/v1/places:searchText'
{
  "places": [
    {
      "id": "ChIJL-LN1N1ZwokR8K2jACu6Ydw"
    },
    {
      "id": "ChIJjaD94kFZwokR-20CXqlpy_4"
    },
    {
      "id": "ChIJ6ffdpJNZwokRmcafdROM5q0"
    },
    {
      "id": "ChIJ8Q2WSpJZwokRQz-bYYgEskM"
    },
    {
      "id": "ChIJ8164qwFZwokRhplkmhvq1uE"
    }
  ],
  "nextPageToken": "AeCrKXvPd6uUy-oj96W2OaqEe2pUD8QTxOM8-sKfUcFsC9t2Wey5qivrKGoGSxcZnyc7RPmaFfAktslrKbUh31ZDTkL0upRmaxA7c_c"
}

Pruébalo

El Explorador de APIs te permite realizar solicitudes de muestra para que te familiarices con la API y sus opciones.

  1. Selecciona el ícono de la API, Expande el Explorador de API., en el lado derecho de la página.

  2. De manera opcional, expande Mostrar parámetros estándar y establece el parámetro fields en la máscara de campo.

  3. De manera opcional, edita el Cuerpo de la solicitud.

  4. Selecciona el botón Ejecutar. En el cuadro de diálogo emergente, elige la cuenta que deseas usar para realizar la solicitud.

  5. En el panel del Explorador de API, selecciona el ícono de expansión, Expande el Explorador de API., para expandir la ventana del Explorador de API.