All posts
AI search

AI Crawler Behavior: How GPTBot Reads Your Site

Learn what AI crawlers request, how they differ from Googlebot and how to check that search bots can access your important pages.

STSearchFIT team17 minutes read

AI crawler behavior describes how bots from companies such as OpenAI, Anthropic and Perplexity request, read and revisit web pages. Server logs can show which bots visited, what they requested and whether your site returned an error, but they cannot prove that a page was understood or cited. The practical aim is to make useful content accessible to the search crawlers you want, while managing unwanted traffic and protecting your site.

That means looking beyond a bot’s name in a user-agent string. Check the HTML it can receive, the response your server returns, the rules in robots.txt and the crawler’s role. If you are building an AI search measurement plan alongside these checks, SearchFIT’s AI search resources are a useful place to continue.

What is AI crawler behavior?

A crawler is software that requests web pages automatically. It follows links or uses a list of known URLs, then sends what it retrieves to another system. A traditional search engine uses crawlers to build an index. An AI company may use different crawlers to collect training material, prepare a search index or fetch a page in response to a user’s request.

AI crawler behavior is the pattern of those requests and responses. It includes which URLs a bot visits, how frequently it visits them, what content the server returns and whether requests succeed. The term does not mean that a bot thinks about a page as a person would. A log entry records an HTTP request, not comprehension.

Here are the basic terms:

  • Crawler or bot: A program that requests web resources automatically.
  • User agent: A label sent with a request to identify the software, such as GPTBot or Googlebot. It can be copied, so it is not proof of identity by itself.
  • Server log: A record of requests handled by your web server or hosting platform. Depending on the log, it can include time, URL, status code, user agent and IP address.
  • HTTP status code: A number describing the result of a request. For example, 200 usually means success, 403 means access was refused, and 429 means the server limited the requester.
  • Index: A searchable collection of information about pages. A crawler visit does not guarantee that the page enters an index.

A useful first distinction is between discovery and use. A bot may find a URL but fail to retrieve its content. It may retrieve the page without including it in a search index. Even a page in an index may not be selected as a source for a particular answer.

The main types of AI crawlers

There is no single “AI bot” with one purpose. Some AI platforms identify separate user agents for separate tasks. OpenAI, for example, documents GPTBot, OAI-SearchBot and ChatGPT-User as distinct agents. Its crawler documentation explains their different roles and how site owners can manage access.

TypeWhat it generally doesWhat a visit does not prove
Training crawlerCollects publicly available material that may be used in model development.That your page will appear in a live answer or receive a referral.
Search crawlerFinds pages for a search index that can support current answers and citations.That every crawled page will be indexed or cited.
User-triggered fetcherRetrieves a page after a person asks an assistant to read or analyse it.That the page is part of a permanent search index.

Training crawlers

A training crawler collects material for possible use in developing or improving models. Examples include GPTBot and ClaudeBot. Anthropic’s crawler guidance describes its crawler and how website owners can express preferences using robots.txt.

A training visit can matter to an organisation’s data and access policies. It is not the same thing as a search visit. A training crawler’s request alone does not establish that its content was used to train a particular model, nor does it typically provide a referral visit from a customer.

Search crawlers

A search crawler gathers pages for a system that can retrieve them when answering a current question. Examples include OAI-SearchBot and PerplexityBot; Anthropic also documents Claude-SearchBot. Their role is closer to search discovery than model training, although each company’s systems and policies differ.

If you want a page to be eligible for a platform’s search results, blocking that platform’s search crawler may reduce its ability to discover or refresh the page. It still does not follow that allowing a crawler guarantees a citation. The platform decides what to index and which sources to show.

User-triggered fetchers

A user-triggered fetcher requests a page because someone has asked an assistant to open a URL, inspect a page or use it in a task. OpenAI calls one such agent ChatGPT-User; Anthropic documents Claude-User. These requests may be occasional and tied to an individual interaction rather than a broad crawl schedule.

This difference is useful when investigating a report that “ChatGPT cannot read our page”. A search crawler not visiting a page and a user-triggered fetch returning an error are separate problems. Look for the actual user agent and response in your logs before deciding which access rule to change.

How AI crawlers differ from Googlebot

Googlebot and AI crawlers both make automated requests, but they do not all fetch, render or use pages in the same way. Google explains that it can process JavaScript through its Web Rendering Service. The AI crawler behaviour described in technical observations is often simpler: many AI crawlers retrieve the server’s initial HTML and do not run the page as a full browser would. The exact behaviour varies by bot and may change.

AreaGooglebotAI crawlers
Main purposeDiscover and process pages for Google Search, including features such as AI Overviews.May collect training material, build an AI search index or fetch a page for a user.
JavaScriptGoogle can render JavaScript, though rendering may happen separately from the initial fetch.Many commonly observed AI crawlers rely on the HTML returned by the server and may not execute client-side JavaScript.
User-agent meaningGoogle documents its crawler identities and verification approach.Several AI companies publish separate names for search, training and user-triggered agents.
SchedulingCrawling is managed by Google’s systems and affected by site health and demand.Patterns differ by operator. Log analysis can show bursts, gaps or repeated requests, but not the crawler’s full scheduling logic.
ReferralSearch results can send visitors to a site.Search answers may link to sources, but training crawls are not referral visits and search referrals depend on the product and user behaviour.

The key point is not that Googlebot is always gentle or every AI bot behaves aggressively. It is that you should not assume a single crawl pattern or rendering capability across platforms. A site that works in a browser may return very little readable content to a bot that only receives the initial response.

Cloudflare’s analysis of AI crawler traffic examines crawler activity and the different purposes behind it. It is a useful reminder to read bot traffic in context rather than grouping all automated requests together.

What server logs can tell you

Server logs are one of the best ways to see how automated requests interact with your site. They show activity at the server boundary: what the requester asked for and what your infrastructure returned. They do not reveal everything that happened after a successful response.

A typical access-log record might include:

  • The request time, often recorded in a standard time zone.
  • The IP address that made the request.
  • The HTTP method, commonly GET for fetching a page.
  • The requested path, such as /pricing or /products/widget.
  • The response status and, sometimes, response size and processing time.
  • The user-agent string supplied by the requester.
  • A referrer, if one was sent. Automated requests often have no useful referrer.

Read the pattern, not one line

One request from GPTBot to your homepage is a clue, not a diagnosis. Look at a time range and ask what the bot did across it. Did it request product pages? Did it repeatedly fetch URL variants with tracking parameters? Did it reach the page but receive a challenge? Did the same request return 200 one day and 503 the next?

For example, an online shop might see requests to /products/linen-shirt, followed by many URLs such as /collections/shirts?sort_by=price. That pattern could mean the crawler is exploring product and collection pages, or it could be spending requests on parameter variations that do not add useful content. Check the actual response and page purpose before deciding whether to allow or restrict those paths.

A B2B software company might see a crawler request /pricing and /docs/integrations. If both return a successful status, that is a positive access signal. It does not prove the content is visible in the returned HTML, that the platform has indexed the URLs or that an answer will cite them. Those questions need separate checks.

Understand common response codes

  • 200 OK: The server returned a successful response. Check the response body as well: a 200 error page, empty app shell or access-denied message is still a problem.
  • 301 or 302 redirect: The URL points elsewhere. Confirm the redirect target is appropriate and that it does not create a chain or loop.
  • 403 Forbidden: A security rule, permission or server policy denied the request.
  • 404 Not Found: The requested path was not found. Some bots will request old or guessed URLs; a few 404 responses are not automatically a problem.
  • 429 Too Many Requests: A rate limit or traffic-control rule refused the request.
  • 5xx server errors: The server or an upstream service failed. Repeated errors can stop useful pages from being retrieved.

A 200 does not equal “AI-ready”, and a single 403 does not mean your whole site is blocked. Group requests by bot, URL, response code and time. Then inspect representative pages in a browser and in the raw server response.

JavaScript: can AI crawlers see your content?

JavaScript is code that can change a web page after it loads. A site may send a small HTML shell to the browser, then use JavaScript to request and display the actual page content. A person sees the finished page, but a crawler that only reads the initial HTML may see an empty container instead.

This commonly affects client-rendered single-page applications. A single-page application, or SPA, loads one main page shell and uses JavaScript to update the screen as a person navigates. If the initial HTML contains only something like <div id="root"></div>, a crawler that does not execute the application may not receive the visible product description, pricing details or documentation text.

Do not assume that every AI crawler has the same rendering limits. Technical reporting, including Encited’s review of AI crawler JavaScript rendering, discusses why a site’s initial response can matter. Test the bots and pages important to your business rather than relying on a broad claim that “AI cannot read JavaScript”.

A simple test for the initial HTML

Use curl to request a page and inspect the response body. This checks what the server returns before a full browser renders the page. For example:

curl -L -A "OAI-SearchBot" https://example.com/pricing

Replace example.com with your domain and use a page you are authorised to test. The -L option follows redirects. Search the output for the actual text that matters: the product description, plan details, headings or support answer. If it is missing, inspect the page source and server-rendering setup with your developer.

This command changes the user-agent label, but it does not make your request an authenticated OpenAI crawl. A user agent can be spoofed. The test checks how your site responds when presented with that label, not whether a real crawler will receive precisely the same treatment from every network and security layer.

What to do if the content is missing

The most reliable fix is often to make core content available in the initial HTML. Options include:

  1. Server-side rendering (SSR): The server builds the page’s HTML for each request, including the main content, before sending it to the browser or crawler.
  2. Static generation: The site creates HTML pages ahead of time and serves those files when requested. This can suit stable pages such as product information, guides and documentation.
  3. Pre-rendering: A service or edge system prepares an HTML version of a page that would otherwise depend on JavaScript. Test that it serves consistent, current content and does not create a separate misleading version for bots.
  4. A simpler content fallback: Where rebuilding is not practical, ensure essential descriptions and links are present in server-returned HTML, not only in scripts or images.

Do not render a page only for bots with content that differs from what customers see. A reliable page should give people and crawlers the same substantive information. For more on making content answerable and useful, see SearchFIT’s guide to content strategies for AI search visibility.

Why AI crawler traffic may arrive in bursts

A log graph can show a crawler requesting many URLs close together, then going quiet. This is a burst pattern. It may happen as a bot discovers a new set of pages, revisits URLs or processes links at scale. The log shows the timing and volume on your site; it does not explain the crawler’s internal schedule or prove that every URL was useful to it.

Bursting matters when requests are expensive. A cached article page may be cheap to serve, while a product filter can trigger database work, inventory checks and multiple application calls. A bot that requests many filter combinations in a short time can add load even if each page works well for a human visitor.

Review which paths account for the volume. Prioritise:

  • Search pages, internal search results and filter combinations that create endless URL variations.
  • Pages with tracking parameters that lead to duplicate versions of the same content.
  • Expensive uncached pages or endpoints that are not intended for public browsing.
  • Old routes, repeated missing pages and URLs that redirect through several steps.

Useful responses include caching stable pages, limiting unnecessary URL variations, setting sensible rate limits and reducing expensive work at the edge. Rate limits should be tested carefully. A rule that reduces unwanted load can also block a legitimate search crawler or a person-triggered fetcher if it is too broad.

If you use a security service, review its bot controls and managed rules as well as your own configuration. Cloudflare documents its AI Crawl Control and Pay Per Crawl features. Product behaviour and availability can change, so consult its current documentation before changing a live policy.

Robots.txt: control access by crawler type

robots.txt is a plain-text file at the root of a website that gives crawlers instructions about which paths they may request. For example, https://example.com/robots.txt is the file for example.com. A Disallow rule asks a crawler that follows the Robots Exclusion Protocol not to fetch matching paths.

The important word is “asks”. robots.txt is not a password, a firewall or a way to remove content already copied elsewhere. It does not guarantee that every bot will comply. Use authentication or server-side access controls for private material.

When a provider identifies separate training and search bots, a blanket rule can have unintended consequences. Blocking GPTBot is different from blocking OAI-SearchBot; the first is associated with training collection, while the second supports OpenAI search discovery. The right policy depends on your data preferences and your goal of being discoverable in AI search.

A simplified example of separate rules might look like this:

User-agent: OAI-SearchBot
Allow: /

User-agent: GPTBot
Disallow: /

This is an illustration, not a universal recommendation. Check each vendor’s current documentation and your existing file before editing it. Rules have defined matching and grouping behaviour, and a more specific group is not always combined with a general group in the way a reader expects. A syntax error or conflicting rule can produce a different outcome from the one you intended.

After changing the file:

  1. Open the public robots.txt URL and confirm the new version is live.
  2. Check that there is not another rule inserted by a content delivery network, hosting platform or security product.
  3. Test important paths against the intended user-agent group using an appropriate robots testing tool.
  4. Check server logs over time for the bot’s requests and response codes.
  5. Remember that a crawler may cache rules, so the change may not be reflected immediately.

Allowing a crawler also does not force it to visit a URL. Make pages easy to discover through internal links and a sitemap, and keep their canonical URLs consistent. A canonical URL is the preferred version of a page when several URLs show substantially the same content.

Verify bots before taking action

The user-agent string is a useful starting point, but it can be faked. A request that claims to be GPTBot may come from a different service. Before building a policy around a bot, verify its identity using the method published by its operator.

OpenAI provides published crawler IP information in its bot documentation. Where a vendor provides IP ranges or a verification process, use the current official method. Google documents verification methods for Googlebot, including reverse DNS checks. Reverse DNS is a lookup from an IP address to a hostname; it can help confirm identity when used correctly, but do not treat an arbitrary hostname as proof.

A practical verification process is:

  • Record the IP address, user agent, request path, time and response code.
  • Compare the IP with the crawler operator’s current official data, if available.
  • Follow the vendor’s documented verification steps. Do not assume one provider’s method applies to another.
  • Avoid allowing or blocking wide cloud-hosting IP ranges just because a request came from them. Those ranges may host many unrelated services.
  • Keep a note of the policy change and monitor its effects.

If you cannot verify a bot, be cautious about giving it a special allowance. Conversely, do not block a potentially legitimate search crawler based on a user-agent string alone. Apply general rate limits and security controls that protect the site without relying on an unverified identity.

Structured data and clear page content

Structured data is information formatted so software can identify entities and their relationships. Schema.org markup is a common vocabulary; JSON-LD is a format used to include that markup in a page. For example, an organisation can describe its name and website, while a product page can identify a product, its brand and other relevant details.

Structured data can add context, but it does not replace readable page content. Put accurate, relevant information in the visible page and make sure any markup is consistent with it. If a crawler only receives initial HTML, essential structured data should be present in that response too. Check the rendered source rather than assuming a script added later will be visible to every bot.

For a SaaS pricing page, clearly state the plan names, what each plan includes, and any conditions customers need to know. For an e-commerce product page, provide a distinct title, description, availability information and useful product details. Schema can help label these facts, but it cannot make missing or contradictory information trustworthy.

A practical audit for marketers and site owners

Use this sequence for a focused check of your most important pages. Start with a small set: your homepage, a product or service page, pricing, a high-value guide and one key support or documentation page.

1. Decide which crawlers you want

List the relevant bots by purpose: training, search or user-triggered retrieval. Write down the business preference for each. For instance, a publisher may want to allow search discovery while limiting training collection. Another organisation may choose a different balance for content or privacy reasons.

Do not treat “allow AI” and “block AI” as the only choices. Separate rules can help make a more deliberate decision, provided the vendors support separate identities and follow your instructions.

2. Check the robots file and security layer

Read the live robots.txt, not just the version in your code repository. Then check the hosting dashboard, CDN and web application firewall (WAF). A WAF is a security layer that filters requests before they reach your application. It may block or challenge a bot even when robots.txt allows it.

Look for challenges, managed rules, bot protection settings and automatic robots directives. A crawler that receives a browser challenge or a block page may not be able to complete it as a person can.

3. Test the returned HTML

Fetch each priority URL with curl, then inspect the returned HTML for the main content, links and any structured data you rely on. Also check for redirects, consent walls or a generic error page. Repeat for a few relevant crawler user-agent labels if your infrastructure applies different rules based on them.

4. Review logs by bot and path

Filter logs for known bot names, but treat the label as unverified until checked. Group the results by URL, status code, request time and IP. Note whether requests reach the important pages, whether they receive errors, and whether traffic concentrates on low-value URL variants.

If your hosting provider has separate logs for the CDN and origin server, compare them. A CDN is a network layer that can serve cached copies of content without asking your main server for each request. A request may be blocked at the edge and never appear in the origin log.

5. Fix the highest-impact access problem first

If the page is disallowed, fix the relevant rule only if you want that crawler to access it. If the page returns an error, investigate the WAF, rate limit or application failure. If its main content is absent from the HTML, work with your developer on server rendering or pre-rendering. If the bot is spending time on duplicate filters, reduce crawlable URL combinations or make them cheaper to serve.

6. Monitor after changes

Record the date, change and affected URLs. Check logs again after the site and crawler have had time to reflect the update. Compare the types of pages requested and the responses they receive. Keep monitoring citation visibility separately: access is a technical prerequisite, not a guarantee of inclusion in an answer.

A tool such as SearchFIT can complement technical checks by helping teams monitor AI visibility and organise content work. See SearchFIT pricing to understand the platform options, and keep technical access checks in your own log and page-testing workflow.

Common mistakes to avoid

Treating every bot as one thing

Blocking all AI-related names with a broad rule can block search discovery as well as training access. Decide by crawler role and verify the current names with the provider.

Assuming a successful status means the content is readable

A 200 response may contain an empty JavaScript shell, a consent screen or a generic error. Inspect the HTML body and look for the information you want indexed.

Trusting the user-agent label on its own

Anyone can send a request with a chosen user-agent string. Verify suspected bots using the operator’s method before building allow lists or drawing conclusions about traffic.

Blocking aggressively without checking business impact

A training bot may offer no direct referral, but a search crawler may support discovery in a generative search product. The value and appropriate policy differ by business. Decide based on your content, risk tolerance and visibility goals.

Expecting robots.txt to protect private information

A disallow instruction is public and voluntary. It does not hide a URL or protect its contents. Put confidential information behind proper authentication and access controls.

Treating crawl volume as a visibility metric

More requests do not necessarily mean more citations, leads or sales. Crawler activity is a technical signal. To measure whether your brand appears in AI answers, track that outcome separately. SearchFIT’s guide to AEO KPIs covers measurement beyond raw page activity.

The practical takeaway

AI crawler behavior is best understood by combining three kinds of evidence: the crawler’s documented purpose, what your server logs record and the HTML your site actually returns. Separate training bots from search and user-triggered fetchers. Verify identities, inspect errors and test important pages without relying on a full browser rendering.

Then make a deliberate access policy. Allow the search crawlers you want to reach your public content, block or limit other traffic where it fits your policy, and make sure your site can serve useful content reliably. Crawling is only one step toward being cited, but it is a step you can test and improve. To see how to evaluate and improve your overall presence in AI search engines, read our guide on SearchFIT vs agencies.

Get SearchFIT Weekly

What we are learning about getting brands cited in AI search, in your inbox every week. Unsubscribe any time.