For twenty years, "can machines read my store?" meant one thing: can a crawler fetch the HTML and index it. Browser agents such as Meta's Muse have changed the question. They do not fetch your page. They visit it, the way a person would, and they leave the way a person would when it gets in their way.
What is the difference between a crawler and a browser agent?
A crawler downloads a page and files it; a browser agent uses the page to get something done. That one difference changes almost everything about what "readable" means.
A search crawler requests a URL, reads the markup, follows the links and moves on. It never clicks "add to cart". It does not care whether your size selector works, because it never touches it. A browser agent is given a goal by a shopper, such as "find me a waterproof jacket under $200 in a medium and tell me when it would arrive". It opens a real browser, loads the page with scripts running, works out what is on the screen, and takes actions toward that goal. Every step a customer takes, it takes.
| Search crawler | Browser agent | |
|---|---|---|
| Goal | Index the page | Complete a shopper's task |
| What it loads | HTML, sometimes rendered later | The full live page, scripts and all |
| What it reads | Markup, links, structured data | The rendered page: visible text, labels, buttons, layout |
| Interaction | None | Clicks, types, selects variants, adds to cart |
| Pop-ups and modals | Ignored | In the way, exactly as they are for a person |
| Bot protection | Usually allow-listed | Often challenged or blocked |
| Failure mode | Page not indexed | Task abandoned; shopper sent elsewhere |
The last row is the one to remember. When a crawler fails, you lose a listing. When a browser agent fails, it tells the shopper "I couldn't complete this on that site" and tries the next store.
What does a browser agent see when it opens your product page?
A browser agent sees roughly what a first-time visitor with a screen reader and a lot of patience would see: the rendered page, the names of the controls, and whatever is covering them. It does not see your intentions.
Browser agents generally work from some mix of the rendered DOM, the accessibility tree and screenshots of the page. In practice that means three things decide whether your page makes sense to one:
- Is the information on the page as text? Price, stock, delivery estimate, return window, materials, dimensions. If it is inside an image, a video or a tab that only loads on click, it may as well not exist.
- Do the controls say what they are? A size selector built from real buttons or a select element with labels is obvious. A row of unlabeled divs with click handlers is a guess. The accessibility work you may have put off is now commercial work.
- Is anything in the way? Cookie banners, newsletter modals, location pickers, chat widgets and app-install prompts all land on top of the page in the first three seconds. A person sighs and closes them. An agent has to work out that they are closable at all.
Where does a browser agent give up?
A browser agent gives up where a hurried customer would, only sooner. When we test stores with browser agents as part of an Audit, the same blockers come up again and again. In rough order of how often they end the session:
- Bot walls and challenges. A CAPTCHA or an "are you human?" interstitial ends the visit before it starts. Rules written to stop scrapers rarely distinguish a scraper from an agent shopping on behalf of a paying customer.
- Stacked pop-ups. One consent banner is manageable. A consent banner, then a discount modal, then a country selector is a maze. Close buttons that are tiny icons with no accessible name make it worse.
- Prices that arrive late. If the price is injected by a script after the page has settled, or shows "from $..." until a variant is chosen, the agent may read the wrong number or none.
- Variant selectors that are not real controls. Color swatches with no text, sizes that look available but are not, options that reset each other. The agent picks a medium, the page quietly switches to out of stock, and the add-to-cart button goes gray with no explanation.
- Hidden costs and dates. Shipping cost and delivery time that only appear on the last step of checkout. The shopper asked "when would it arrive?" and the agent cannot answer without nearly buying.
- Forced accounts. A checkout that demands registration before showing a total is a dead end. Guest checkout is the agent-friendly default.
- Infinite scroll and lazy everything. Category pages that never end, and product details that load only when scrolled into view, make it hard to know when the page has been fully read.
None of this is exotic. The difference is the penalty. A human customer tolerates friction because they already want your product. An agent was asked for a waterproof jacket, not for yours.
If agents can use feeds, why does the live site still matter?
The live site matters because different agents read different versions of your product, and the browser agent's version is the one your customers actually see. ChatGPT Shopping and Gemini work largely from structured product feeds. Claude and Perplexity lean on what reviewers and forums say. Muse reads the live store. Those are three descriptions of the same product, and they often disagree on price, stock or delivery.
When they disagree, the safest thing for an agent to do is trust none of them and recommend someone else. So the live page is not just one channel among three. It is the reference copy the other two get checked against. We go through all three sources in llms.txt, schema and feeds: what AI shopping agents actually read.
How do you test your store the way a browser agent would?
You can find most browser-agent blockers in ten minutes by shopping your own store with your hands tied. No special tools are needed for a first pass.
- Open a product page in a private window. Count everything that appears on top of the page in the first ten seconds. Each one is a hurdle.
- Put the mouse away. Using only Tab, Enter, Space and the arrow keys, choose a size and color, add to cart and reach the payment step. Anywhere you get stuck, an agent may too.
- Turn on a screen reader, or open the accessibility tree in your browser's developer tools. Are the variant options, the price and the add-to-cart button named sensibly? "Button" is not a name.
- Throttle the connection and reload. Watch what the page says about price and stock before the scripts finish. That early state is sometimes what gets read.
- Find the shipping cost, delivery estimate and return window without starting checkout. If you cannot, neither can the agent.
- Check your bot rules. Ask whoever manages your CDN or firewall what happens to automated browsers. Many stores block them by default and have never reviewed the setting.
- Ask an agent to do it. Give a browser agent a plain task on your own store, such as finding a product in a given size and reporting the delivered price. Watch where it hesitates.
What should you fix first?
Fix access first, then legibility, then the checkout. There is no point perfecting a size selector that an agent never reaches.
- Access: review bot rules so that agents acting for shoppers are not treated as scrapers. Cut the pop-up stack down to the legally required consent banner, with a clearly labeled button.
- Legibility: put price, stock, delivery and returns on the product page as text, present in the first render. Use real form controls with labels for variants. Make sure the visible price matches your feed and your Product schema.
- Checkout: offer guest checkout, show the delivered total early, and remove dead ends such as forced app downloads.
This is the core of our Fix service: we work in your codebase with your developers, and nothing ships without their review. If you want to know where you stand first, run the free check on one product URL, or see the full sequence in our checklist for getting recommended.
Key takeaways
- Browser agents such as Muse load your live store and act on it. They experience pop-ups, bot walls and broken controls exactly as customers do.
- What is not on the rendered page as text, with labeled controls, is effectively invisible to them.
- The most common session-enders are bot challenges, stacked modals, late-loading prices and fake form controls.
- A keyboard-only, private-window run through your own checkout finds most of the problems in ten minutes.
- Fix access first, then legibility, then checkout. Accessibility work and agent readiness are largely the same work.
Questions and answers
What is a browser agent?
A browser agent is an AI system that completes tasks by operating a real web browser. It loads pages with scripts running, reads what is rendered, and clicks, types and selects options. For shopping, that means opening product pages, choosing variants, adding to cart and attempting checkout.
How is Muse different from ChatGPT Shopping or Gemini?
ChatGPT Shopping and Gemini work largely from structured product feeds alongside the web. Muse opens your live store in a browser and reads it the way a customer would. It therefore depends on your actual pages working, not only on the data you submit.
Do pop-ups really stop AI agents?
They can. A modal covers the content and controls an agent needs. If the close button has no accessible name, or several overlays appear in sequence, the agent may fail to dismiss them and abandon the task, as a hurried customer would.
Should I allow AI agents through my bot protection?
Review it, at least. Many bot-protection defaults challenge every automated browser, including agents shopping for real customers. Work with your CDN or firewall provider to distinguish abusive scraping from agent traffic, and monitor what you allow.
Is accessibility work the same as agent readiness?
Largely, yes. Labeled form controls, real buttons, text alternatives and keyboard-operable checkout help screen-reader users and browser agents for the same reason: both rely on the page describing itself instead of on visual guesswork.
Written by the team at Recommended by Agents. Published . Spotted something out of date? Tell us and we will fix it.