<!--
{
  "availability" : [
    "MapKit JS: 5.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "MapKitJS",
  "identifier" : "/documentation/MapKitJS/Search/search",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "MapKit JS"
    ],
    "preciseIdentifier" : "instm/mapkit.Search/search"
  },
  "title" : "search(query, options)"
}
-->

# search(query, options)

Retrieves the results of a search query.

```
search(
    query: string | SearchAutocompleteResult,
    options?: SearchOptions,
): Promise<SearchResponse>;
```

## Parameters

`query`

A `String` or a [`SearchAutocompleteResult`](/documentation/MapKitJS/SearchAutocompleteResult).

`options`

Options for this specific query that supersede values set on the [`Search`](/documentation/MapKitJS/Search) object. See [`SearchOptions`](/documentation/MapKitJS/SearchOptions).

## Return Value

A promise that resolves with a [`SearchResponse`](/documentation/MapKitJS/SearchResponse) on success, or rejects with an `Error` on failure.

## Discussion

The [`search(query, options)`](/documentation/MapKitJS/Search/search) method returns a set of locations that matches a user-entered query or a [`SearchAutocompleteResult`](/documentation/MapKitJS/SearchAutocompleteResult).

The resolved [`SearchResponse`](/documentation/MapKitJS/SearchResponse) contains the following properties:

- [`places`](/documentation/MapKitJS/SearchResponse/places) (array of [`Place`](/documentation/MapKitJS/Place)). An array of [`Place`](/documentation/MapKitJS/Place) objects. The places array is empty if there isn’t a match.
- [`query`](/documentation/MapKitJS/SearchResponse/query) (String). The query that corresponds to the results, if you don’t use [`SearchAutocompleteResult`](/documentation/MapKitJS/SearchAutocompleteResult) to perform the search. Optional.
- [`boundingRegion`](/documentation/MapKitJS/SearchResponse/boundingRegion) ([`CoordinateRegion`](/documentation/MapKitJS/CoordinateRegion)). A region that encloses the search results. This property isn’t present if there aren’t any results.

Pass an `AbortSignal` from an `AbortController` to the [`signal`](/documentation/MapKitJS/SearchOptions/signal) option to allow the controller to cancel a pending request. When the controller aborts, the promise it returns rejects with a `DOMException` whose `name` is `"AbortError"`.

The following example searches for *coffee shop* in and around the visible map area, and adds the results as annotations:

```javascript
const search = new mapkit.Search({ region: map.region });

try {
    const data = await search.search("coffee shop");
    const annotations = data.places.map((place) => {
        const annotation = new mapkit.MarkerAnnotation(place.coordinate);
        annotation.title = place.name;
        annotation.subtitle = place.formattedAddress;
        annotation.color = "#9B6134";
        return annotation;
    });
    map.showItems(annotations);
} catch (error) {
    // Handle the search error.
}
```

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)