Text Search (New) (original) (raw)

Skip to main content

Text Search (New)

Text Search (New) takes a text query and returns a list of matching places.

Text Search (New) returns information about a set of places based on a string — for example "pizza in New York" or "shoe stores near Ottawa" or "123 Main Street". The service responds with a list of places matching the text string and any location bias that has been set. Text Search (New) lets you search for places by type, filter using criteria such as business hours and rating, and restrict or bias results to a specific location.

To use Text Search (New), you must enable "Places API (New)" on your Google Cloud project. See Get started for details.

Find places by text query

Call searchByText to return a list of places from a text query or phone number. Specify search parameters using a request, and then call searchByText(). Results are returned as a list of Place objects, from which you can getplace details. The following snippet shows an example of a request and call to searchByText:

TypeScript

const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, };

//@ts-ignore const { places } = await Place.searchByText(request);

JavaScript

const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, }; //@ts-ignore const { places } = await Place.searchByText(request);

See the full list of properties.

If the query contains a phone number, the region parameter should be set. For example, if you use a phone number to search for a place in Japan, and the requesting domain is jp, you must set the region parameter to 'jp'. If region is omitted from the request, the API will default to the United States ('us') region.

Results are returned as a list of Place objects, from which you can getplace details.

Example

The following example uses searchByText to query for taco restaurants in the Mountain View vicinity, and populates a map with markers to show the results.

TypeScript

let map; let center;

async function initMap() { const { Map } = await google.maps.importLibrary("maps") as google.maps.MapsLibrary;

center = { lat: 37.4161493, lng: -122.0812166 };
map = new Map(document.getElementById('map') as HTMLElement, {
    center: center,
    zoom: 11,
    mapId: 'DEMO_MAP_ID',
});

findPlaces();

}

async function findPlaces() { const { Place } = await google.maps.importLibrary("places") as google.maps.PlacesLibrary; const { AdvancedMarkerElement } = await google.maps.importLibrary("marker") as google.maps.MarkerLibrary; const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, };

//@ts-ignore
const { places } = await Place.searchByText(request);

if (places.length) {
    console.log(places);

    const { LatLngBounds } = await google.maps.importLibrary("core") as google.maps.CoreLibrary;
    const bounds = new LatLngBounds();

    // Loop through and get all the results.
    places.forEach((place) => {
        const markerView = new AdvancedMarkerElement({
            map,
            position: place.location,
            title: place.displayName,
        });

        bounds.extend(place.location as google.maps.LatLng);
        console.log(place);
    });

    map.fitBounds(bounds);

} else {
    console.log('No results');
}

}

initMap();

JavaScript

let map; let center; async function initMap() { const { Map } = await google.maps.importLibrary("maps"); center = { lat: 37.4161493, lng: -122.0812166 }; map = new Map(document.getElementById('map'), { center: center, zoom: 11, mapId: 'DEMO_MAP_ID', }); findPlaces(); } async function findPlaces() { const { Place } = await google.maps.importLibrary("places"); const { AdvancedMarkerElement } = await google.maps.importLibrary("marker"); const request = { textQuery: 'Tacos in Mountain View', fields: ['displayName', 'location', 'businessStatus'], includedType: 'restaurant', locationBias: { lat: 37.4161493, lng: -122.0812166 }, isOpenNow: true, language: 'en-US', maxResultCount: 8, minRating: 3.2, region: 'us', useStrictTypeFiltering: false, }; //@ts-ignore const { places } = await Place.searchByText(request); if (places.length) { console.log(places); const { LatLngBounds } = await google.maps.importLibrary("core"); const bounds = new LatLngBounds(); // Loop through and get all the results. places.forEach((place) => { const markerView = new AdvancedMarkerElement({ map, position: place.location, title: place.displayName, }); bounds.extend(place.location); console.log(place); }); map.fitBounds(bounds); } else { console.log('No results'); } } initMap();

CSS

/*

#map { height: 100%; }

/*

HTML

Text Search
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
<!-- prettier-ignore -->
<script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})
    ({key: "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8", v: "weekly"});</script>

Try Sample

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-06-16 UTC.