diff --git a/samples/geocoding-reverse/README.md b/samples/geocoding-reverse/README.md
new file mode 100644
index 00000000..0322715e
--- /dev/null
+++ b/samples/geocoding-reverse/README.md
@@ -0,0 +1,41 @@
+# Google Maps JavaScript Sample
+
+## geocoding-reverse
+
+The geocoding-reverse sample demonstrates reverse geocoding coordinates to addresses.
+
+## Setup
+
+### Before starting run:
+
+`npm i`
+
+### Run an example on a local web server
+
+`cd samples/geocoding-reverse`
+`npm start`
+
+### Build an individual example
+
+`cd samples/geocoding-reverse`
+`npm run build`
+
+From 'samples':
+
+`npm run build --workspace=geocoding-reverse/`
+
+### Build all of the examples.
+
+From 'samples':
+
+`npm run build-all`
+
+### Run lint to check for problems
+
+`cd samples/geocoding-reverse`
+`npx eslint index.ts`
+
+## 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/geocoding-reverse/index.html b/samples/geocoding-reverse/index.html
new file mode 100644
index 00000000..285ca6f2
--- /dev/null
+++ b/samples/geocoding-reverse/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ Reverse Geocoding
+
+
+
+
+
+
+
+
+
+
+ Click the map to reverse geocode, or paste in your own
+ coordinates.
+
+
+
+
+
+
+
+
diff --git a/samples/geocoding-reverse/index.ts b/samples/geocoding-reverse/index.ts
new file mode 100644
index 00000000..fc724a6a
--- /dev/null
+++ b/samples/geocoding-reverse/index.ts
@@ -0,0 +1,95 @@
+/**
+ * @license
+ * Copyright 2026 Google LLC. All Rights Reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ */
+// [START maps_geocoding_reverse]
+let marker;
+
+async function initMap() {
+ // Request the needed libraries.
+ const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] =
+ await Promise.all([
+ google.maps.importLibrary(
+ 'maps'
+ ) as Promise,
+ google.maps.importLibrary(
+ 'geocoding'
+ ) as Promise,
+ google.maps.importLibrary(
+ 'marker'
+ ) as Promise,
+ ]);
+
+ // Get the gmp-map element.
+ const mapElement = document.querySelector(
+ 'gmp-map'
+ ) as google.maps.MapElement;
+
+ // Get the inner map.
+ const innerMap = mapElement.innerMap;
+
+ // Get the latlng input box.
+ const latLngQuery = document.getElementById('latlng') as HTMLInputElement;
+
+ // Get the submit button.
+ const submitButton = document.getElementById('submit') as HTMLElement;
+
+ // Set the cursor to crosshair.
+ innerMap.setOptions({
+ draggableCursor: 'crosshair',
+ zoom: 13,
+ });
+
+ // Create a marker for re-use.
+ marker = new AdvancedMarkerElement({
+ map: innerMap,
+ });
+
+ const geocoder = new Geocoder();
+ const infowindow = new InfoWindow();
+
+ // Add a click event listener to the submit button.
+ submitButton.addEventListener('click', () => {
+ geocodeLatLng(geocoder, innerMap, infowindow);
+ });
+
+ // Add a click event listener to the map.
+ innerMap.addListener('click', (event) => {
+ latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`;
+ geocodeLatLng(geocoder, innerMap, infowindow);
+ });
+
+ // Make an initial request upon loading.
+ geocodeLatLng(geocoder, innerMap, infowindow);
+}
+
+async function geocodeLatLng(
+ geocoder: google.maps.Geocoder,
+ map: google.maps.Map,
+ infowindow: google.maps.InfoWindow
+) {
+ const input = (document.getElementById('latlng') as HTMLInputElement).value;
+ const latlngStr = input.split(',', 2);
+ const latlng = {
+ lat: parseFloat(latlngStr[0]),
+ lng: parseFloat(latlngStr[1]),
+ };
+
+ geocoder
+ .geocode({ location: latlng })
+ .then((response) => {
+ if (response.results[0]) {
+ marker.position = latlng;
+ map.setCenter(latlng);
+ infowindow.setContent(response.results[0].formatted_address);
+ infowindow.open(map, marker);
+ } else {
+ window.alert('No results found');
+ }
+ })
+ .catch((e) => window.alert('Geocoder failed due to: ' + e));
+}
+
+initMap();
+// [END maps_geocoding_reverse]
diff --git a/samples/geocoding-reverse/package.json b/samples/geocoding-reverse/package.json
new file mode 100644
index 00000000..f8a1c325
--- /dev/null
+++ b/samples/geocoding-reverse/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "@js-api-samples/geocoding-reverse",
+ "version": "1.0.0",
+ "scripts": {
+ "build": "tsc && bash ../jsfiddle.sh geocoding-reverse && bash ../app.sh geocoding-reverse && bash ../docs.sh geocoding-reverse && npm run build:vite --workspace=. && bash ../dist.sh geocoding-reverse",
+ "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/geocoding-reverse/style.css b/samples/geocoding-reverse/style.css
new file mode 100644
index 00000000..55a85b12
--- /dev/null
+++ b/samples/geocoding-reverse/style.css
@@ -0,0 +1,46 @@
+/**
+* @license
+* Copyright 2026 Google LLC. All Rights Reserved.
+* SPDX-License-Identifier: Apache-2.0
+*/
+/* [START maps_geocoding_reverse] */
+/*
+* Always set the map height explicitly to define the size of the div element
+* that contains the map.
+*/
+gmp-map {
+ height: 100%;
+}
+
+/*
+* Optional: Makes the sample page fill the window.
+*/
+html,
+body {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ font-family: Roboto, sans-serif;
+}
+
+#floating-panel {
+ background-color: #fff;
+ border-radius: 5px;
+ box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
+ margin: 10px;
+ padding: 15px;
+ font-family: Roboto, sans-serif;
+ font-size: 1rem;
+}
+
+#latlng {
+ width: 100%;
+ font-family: Roboto, sans-serif;
+ font-size: 1rem;
+ margin-bottom: 4px;
+}
+
+#submit {
+ font-size: 1rem;
+}
+/* [END maps_geocoding_reverse] */
diff --git a/samples/geocoding-reverse/tsconfig.json b/samples/geocoding-reverse/tsconfig.json
new file mode 100644
index 00000000..366aabb0
--- /dev/null
+++ b/samples/geocoding-reverse/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"
+ }
+}