Skip to content
New storyWe built Skald to count visitors. It caught an AI-key thief.
SkaldEvery visit, truly told.

AI traffic · Perplexity

Perplexity traffic: what it fetched, and who clicked

Perplexity traffic starts long before anyone clicks. PerplexityBot indexes your pages, Perplexity-User reads them while someone waits, and some readers follow the citation. Skald shows each one apart.

Perplexity traffic is everything Perplexity does on your website: PerplexityBot crawling to build its index, Perplexity-User fetching a page at the moment someone asks a question, and people who click a citation from perplexity.ai. A script tag sees only the last. Your server log holds all three.

30-day free trial · no card · we set it up within one working day · free to self-host

two belts into one log · sample

PerplexityBotindexes ahead of any question

/pricing//docs//blog/

Perplexity-Userfetches when someone asks

"best server log analytics?" /compare/
a person clicks the citation · referrer perplexity.ai
index crawls
152
live fetches
197
people sent
46

Sample month. Three counts that never add up to one: two machines and the people who followed them.

[01] your rules

You blocked AI training. Perplexity still reads every page.

PerplexityBot builds a search index and Perplexity-User answers one person's question. Neither trains a model, so "block training only" refuses neither. Pick a rule and watch which tiles turn over. One part of AI traffic tracking.

pick a rule
companytrains a modelsearch indexa person asked
OpenAI GPTBotinGPTBotrefused · 403 OAI-SearchBotinOAI-SearchBotrefused · 403 ChatGPT-UserinChatGPT-Userrefused · 403
Anthropic ClaudeBotinClaudeBotrefused · 403anthropic-aiinanthropic-airefused · 403 Claude-SearchBotinClaude-SearchBotrefused · 403 Claude-UserinClaude-Userrefused · 403Claude-WebinClaude-Webrefused · 403
Perplexity no training crawler PerplexityBotinPerplexityBotrefused · 403 Perplexity-UserinPerplexity-Userrefused · 403

GPTBot, ClaudeBot and anthropic-ai are refused. Perplexity has no training crawler in the list, so both of its tiles stay in.

your settings

{"owners": {"OpenAI": "block_training",
            "Anthropic": "block_training",
            "Perplexity": "block_training"},
 "crawlers": {}}

the nginx file Skald writes from them

map $http_user_agent $skald_block_agent {
    default 0;
    "~*GPTBot" 1;
    "~*ClaudeBot" 1;
    "~*anthropic-ai" 1;
}

Three of the companies behind the 39 crawler names Skald knows, with sample settings. The tiers and the file are the code's own (bot_policy.py): nginx, the web server in front of many sites, reads it. robots.txt, the file where a site asks crawlers to stay away, is always answered, so a refused crawler can still read your rules.

[02] is it really Perplexity

Anyone can call itself PerplexityBot. Two lists say who is real.

Perplexity publishes one address list for PerplexityBot and one for Perplexity-User. Skald checks a request against both, because both belong to one owner. It calls a request a fake only when both lists are fresh. With one list too old, it says it cannot tell.

pick a request

203.0.113.51 "GET /compare/" "PerplexityBot/1.0"

addresses 203.0.113.0 to 203.0.113.255 · sample ranges

perplexitybot.json fetched 1 day ago

perplexity-user.json fetched 1 day ago

verdict

Verified

On perplexitybot.json. Counted as PerplexityBot, with the crawls that train or index, under its own name.

The order is the code's (bot_verify.py): on any of the owner's lists, verified; on none, a fake only if every list is 7 days old or less; otherwise not verifiable.

[03] the people it sent

A Perplexity click rings in four ways. One name answers.

A click's caller ID is its referrer, the address of the page it came from. The website, its subdomains, the Android app and a utm tag (a utm_source= label on the link) all mean Perplexity. Count them as they come and Perplexity is three rows in your sources. Skald files them as one: perplexity.ai. A visit with no caller ID is only ever "likely", and kept apart.

answer one
46clicks from Perplexity, counted · a floor
23likely from Perplexity · kept apart

Sample month. 46 and 23 are never added: the 23 stay "Direct or unknown" in every count.

incoming visit · sample

caller ID

https://www.perplexity.ai/

"GET /pricing/" ref https://www.perplexity.ai/

filed as

People · source perplexity.ai

The referrer's host is perplexity.ai or one of its subdomains, so Skald names it Perplexity.

Before the click, Perplexity-User fetched /pricing/ 1 minute before and /reviews/ 2 minutes before.

[04] when it changes

Perplexity sent you three times its usual. You hear about it the next morning.

Skald compares yesterday's visits likely sent by Perplexity with its daily average over the 28 days before. A jump to 3 times the average, and at least 10, is an alert. So is a drop to 10% of an average of 5 or more. Below both, it says "too few to judge" and stays quiet.

drag yesterday

28 days beforeyesterday

what Skald does

Alert: perplexity.ai jumped

perplexity.ai likely sent 24 visits on Fri 23 Oct

Visits likely sent by perplexity.ai on Fri 23 Oct (2026-10-23): 24. Its daily average over the 28 days before (2026-09-25 to 2026-10-22): 6.2. Jumped: 3x the average and 10+.

Sample days. The words are the alert's own (alerts_ai.py), built on likely visits that a second count already checked. A day is judged only when all 29 days were counted.

  1. Started reading Perplexity fetched a page yesterday that it had not fetched in the 28 days before.
  2. Stopped reading A page Perplexity fetched in at least 3 of the 4 weeks before has gone 7 days without a fetch.
Skald table of what each crawler costs with sample data: requests, bytes sent, mean time, errors and re-crawls for PerplexityBot, GPTBot, ClaudeBot and more
Sample data. PerplexityBot: 152 requests, 7.8 MB, 124 ms mean, 3% errors.

Each real Perplexity fetcher also gets a cost and a share of your sitemap reached. AI crawl health

[05] what it cannot see

Where Perplexity traffic tracking stops

Skald sees what reaches your server log, and no more. These are the gaps.

What it does not do

  • It does not know what Perplexity tells each person. AI answers samples answers with your own API keys, as a direction over weeks.
  • Clicks from Perplexity are a floor. Likely visits are an estimate, kept apart, never added.
  • A user agent is self-reported. A fetcher that hides its name cannot be told apart from a reader.
  • Without a server or CDN log (a CDN, such as Cloudflare, is a service that serves your pages from near each reader), Perplexity's fetches are not seen at all.

questions

Perplexity traffic FAQ

Straight answers, including what Skald does not do.

How do I track traffic from Perplexity?

People who click a citation arrive with perplexity.ai as the referrer, and any analytics tool counts them. Perplexity's own fetches, by PerplexityBot and Perplexity-User, never run a script, so only your server log shows them. Skald reads both from the log and keeps them apart.

What is the difference between PerplexityBot and Perplexity-User?

PerplexityBot crawls ahead of any question to build Perplexity's index. Nobody is waiting on it. Perplexity-User fetches a page because one person asked Perplexity something just then. Skald counts the first with the training crawls and the second as a live fetch.

Is that PerplexityBot really Perplexity?

Skald checks it. Perplexity publishes the addresses of PerplexityBot and of Perplexity-User, and Skald compares every request with them. A request using the name from another address is filed under bots as "claims to be PerplexityBot".

Why do some Perplexity visits show as direct?

The referrer is often lost on the way, in apps or by privacy settings. When a direct visit lands on a page Perplexity-User fetched up to 15 minutes before, Skald marks it likely from Perplexity. It stays a direct visit in every count.

Does Block training only keep Perplexity out?

No. Perplexity's two crawlers build its search index and answer people's questions; neither is a training crawler. To keep Perplexity out, block the company, or block PerplexityBot on its own. How blocking AI crawlers works.

$ tail -f access.log | skald

See what AI does with your site. Free for 30 days.

No card. We set up hosted Skald for you within one working day, or you self-host it free. Every line of your log, sorted and added up.

Start free trial Live demo