getBotDetection() · Nuxt Robots · Nuxt SEO

[NuxtSEO](https://nuxtseo.com/ "Home")

- [Modules](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Tools](https://nuxtseo.com/tools)
- [Pro](https://nuxtseo.com/pro)
- [Learn SEO](https://nuxtseo.com/learn-seo/nuxt) [Releases](https://nuxtseo.com/releases)

[1.4K](https://github.com/harlan-zw/nuxt-seo)

[Nuxt SEO on GitHub](https://github.com/harlan-zw/nuxt-seo)

[User Guides](https://nuxtseo.com/docs/robots/getting-started/introduction)

[API](https://nuxtseo.com/docs/robots/api/use-robots-rule)

[Releases](https://nuxtseo.com/docs/robots/releases/v6)

Robots

- [Switch to Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Switch to Nuxt SEO](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [Switch to Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [Switch to OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Switch to Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Switch to Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [Switch to SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Switch to Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Switch to Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [Switch to AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

Search…```k`` /`

v6.0.7

- Playgrounds
- [Discord Support](https://discord.com/invite/275MBUBvgP)

### Nuxt API

- [`useRobotsRule()`](https://nuxtseo.com/docs/robots/api/use-robots-rule)
- [`useBotDetection()`](https://nuxtseo.com/docs/robots/api/use-bot-detection)
- [nuxt.config.ts](https://nuxtseo.com/docs/robots/api/config)
- [Nuxt Hooks](https://nuxtseo.com/docs/robots/api/nuxt-hooks)

### Nitro API

- [`getPathRobotConfig()`](https://nuxtseo.com/docs/robots/nitro-api/get-path-robot-config)
- [`getSiteRobotConfig()`](https://nuxtseo.com/docs/robots/nitro-api/get-site-robot-config)
- [`getBotDetection()`](https://nuxtseo.com/docs/robots/nitro-api/get-bot-detection)
- [Nitro Hooks](https://nuxtseo.com/docs/robots/nitro-api/nitro-hooks)

Nitro API

# getBotDetection()

[Copy for LLMs](https://nuxtseo.com/docs/robots/nitro-api/get-bot-detection.md)

## [Introduction](#introduction)

**Type:** `function getBotDetection(event: H3Event): BotDetectionContext`

Perform bot detection using request headers in server-side Nitro routes, middleware, and API handlers.

This function analyzes HTTP headers to detect known bots and returns detailed classification information.

**🔔 Important:** Bot detection only runs when you explicitly call these utility functions. No automatic bot detection occurs - it's entirely opt-in based on your usage of these functions.

## [Usage](#usage)

### [Basic Detection](#basic-detection)

```
// server/api/example.ts
import { getBotDetection } from '#robots/server/composables/getBotDetection'
import { defineEventHandler } from 'h3'

export default defineEventHandler(async (event) => {
  const detection = getBotDetection(event)

  if (detection.isBot) {
    return { message: 'Bot detected', bot: detection.botName }
  }

  return { message: 'Human user' }
})
```

### [Helper Functions](#helper-functions)

```
// server/api/bot-check.ts
import { getBotInfo, isBot } from '#robots/server/composables/getBotDetection'
import { defineEventHandler } from 'h3'

export default defineEventHandler(async (event) => {
  // Simple boolean check
  if (isBot(event)) {
    return { isBot: true }
  }

  // Get detailed bot info
  const botInfo = getBotInfo(event)
  return { isBot: false, info: botInfo }
})
```

### [Middleware Usage](#middleware-usage)

```
// middleware/bot-filter.ts
import { getBotDetection } from '#robots/server/composables/getBotDetection'
import { createError, defineEventHandler } from 'h3'

export default defineEventHandler(async (event) => {
  const detection = getBotDetection(event)

  // Block untrusted bots from API routes
  if (event.node.req.url?.startsWith('/api/') && detection.isBot && !detection.trusted) {
    throw createError({
      statusCode: 403,
      statusMessage: 'Bot access denied'
    })
  }
})
```

## [Return Type](#return-type)

### [`getBotDetection()`](#getbotdetection)

Returns the complete bot detection context:

```
interface BotDetectionContext {
  isBot: boolean
  userAgent?: string
  detectionMethod?: 'headers' | 'fingerprint'
  botName?: BotName // 'googlebot', 'twitterbot', 'claude', etc.
  botCategory?: BotCategory // 'search-engine', 'social', 'ai', etc.
  trusted?: boolean // Whether this is a legitimate bot
}
```

### [`isBot()`](#isbot)

**Type:** `function isBot(event: H3Event): boolean`

Simple boolean check for bot detection.

### [`getBotInfo()`](#getbotinfo)

**Type:** `function getBotInfo(event: H3Event): BotInfo | null`

Returns bot details if detected:

```
interface BotInfo {
  name?: BotName // Specific bot name ('googlebot', 'facebook', etc.)
  category?: BotCategory // Bot category ('search-engine', 'social', etc.)
  trusted?: boolean // Legitimacy flag
  method?: 'headers' | 'fingerprint' // Detection method
}
```

## [Detection Methods](#detection-methods)

- **headers**: Detected via HTTP headers and user agent analysis
- **fingerprint**: Detected via client-side browser fingerprinting (only available after client hydration)

## [Availability](#availability)

The bot detection state is available:

- ✅ **Server routes**: Immediately available
- ✅ **API handlers**: Immediately available
- ✅ **Middleware**: Immediately available
- ✅ **Server plugins**: Immediately available

Note that client-side fingerprint detection results are only available after the client has loaded and run the detection.

## [Pure Utility Functions](#pure-utility-functions)

For use outside of Nuxt/Nitro contexts, import from `/util`:

```
import { getBotDetection, getBotInfo, isBot } from '@nuxtjs/robots/util'

// Works with any headers object
const headers = { 'user-agent': 'Mozilla/5.0 (compatible; Googlebot/2.1)' }

const detection = getBotDetection(headers)
// { isBot: true, botName: 'googlebot', botCategory: 'search-engine', ... }

const isBotDetected = isBot(headers)
// true

const botInfo = getBotInfo(headers)
// { name: 'googlebot', category: 'search-engine', trusted: true, method: 'headers' }
```

These pure functions work in any JavaScript environment and don't require H3 events or Nuxt context.

[Edit this page](https://github.com/nuxt-modules/robots/edit/main/docs/content/3.nitro-api/1.get-bot-detection.md)

[Markdown For LLMs](https://nuxtseo.com/docs/robots/nitro-api/get-bot-detection.md)

Did this page help you?

[getSiteRobotConfig() See if the Site is indexable within Nitro.](https://nuxtseo.com/docs/robots/nitro-api/get-site-robot-config) [Nitro Hooks Learn how to use Nitro hooks to modify the robots final output.](https://nuxtseo.com/docs/robots/nitro-api/nitro-hooks)

On this page

- [Introduction](#introduction)
- [Usage](#usage)
- [Return Type](#return-type)
- [Detection Methods](#detection-methods)
- [Availability](#availability)
- [Pure Utility Functions](#pure-utility-functions)

[GitHub](https://github.com/harlan-zw/nuxt-seo) [ Discord](https://discord.com/invite/275MBUBvgP)

### [NuxtSEO](https://nuxtseo.com/ "Home")

- [Getting Started](https://nuxtseo.com/docs/nuxt-seo/getting-started/introduction)
- [MCP](https://nuxtseo.com/docs/nuxt-seo/guides/mcp)

Modules

- [Robots](https://nuxtseo.com/docs/robots/getting-started/introduction)
- [Sitemap](https://nuxtseo.com/docs/sitemap/getting-started/introduction)
- [OG Image](https://nuxtseo.com/docs/og-image/getting-started/introduction)
- [Schema.org](https://nuxtseo.com/docs/schema-org/getting-started/introduction)
- [Link Checker](https://nuxtseo.com/docs/link-checker/getting-started/introduction)
- [SEO Utils](https://nuxtseo.com/docs/seo-utils/getting-started/introduction)
- [Site Config](https://nuxtseo.com/docs/site-config/getting-started/introduction)
- [Skew Protection](https://nuxtseo.com/docs/skew-protection/getting-started/introduction)
- [AI Ready](https://nuxtseo.com/docs/ai-ready/getting-started/introduction)

### [NuxtSEO Pro](https://nuxtseo.com/pro "Home")

- [Getting Started](https://nuxtseo.com/pro)
- [Dashboard](https://nuxtseo.com/pro/dashboard)
- [Pro MCP](https://nuxtseo.com/docs/nuxt-seo-pro/mcp/installation)

### [Learn SEO](https://nuxtseo.com/learn-seo "Learn SEO")

Nuxt

- [Mastering Meta](https://nuxtseo.com/learn-seo/nuxt/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/nuxt/controlling-crawlers)
- [Launch & Listen](https://nuxtseo.com/learn-seo/nuxt/launch-and-listen)
- [Routes & Rendering](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering)
- [Staying Secure](https://nuxtseo.com/learn-seo/nuxt/routes-and-rendering/security)

Vue

- [Vue SEO Guide](https://nuxtseo.com/learn-seo/vue)
- [Mastering Meta](https://nuxtseo.com/learn-seo/vue/mastering-meta)
- [Controlling Crawlers](https://nuxtseo.com/learn-seo/vue/controlling-crawlers)
- [SPA SEO](https://nuxtseo.com/learn-seo/vue/spa)
- [SSR Frameworks](https://nuxtseo.com/learn-seo/vue/ssr-frameworks)
- [SEO Checklist](https://nuxtseo.com/learn-seo/checklist)
- [Pre-Launch Warmup](https://nuxtseo.com/learn-seo/pre-launch-warmup)
- [Backlinks & Authority](https://nuxtseo.com/learn-seo/backlinks)

### [Tools](https://nuxtseo.com/tools "SEO Tools")

- [Social Share Debugger](https://nuxtseo.com/tools/social-share-debugger)
- [Robots.txt Generator](https://nuxtseo.com/tools/robots-txt-generator)
- [Meta Tag Checker](https://nuxtseo.com/tools/meta-tag-checker)
- [HTML to Markdown](https://nuxtseo.com/tools/html-to-markdown)
- [XML Sitemap Validator](https://nuxtseo.com/tools/xml-sitemap-validator)
- [Schema.org Validator](https://nuxtseo.com/tools/schema-validator)
- [Keyword Idea Generator](https://nuxtseo.com/tools/keyword-generator)
- [Keyword Research](https://nuxtseo.com/tools/keyword-research)
- [SERP Analyzer](https://nuxtseo.com/tools/serp-analyzer)
- [Domain Rankings](https://nuxtseo.com/tools/domain-rankings)

Copyright © 2023-2026 Harlan Wilton - [MIT License](https://github.com/harlan-zw/nuxt-seo/blob/main/license) · [mdream](https://mdream.dev)