---
title: "Geolocation in Edge Middleware"
description: "Learn how to use visitor's location at the edge."
url: "https://vercel.com/templates/next.js/edge-functions-geolocation"
links:
  repository: "https://github.com/vercel/examples/tree/main/edge-middleware/geolocation"
  demo: "https://edge-functions-geolocation.vercel.sh"
  deploy: "https://vercel.com/new/clone?demo-title=Geolocation+in+Edge+Middleware&demo-description=Learn+how+to+use+visitor%27s+location+at+the+edge.&demo-url=https%3A%2F%2Fedge-functions-geolocation.vercel.sh&project-name=geolocation&repository-name=geolocation&repository-url=https%3A%2F%2Fgithub.com%2Fvercel%2Fexamples%2Ftree%2Fmain%2Fedge-middleware%2Fgeolocation&demo-image=%2F%2Fimages.ctfassets.net%2Fe5382hct74si%2F5OUbQCXDoB56NMgdNlUtDE%2F903210b7029ba386e05ae63d2bdce33f%2Fedge-functions-geolocation.vercel.sh_.png"
---

# Geolocation in Edge Middleware

Learn how to use visitor's location at the edge.

---
name: Geolocation in Edge Middleware
slug: edge-functions-geolocation
description: Learn how to use visitor's location at the edge.
framework: Next.js
useCase:
  - Edge Middleware
  - Documentation
css: Tailwind
deployUrl: https://vercel.com/new/clone?repository-url=https://github.com/vercel/examples/tree/main/edge-middleware/geolocation&project-name=geolocation&repository-name=geolocation
demoUrl: https://edge-functions-geolocation.vercel.sh
relatedTemplates:
  - edge-functions-i18n
---

# Geolocation

This example shows how to use the `event.request` object to determine a user's location.

```ts
import { geolocation } from '@vercel/functions'

const geo = geolocation(req)

console.log(geo)

{
  /** The city that the request originated from. */
  city?: string;
  /** The country that the request originated from. */
  country?: string;
  /** The flag emoji for the country the request originated from. */
  flag?: string;
  /** The Vercel Edge Network region that received the request. */
  region?: string;
  /** The region part of the ISO 3166-2 code of the client IP. */
  countryRegion?: string;
  /** The latitude of the client. */
  latitude?: string;
  /** The longitude of the client. */
  longitude?: string;
}
```

## Demo

https://edge-functions-geolocation.vercel.sh

## How to Use

You can choose from one of the following two methods to use this repository:

### One-Click Deploy

Deploy the example using [Vercel](https://vercel.com?utm_source=github&utm_medium=readme&utm_campaign=vercel-examples):

[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/git/external?repository-url=https://github.com/vercel/examples/tree/main/edge-middleware/geolocation&project-name=geolocation&repository-name=geolocation)

### Clone and Deploy

Execute [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) with [pnpm](https://pnpm.io/installation) to bootstrap the example:

```bash
pnpm create next-app --example https://github.com/vercel/examples/tree/main/edge-middleware/geolocation geolocation
```

Next, run Next.js in development mode:

```bash
pnpm dev
```

Deploy it to the cloud with [Vercel](https://vercel.com/new?utm_source=github&utm_medium=readme&utm_campaign=edge-middleware-eap) ([Documentation](https://nextjs.org/docs/deployment)).

## Related Templates

### [i18n in Edge Middleware](https://vercel.com/templates/next.js/edge-functions-i18n)

This template shows how to redirect users based on i18n configuration.

---

## Additional documentation

The [Vercel Knowledge Base](https://vercel.com/kb) contains guides and answers to common questions about Vercel, including deployment, framework configuration, domains, caching, and troubleshooting.
