gaash.ai

AI Engines · 8 min read · September 25, 2026 · , gaash.ai

How ChatGPT reaches a gym's pages, and why the member app stays shut

For ChatGPT search to cite a gym's page, OpenAI's search crawler has to be allowed to fetch it, and the page has to state something a person asked about. OpenAI documents what each of its crawlers does; it does not document how ChatGPT chooses between gyms. The work splits in two: public pages that state the timetable, prices, terms and hours, and a member app kept behind its login.

What OpenAI's crawler page says, token by token

OpenAI's crawler documentation describes four tokens, and each is a separate decision for a gym's robots.txt:

  • OAI-SearchBot indexes pages for ChatGPT search. A site that disallows it is not shown in ChatGPT search answers, though it can still appear as a navigational link, and a change to its rules takes about 24 hours to apply.
  • GPTBot collects training data. Disallowing it does not remove a site from ChatGPT search answers.
  • ChatGPT-User fetches pages for actions a user starts, such as a member pasting the timetable link into a chat and asking when the next spin class is. It is not used for automatic crawling or to decide what appears in search, and OpenAI says robots.txt rules may not apply to it.
  • OAI-AdsBot visits only pages submitted as ads, so it concerns a gym only if it has submitted one.

Under RFC 9309, a group of rules belongs to the product tokens named at its head, and a group written for one token does not bind another. In a file that names neither OAI-SearchBot nor GPTBot, both follow the group for *, so a * group that disallows everything shuts ChatGPT search out along with every other crawler. ChatGPT-User is the one of the four a gym cannot manage from the file with any confidence, because OpenAI does not promise that robots.txt rules apply to it.

Nowhere does the page say how ChatGPT orders or selects the gyms it names, and this article does not guess. An answer can draw on a search, or on a model's training, which stops at a knowledge cutoff; in the second case a gym can be described with last spring's timetable. Where either route draws on your own site, it has what your pages said on the day they were read.

Which gym pages stay public, and which stay in the app

A gym with a member app runs two sites in one: the public pages anyone can read, and the app or portal behind a login. The first is for people who have not joined yet, which includes everyone asking an assistant where to train. The second holds what belongs to members. The line between them is sharper for a gym than it looks:

Which of a gym's facts belong on public pages, and which stay behind the member app's login.
On a public pageBehind the member login
The weekly timetable: class, time, length, level, coachPlaces left, waitlists, who has booked
Memberships, prices, the minimum term and how to cancelA member's contract, billing history and card on file
That new members complete a pre-exercise questionnaire, and whenThe completed questionnaire, and any health notes
Opening hours, staffed hours, and how night access works in generalDoor codes, key fob activation, a member's entry log
Coaches, what they teach, their credentialsTraining programs, progress logs, body measurements
Childcare hours, ages and how to book itA child's booking, name and emergency contact
How to freeze or cancel, in the gym's own termsThe freeze or cancellation request and its status
Day pass, drop-in and trial termsThe waiver a member signed

A crawler has no member account, so the login shuts the right-hand column to it, and the login is the only thing that should be doing that job. A Disallow line cannot: robots.txt is a public file that anyone can open, its lines are requests rather than locks, and OpenAI says its rules may not apply to ChatGPT-User. If a member pastes the address of the billing page into ChatGPT, what comes back should be the sign-in screen.

Door codes deserve a sentence of their own. A code on a public page, even one nothing links to, is readable by anyone who reaches the address, person or crawler. The public page says how night access works; the code lives in the app. The opposite mistake is the one a newcomer meets: a left-hand fact, such as the timetable or the cancellation terms, kept only inside the app, hidden from everyone who has not joined.

When the booking platform draws the timetable

Where a gym shows its classes through a booking platform's widget, the classes are drawn in the visitor's browser by a script. A fetcher that runs no scripts, which is the usual case, receives the frame without the classes, and OpenAI's crawler page promises no rendering step. In our audit of 9,483 small business websites (40 trades, 90 metros, late August to early September 2026), 3.0% rendered their content only in JavaScript; the figure covers the whole sample, and the audit publishes none for gyms.

The fix keeps the widget and adds the text: the standing week as an HTML table on your own domain, with the widget below it for booking. The timetable and prices article has the table to copy. If the platform also hosts a schedule page on its own domain, that page answers to the platform's robots.txt and bot settings, not yours, because a robots.txt file speaks only for the host that serves it. Treat the platform's page as the place members book, and your own pages as the place the facts live.

What a gym's public pages carry for a ChatGPT answer

OpenAI's page covers access, not content, so this part is reasoning: an answer built from search can repeat only what a fetched page says. For a gym, each fact a newcomer asks about needs to be:

  • On a public address of its own: the timetable, the prices and terms, the first visit (day pass and trial), each location, each offering with its own policies.
  • Named and placed, with the gym's name and neighborhood in each page's title and first paragraph, so a passage taken from the page still says which gym it describes.
  • Written as a sentence: "Memberships at [gym name] run month to month, with [n] days' notice to cancel", not a Join button above a price set in an image.
  • Dated where it changes: "Timetable from [date]", "Prices as of [date]".
  • Reachable from the homepage in a click or two. Internal linking is how a crawler that lands on the homepage finds the rest; a page linked only from inside the app is one no crawler is led to.
  • In HTML, not in a PDF, a flyer photo or a widget.

The same page serves every assistant whose crawler can reach it, so none of this is work for ChatGPT alone. Row by row, the facts themselves are on the gyms and fitness studios overview.

Checking what OpenAI's crawlers get from your site

  1. Open /robots.txt on your domain, or run the crawler access check, and find any group headed by OAI-SearchBot or GPTBot. If there is none, both take their rules from the * group.
  2. Ask for the timetable page under the search crawler's name and count one class name in what comes back: curl -s -A "OAI-SearchBot" https://www.example.com/timetable | grep -ci "spin", with a class from your own timetable in place of spin. A count of zero means the class is not in the HTML that user agent received, because of a block, a challenge page or a script.
  3. Where the count is zero, read the HTTP status code with curl -s -o /dev/null -w "%{http_code}" -A "OAI-SearchBot" and the same address. A 403 or a 503 is a refusal, and the setting that raises it lives in your CDN or security plugin; a 200 with no classes points at the widget.
  4. Open the timetable, prices and first-visit pages in a private window, signed out of the app. A public page that sends you to the sign-in screen does the same to every crawler.
  5. Paste the address of your prices page into ChatGPT and ask what the minimum term is. That fetch is ChatGPT-User's, and a reply that cannot read the page, or gives the wrong term, sends you back to the page.
  6. After changing a rule for OAI-SearchBot, wait a day before checking again; OpenAI puts the delay at about 24 hours.

Bot protection may treat your laptop differently from the real crawler, so a clean result from your office is good evidence and not proof; where your CDN keeps a log of OAI-SearchBot requests, the log settles it. These checks show that OpenAI's crawlers can reach and read the pages. Whether ChatGPT then names the gym is what a panel of questions measures, as AI visibility for gyms sets out, and the full token table is in robots.txt for AI crawlers.

Common questions

Can ChatGPT see the class times inside our booking app?

Only what arrives as text on a page it can fetch. The app sits behind a login, and a widget drawn by a script can reach a fetcher as an empty frame. Publish the standing week as a table on your own site, with the date it applies from, and let the app keep the places left, the waitlists and the bookings.

Should the instructions for night access be on the website?

The policy, yes: when members can get in, how (a fob, the app, a code issued at sign-up) and when staff are there. The codes themselves, never. A code on any public page can be read by anyone who reaches it, crawlers included, while a person deciding whether to join needs only the policy.

Does ChatGPT read the reviews members leave in our app?

Not behind a login. Quote real reviews as text on your public pages, with a first name, the date and the platform, where the member agreed. Leave rating markup out of the gym's own node: Google's review snippet rules make a business that controls the reviews about itself ineligible for review stars.

We are one location of a franchise, and the brand runs the website. What can we check?

The brand's robots.txt and bot settings cover every location page on its host, so ask whoever runs the site what OAI-SearchBot receives there. Then read your own location page: its hours, staffed hours, timetable and terms should be yours, not the national defaults. Where the page cannot carry them, raise it with the brand.

Sources

What each OpenAI token does comes from OpenAI's crawler documentation and goes no further than it does; how robots.txt groups are read is from RFC 9309. The one audit figure is this site's own and covers all 40 trades.

Sources: OpenAI, crawler documentation · RFC 9309, Robots Exclusion Protocol · Google, review snippet · our audit of 9,483 small-business sites, with its method

All articles