diff --git a/samples/ai-powered-summaries-basic/README.md b/samples/ai-powered-summaries-basic/README.md
new file mode 100644
index 00000000..1a4b6847
--- /dev/null
+++ b/samples/ai-powered-summaries-basic/README.md
@@ -0,0 +1,36 @@
+# Google Maps JavaScript Sample
+
+## ai-powered-summaries-basic
+
+The ai-powered-summaries-basic sample demonstrates how to retrieve AI-powered summaries.
+
+Follow these instructions to set up and run ai-powered-summaries-basic sample on your local computer.
+
+## Setup
+
+### Before starting run:
+
+`npm i`
+
+### Run an example on a local web server
+
+First `cd` to the folder for the sample to run, then:
+
+`npm start`
+
+### Build an individual example
+
+From `samples/`:
+
+`npm run build --workspace=ai-powered-summaries-basic/`
+
+### Build all of the examples.
+
+From `samples/`:
+
+`npm run build-all`
+
+## Feedback
+
+For feedback related to this sample, please open a new issue on
+[GitHub](https://github.com/googlemaps-samples/js-api-samples/issues).
diff --git a/samples/ai-powered-summaries-basic/index.html b/samples/ai-powered-summaries-basic/index.html
new file mode 100644
index 00000000..6def208f
--- /dev/null
+++ b/samples/ai-powered-summaries-basic/index.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+ AI-powered Summaries Basic Sample
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/ai-powered-summaries-basic/index.ts b/samples/ai-powered-summaries-basic/index.ts
new file mode 100644
index 00000000..58ab067d
--- /dev/null
+++ b/samples/ai-powered-summaries-basic/index.ts
@@ -0,0 +1,110 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+// [START maps_ai_powered_summaries_basic]
+const mapElement = document.querySelector('gmp-map') as google.maps.MapElement;
+let innerMap;
+let infoWindow;
+
+async function initMap() {
+ const { Map, InfoWindow } = (await google.maps.importLibrary(
+ 'maps'
+ )) as google.maps.MapsLibrary;
+
+ innerMap = mapElement.innerMap;
+ innerMap.setOptions({
+ mapTypeControl: false
+ });
+
+ infoWindow = new InfoWindow();
+ getPlaceDetails();
+}
+
+async function getPlaceDetails() {
+ // Request needed libraries.
+ const [ {AdvancedMarkerElement}, { Place } ] = await Promise.all([
+ google.maps.importLibrary('marker') as Promise,
+ google.maps.importLibrary('places') as Promise,
+ ]);
+
+ // [START maps_ai_powered_summaries_basic_placeid]
+ // Use place ID to create a new Place instance.
+ const place = new Place({
+ id: 'ChIJzzc-aWUM3IARPOQr9sA6vfY', // San Diego Botanic Garden
+ });
+ // [END maps_ai_powered_summaries_basic_placeid]
+
+ // Call fetchFields, passing the needed data fields.
+ // [START maps_ai_powered_summaries_basic_fetchfields]
+ await place.fetchFields({
+ fields: [
+ 'displayName',
+ 'formattedAddress',
+ 'location',
+ 'generativeSummary',
+ ],
+ });
+ // [END maps_ai_powered_summaries_basic_fetchfields]
+
+ // Add an Advanced Marker
+ const marker = new AdvancedMarkerElement({
+ map: innerMap,
+ position: place.location,
+ title: place.displayName,
+ });
+
+ // Create a content container.
+ const content = document.createElement('div');
+ // Populate the container with data.
+ const address = document.createElement('div');
+ const summary = document.createElement('div');
+ const lineBreak = document.createElement('br');
+ const attribution = document.createElement('div');
+
+ // Retrieve the textual data (summary, disclosure, flag URI).
+ //@ts-ignore
+ let overviewText = place.generativeSummary.overview ?? 'No summary is available.';
+ //@ts-ignore
+ let disclosureText = place.generativeSummary.disclosureText;
+ //@ts-ignore
+ let reportingUri = place.generativeSummary.flagContentURI;
+
+ // Create HTML for reporting link.
+ const reportingLink = document.createElement('a');
+ reportingLink.href = reportingUri;
+ reportingLink.target = '_blank';
+ reportingLink.textContent = "Report a problem."
+
+ // Add text to layout.
+ address.textContent = place.formattedAddress ?? '';
+ summary.textContent = overviewText;
+ attribution.textContent = `${disclosureText} `;
+ attribution.appendChild(reportingLink);
+
+ content.append(address, lineBreak, summary, lineBreak, attribution);
+
+ innerMap.setCenter(place.location);
+
+ // Handle marker click.
+ marker.addListener('gmp-click', () => {
+ showInfoWindow(marker, place, content);
+ });
+
+ // Display the info window at load time.
+ showInfoWindow(marker, place, content);
+}
+
+function showInfoWindow(marker, place, content) {
+ // Display an info window.
+ infoWindow.setHeaderContent(place.displayName);
+ infoWindow.setContent(content);
+ infoWindow.open({
+ anchor: marker,
+ });
+}
+
+initMap();
+// [END maps_ai_powered_summaries_basic]
diff --git a/samples/ai-powered-summaries-basic/package.json b/samples/ai-powered-summaries-basic/package.json
new file mode 100644
index 00000000..06aa6790
--- /dev/null
+++ b/samples/ai-powered-summaries-basic/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "@js-api-samples/ai-powered-summaries-basic",
+ "version": "1.0.0",
+ "scripts": {
+ "build": "tsc && bash ../jsfiddle.sh ai-powered-summaries-basic && bash ../app.sh ai-powered-summaries-basic && bash ../docs.sh ai-powered-summaries-basic && npm run build:vite --workspace=. && bash ../dist.sh ai-powered-summaries-basic",
+ "test": "tsc && npm run build:vite --workspace=.",
+ "start": "tsc && vite build --base './' && vite",
+ "build:vite": "vite build --base './'",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+
+ }
+}
diff --git a/samples/ai-powered-summaries-basic/style.css b/samples/ai-powered-summaries-basic/style.css
new file mode 100644
index 00000000..93167d23
--- /dev/null
+++ b/samples/ai-powered-summaries-basic/style.css
@@ -0,0 +1,25 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+/* [START maps_ai_powered_summaries_basic] */
+/*
+ * Always set the map height explicitly to define the size of the div element
+ * that contains the map.
+ */
+#map {
+ height: 100%;
+}
+
+/*
+ * Optional: Makes the sample page fill the window.
+ */
+html,
+body {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+}
+
+/* [END maps_ai_powered_summaries_basic] */
diff --git a/samples/ai-powered-summaries-basic/tsconfig.json b/samples/ai-powered-summaries-basic/tsconfig.json
new file mode 100644
index 00000000..366aabb0
--- /dev/null
+++ b/samples/ai-powered-summaries-basic/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "module": "esnext",
+ "target": "esnext",
+ "strict": true,
+ "noImplicitAny": false,
+ "lib": [
+ "es2015",
+ "esnext",
+ "es6",
+ "dom",
+ "dom.iterable"
+ ],
+ "moduleResolution": "Node",
+ "jsx": "preserve"
+ }
+}
diff --git a/samples/ai-powered-summaries/README.md b/samples/ai-powered-summaries/README.md
new file mode 100644
index 00000000..709d9585
--- /dev/null
+++ b/samples/ai-powered-summaries/README.md
@@ -0,0 +1,36 @@
+# Google Maps JavaScript Sample
+
+## ai-powered-summaries
+
+The ai-powered-summaries sample demonstrates how to show AI-powered summaries a map.
+
+Follow these instructions to set up and run ai-powered-summaries sample on your local computer.
+
+## Setup
+
+### Before starting run:
+
+`npm i`
+
+### Run an example on a local web server
+
+First `cd` to the folder for the sample to run, then:
+
+`npm start`
+
+### Build an individual example
+
+From `samples/`:
+
+`npm run build --workspace=ai-powered-summaries/`
+
+### Build all of the examples.
+
+From `samples/`:
+
+`npm run build-all`
+
+## Feedback
+
+For feedback related to this sample, please open a new issue on
+[GitHub](https://github.com/googlemaps-samples/js-api-samples/issues).
diff --git a/samples/ai-powered-summaries/index.html b/samples/ai-powered-summaries/index.html
new file mode 100644
index 00000000..02da9252
--- /dev/null
+++ b/samples/ai-powered-summaries/index.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+ AI Place Summaries
+
+
+
+
+
+
+
+
+