# ua:bot_category values

- Canonical URL: https://docs.fairvisor.com/docs/policy/bot-categories/
- Section: docs
- Last updated: n/a
> Reference list of bot categories returned by the ua:bot_category descriptor.


`ua:bot_category` is populated by Fairvisor's bot classifier, which matches the incoming `User-Agent` string against a compiled automaton of known bots.

## Categories

| Value | Description | Notable examples |
|---|---|---|
| `ai_crawler` | AI training and indexing crawlers | GPTBot, ClaudeBot, anthropic-ai, Google-Extended, Bytespider, CCBot |
| `ai_assistant_user` | Requests triggered by an AI assistant on behalf of a user | ChatGPT-User, Claude-Web |
| `search_engine` | Search engine indexing crawlers | Googlebot, Bingbot, Applebot-Extended |
| `social_preview` | Link preview fetchers from social platforms and messaging apps | Slackbot, Twitterbot, facebookexternalhit |
| `seo_research` | SEO auditing and research tools | Ahrefsbot, SemrushBot, MJ12bot |
| `archiver` | Web archiving crawlers | ia_archiver (Internet Archive), HTTrack |
| `monitoring_uptime` | Uptime and synthetic monitoring agents | Pingdom, UptimeRobot, StatusCake |
| `other_bot` | Recognized bots that do not fit the above categories, and the default fallback for any matched bot without a more specific classification | — |

## Usage

Use `ua:bot_category` as a limit key or match condition:

```json
{
  "name": "ai-crawlers",
  "limit_keys": ["ua:bot_category"],
  "algorithm": "token_bucket",
  "algorithm_config": {
    "tokens_per_second": 5,
    "burst": 10
  },
  "match": {
    "ua:bot_category": "ai_crawler"
  }
}
```

Or combine with `ua:bot` to apply a rule only to any recognized bot, regardless of category:

```json
{
  "name": "all-bots",
  "limit_keys": ["ip:address"],
  "algorithm": "token_bucket",
  "algorithm_config": {
    "tokens_per_second": 20,
    "burst": 40
  },
  "match": {
    "ua:bot": "true"
  }
}
```

## Classification behavior

- Matching is case-insensitive substring matching against a compiled Aho–Corasick automaton.
- If the User-Agent matches no known pattern, `ua:bot` returns `"false"` and `ua:bot_category` is not populated — the rule is skipped.
- Unrecognized bots that happen to set a bot-like User-Agent are not classified; use `ip:address` as a universal fallback.

