# Get Visitor Data

## Get the data associated with a specific IP address.

<mark style="color:blue;">`GET`</mark> `https://getgeoflow.com/beta/api/get-visitor-data`

The same properties outlined in the [Visitor Data Properties](https://developers.getgeoflow.com/geoflow-docs/overview/visitor-data-properties) table will be returned in the response, where available or applicable.

This will be based on an IP address you provide in the `X-Visitor-IP` header. If the header is omitted, the first IP address found in the `X-Forwarded-For` header will be used.

#### Headers

| Name                                            | Type   | Description        |
| ----------------------------------------------- | ------ | ------------------ |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer \<TOKEN>    |
| X-Visitor-IP                                    | String | Visitor IP Address |

{% tabs %}
{% tab title="200: OK Visitor Data Found" %}

```json
{
  "continentName": "Oceania",
  "continentCode": "OC",
  "countryName": "Australia",
  "countryCode": "AU",
  "region": "Oceania",
  "nationalCapital": "Canberra",
  "city": "Melbourne",
  "stateName": "Victoria",
  "stateCode": "VIC",
  "postalCode": "3000",
  "isEU": true,
  "timezone": "Australia/Melbourne",
  "latitude": "-37.81590",
  "longitude": "144.96690",
  "airportCode": "MEL",
  "currencyCode": "AUD",
  "currencySymbol": "$",
  "callingCode": 61,
  "language": "en-AU",
  "ASN": 4804,
  "ISP": "Optus",
  "isMobile": false,
  "deviceType": "Desktop",
  "dataSaver": false,
  "reducedMotion": false,
  "colorPreference": "dark",
  "OS": "Windows",
  "currentPage": "getgeoflow.com",
  "referer": "webflow.com",
  "userAgent": "Chrome/118.0.0.0",
  "IP": "192.168.1.1"
}
```

{% endtab %}

{% tab title="401: Unauthorized Unauthorized Request" %}

```json
{
    "status": 401,
    "message": "Unauthorized",
    "description": "No API key was provided or you do not have access to this resource. Please provide a valid Geoflow REST API key or contact support."
}
```

{% endtab %}

{% tab title="429: Too Many Requests Exceeded Rate Limit" %}

```json
{
    "status": 429,
    "message": "Too Many Requests",
    "description": "You have sent too many requests in a given amount of time. Please wait before sending more requests."
}
```

{% endtab %}

{% tab title="404: Not Found No Visitor Data Found or Invalid Endpoint" %}

```json
{
    "status": 404,
    "message": "Not Found",
    "description": "The endpoint you are trying to access does not exist or has been moved, or the visitor data could not be found based on the IP address used. Please refer to the Geoflow REST API documentation for further information or contact support."
}
```

{% endtab %}

{% tab title="405: Method Not Allowed Prohibited Method" %}

```json
{
    "status": 405,
    "message": "Method Not Allowed",
    "description": "The HTTP method used is not supported for this endpoint. Please refer to the Geoflow REST API documentation for further information or contact support."
}
```

{% endtab %}

{% tab title="500: Internal Server Error Unknown Error" %}

```json
{
    "status": 500,
    "message": "Internal Server Error",
    "description": "An unexpected error occurred on the server. The Geoflow API may be down or encountering another issue. Please try again later or contact support."
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
**Developer Warning**: Never share your API key with anyone or add it to client-side code. Where possible, use environment variables in your backend to keep your API key secure.
{% endhint %}
