FAQs

Frequently asked questions

What is a Peek?

A Peek is a set of screenshots of one page, captured at the same moment from several places in the world. You give GeoPeeker a URL, pick the locations you care about, and you get back one screenshot per location, side by side.

Each screenshot comes from a real server in that location rather than from a proxy, so what you see is what a visitor in that country would have seen.

Which locations can I peek from?

The free plan covers six locations. Paid plans open up to twelve, and Enterprise plans can be customized. The pricing page lists what each plan includes.

On paid plans you can also set the language and the screen size for each Peek, so you can check a localized page or a mobile layout without leaving the tool.

What IP addresses do GeoPeeker requests come from?

Every Peek, and every uptime, keyword and SSL check, comes from one of the worker nodes below. DNS checks query public DNS and never contact your server. These are the current addresses, read live from our node list:

  • Australia: 15.134.93.110
  • Brazil: 52.67.211.138
  • California: 18.144.108.46
  • Canada: 16.54.180.58
  • Germany: 63.188.68.211
  • India: 13.204.27.16
  • Ireland: 52.210.20.54
  • Japan: 52.193.158.189
  • Singapore: 56.10.149.205
  • Sweden: 16.192.47.13
  • United Kingdom: 16.61.183.3
  • Virginia: 44.194.250.5

This list changes as we add or move locations, so check back here before assuming a copy you saved is still current. The bot page has the same list along with the request headers and user agent we send.

How do I stop GeoPeeker from peeking my site?

If you own the site and don't want it peeked, use the report abuse form. We review each request. If it checks out, the domain goes on our ignore list.

You can also block GeoPeeker at your edge by denying the worker node IP addresses above, or rejecting requests whose User-Agent contains GeoPeeker. The bot page covers both.

My site blocks GeoPeeker. How do I let it through?

Allow the worker node IP addresses listed above in your firewall, WAF, or bot protection. IP addresses are the reliable signal here, because request headers can be forged and ours carry no special authority.

If you would rather match on the request itself, every HTTP request GeoPeeker makes sends a User-Agent that names the service and an X-Geopeeker-Agent header. Monitor checks add an X-Geopeeker-Version header. The bot page documents all of them.

Rate limiting is the other common cause. A Peek across twelve locations arrives as twelve near simultaneous requests for the same URL, which some protection rules read as an attack.

How to filter GeoPeeker traffic in your Google Analytics data

Peeks can show up in your Google Analytics data. A Peek loads your page in a real browser, so your analytics tag runs and records a visit. Monitors make plain HTTP requests that never run JavaScript, so they never reach Google Analytics.

Google Analytics runs in the visitor's browser and can't see request headers, so the X-Geopeeker-Agent header has to be read by your server before the page is sent. There are two ways to use it.

Option 1: leave the tag out for GeoPeeker. The simplest fix: when a request carries X-Geopeeker-Agent, don't print your Google Analytics snippet at all.

Plain PHP:

<?php if (empty($_SERVER['HTTP_X_GEOPEEKER_AGENT'])): ?>
    <!-- your Google Analytics (gtag.js) snippet -->
<?php endif; ?>

Laravel (Blade):

@unless (request()->hasHeader('X-Geopeeker-Agent'))
    <!-- your Google Analytics (gtag.js) snippet -->
@endunless

Node (Express), then only render the snippet when isGeoPeeker is false in your template:

app.use((req, res, next) => {
    res.locals.isGeoPeeker = Boolean(req.get('X-Geopeeker-Agent'));
    next();
});

Option 2: keep the tag and filter the traffic in GA4. If you'd rather keep the tag on every page, mark GeoPeeker's visits as internal traffic and let GA4 drop them:

  1. When the request carries X-Geopeeker-Agent, add traffic_type: 'internal' to your tag's config. In PHP, for example:
    gtag('config', 'G-XXXXXXXXXX', <?= empty($_SERVER['HTTP_X_GEOPEEKER_AGENT']) ? '{}' : "{ traffic_type: 'internal' }" ?>);
    If you use Google Tag Manager, push the value to the data layer instead (dataLayer.push({ traffic_type: 'internal' })) and set the traffic_type field on your Google tag from a Data Layer Variable.
  2. In GA4, go to Admin › Data collection and modification › Data filters and create a filter of type Internal traffic with the parameter value internal.
  3. Leave the filter in Testing for a day to check it catches the right visits, then switch it to Active. Data filters only apply from then on; visits already recorded stay in your reports.

Prefer not to touch your server? GA4 can also define internal traffic by IP address (Admin › Data streams › your stream › Configure tag settings › Define internal traffic) using the worker node IP addresses above. You'll need to update the rule if those addresses change.

If your pages are cached by a CDN or a full-page cache, make sure GeoPeeker's version of a page can't be served to real visitors: either skip the cache for requests with X-Geopeeker-Agent, or send Vary: X-Geopeeker-Agent. Otherwise a cached copy without your tag (or marked internal) could hide real visits.

Matching on the header is fine here: the worst anyone can do by copying it is leave their own visit out of your analytics.

Why did one of the locations come back empty?

Usually a temporary network problem between the worker node and your site. These clear on their own, so running the Peek again a few minutes later is the first thing to try.

If every location comes back empty and no IP address is shown, check the URL first. After that, the likely causes are DNS that has not finished propagating, a firewall or bot protection rejecting the worker nodes, or a DNS misconfiguration. Peeks also time out on pages that take a very long time to render.

If a location keeps failing after all that, tell us which one and we will look at the node.

How accurate are the screenshots?

GeoPeeker renders your page in a real browser on a server physically located in the place shown. GeoPeeker does not proxy the request or fake the geolocation, so geo-targeted redirects, regional CDN edges, currency switches and localized content all behave the way they would for a visitor there.

Two honest caveats. A Peek is a single moment, so anything that varies between page loads can differ from what a given visitor sees. And a page that renders slowly may be captured before it has fully settled.

Can I click around inside a Peek?

No. A Peek is a screenshot of one URL, not a remote browsing session. If you need to move through a site interactively from another country, a remote browser service is the right tool.

To cover more than one page on a paid plan, add the paths you care about to your site profile. Each path is captured on its own, so you can watch a checkout page or a landing page alongside the homepage.

Can GeoPeeker peek a page behind a login or on an internal network?

Pages behind a login are not supported. The worker nodes request your URL as an anonymous visitor that isn't signed in to your site, so the Peek shows the login wall.

Internal or private addresses can't be peeked either. GeoPeeker blocks localhost, private IP ranges and other reserved addresses. The worker nodes sit on the public internet, so a VPN only host is out of reach too.

What is the difference between a Quick Peek and an Auto Peek?

A Quick Peek is one you run yourself, right now, from the dashboard or the box on our homepage. Plans set how many you can run per hour. The free plan allows three an hour and five a day. Without an account, the homepage box allows three a day.

An Auto Peek runs on a schedule you choose and keeps the results in your history, so you can look back at how a page rendered last Tuesday. Auto Peeks are a paid feature, and the number you can set up depends on your plan.

What do the monitors watch, and how do notifications reach me?

GeoPeeker runs four kinds of check: uptime and HTTP status, keyword presence on the page, DNS records, and SSL certificates. They run on a schedule. Uptime and keyword checks run against the paths in your site profile. DNS and SSL checks run against your domain.

When an uptime or keyword check fails or recovers, or a DNS record changes, GeoPeeker catches it in the act with a fresh Peek. The Peek is saved with that result, so you can see what the page showed at the time.

The Free plan includes one uptime monitor, checked every 5 minutes, with email notifications to your account address. Paid plans check every minute and can notify you by text, email or Slack. How many monitors of each kind you can run depends on your plan.

What is a Peek Pass?

A Peek Pass gives a free account the Solo plan for 7 days, for one payment. You get Peeks from all 12 locations, up to 20 a day, with no watermark.

A pass doesn't renew. Buying another one adds 7 days to the end. When it ends, your account moves back to the free plan. A pass can't be refunded once it starts. See the pricing page for the price.

How does the free trial work?

A free account can try the Solo plan free for 14 days. A payment card is required to start the trial.

When the trial ends, your Solo subscription starts and your card is charged. Cancel from Subscription & Billing before the trial ends and you pay nothing. Each email address can have one trial.

How long do you keep my Peeks?

Between 30 and 365 days, depending on your plan. The free plan keeps 30 days of history and the top plans keep a year. Screenshots past your retention window are deleted automatically.

If you need a Peek for longer than that, download it before it ages out.

Why do Peeks on the free plan carry a watermark?

The free plan is meant for checking your own site, and the watermark keeps free Peeks from being passed off as someone else's work. Every paid plan produces watermark free screenshots.

Can I share a Peek with someone who does not have an account?

Yes. Any Peek you run while signed in can be given a share link that opens for anyone holding the URL, with no account needed. The page shows that Peek's screenshots, URL and location details, and nothing else from your account.

You can revoke a share link at any time from the Sharing page, which cuts off access immediately. A share link also stops working when the Peek ages out of your retention window. Shared pages carry a noindex tag, so search engines will not list them.

Can I add more people to my team?

Yes, on the Team and Enterprise plans. Team includes five seats, counting yours. Pending invitations hold a seat until they're accepted.

You can buy up to 45 more seats from the Subscription & Billing page. Changes are prorated onto your next bill. The pricing page lists the price per seat.

Can I see the page's HTML source as it was served?

Yes, on Pro plans and above. Alongside the screenshot, GeoPeeker stores the HTML each location received, which is how you confirm whether a regional difference came from the markup or from how the browser rendered it.

Is there an API?

Yes, on every paid plan. You can create a Peek, poll for its results, and list recent Peeks. Tokens are managed on the API Settings page, and any plan, free included, can create one and call a test endpoint that returns sample data.

The documentation covers authentication, the endpoints, and the rate limits.

What happens to my data if I cancel or delete my account?

Canceling a subscription drops you to the free plan and applies the free plan limits, including the 30 day retention window, so older screenshots age out. One uptime monitor keeps running.

Deleting your account removes your sites, Peeks, screenshots and monitors. You can ask for a copy of your data, or ask us to erase it, from the privacy request page.