Loading...
Loading...
Exactly how BlooTrue widgets are crawled by search engines and read by AI systems — how the reviews are rendered, where the schema.org markup lives, and the honest limits of review rich snippets.
Your embed snippet is a <div> plus a <script>. The script (served from api.blootrue.com) mounts the widget inside a sandboxed iframe, which keeps the widget's CSS and JavaScript fully isolated from your page — zero style or script conflicts. That isolation is the reason review content and schema do not automatically appear in your page's own HTML, which is what the rest of this page is about.
| Capability | Free | Paid |
|---|---|---|
| Reviews displayed on your site | Yes | Yes |
| schema.org JSON-LD injected into your page | — | Yes (automatic) |
schema.json endpoint (place it yourself) | — | Yes |
content.html for non-JS AI crawlers | — | Yes |
| “Powered by BlooTrue” backlink | Yes | — (branding removed) |
On paid plans (Starter $7/mo and up), the loader injects schema.org Review + AggregateRating + LocalBusiness JSON-LD straight into your page's <head> — so it lives in your own HTML and Google reads it when it renders your page (Googlebot runs JavaScript). This makes your pages eligible for star-rating rich snippets.
The honest caveat: Google officially treats a business's own reviews on its own site (LocalBusiness / Organization) as “self-serving” and does not guarantee star snippets for them. In practice they often still appear, but the reliably eligible path is Product or Service review markup where the reviews are about the product or service that page sells. Our markup passes Google's Rich Results Test either way.
Prefer to control placement (for example on a specific product or landing page)? Reference the standalone endpoint instead:
GET /widgets/embed/:embedId/schema.jsonReturns the schema.org LocalBusiness + AggregateRating + Review payload as JSON-LD. Fetch it and inline it into your page head, or reference it directly. Paid plans.
Most AI crawlers — GPTBot, ClaudeBot, PerplexityBot — read your page's raw HTML and do not execute JavaScript. Because the reviews render in an iframe (and the schema is JS-injected), those crawlers do not see your review text on your page by default. To put the review text in your raw HTML where they can read it, inline the content.html endpoint server-side:
GET /widgets/embed/:embedId/content.htmlReturns a clean, semantic HTML fragment of your reviews (business, aggregate rating, up to 20 reviews) with inline JSON-LD. Inline it server-side so it lands in your page's raw HTML. Paid plans.
// Inline BlooTrue reviews into your page HTML, server-side, so
// non-JS AI crawlers (and search engines) read them as your content.
const html = await fetch(
'https://api.blootrue.com/widgets/embed/YOUR_EMBED_ID/content.html'
).then((r) => r.text());
// Render it into the page (server component, edge middleware, or build step):
<div dangerouslySetInnerHTML={{ __html: html }} />This is a server-side step by design: a script-embed widget cannot put content into your raw HTML on its own, because the JavaScript has not run when a non-JS crawler reads the page.
Free widgets add one small, visible “Powered by BlooTrue” link into your page — a normal followed link that credits BlooTrue. Paid plans remove all BlooTrue branding, including this link. It never changes your embed code.
The widget renders inside an iframe that our loader script injects. Crawlers that execute JavaScript and enter the iframe (or fetch the widget render URL directly) get clean semantic HTML plus schema. But most AI crawlers today (GPTBot, ClaudeBot, PerplexityBot) read only your page’s server HTML and do not run JavaScript, so on your page they see the widget container, not the review text. To make the review text readable by those crawlers, inline the content.html endpoint server-side (see below).
iframe content is attributed to the widget URL, which we serve noindex, indexifembedded — that keeps thousands of standalone widget URLs out of the index while letting Google index the review text as part of your page when Googlebot renders it. For structured-data rich results specifically, do not rely on the iframe; on paid plans we inject the schema into your parent page (see below).
On paid plans, yes. The loader injects schema.org Review + AggregateRating + LocalBusiness JSON-LD directly into your page’s head, so it lives in your own HTML (not trapped in the iframe). You can also place it yourself via the standalone schema.json endpoint. Free plans display your reviews but include no schema — schema/SEO markup is a paid feature.
Maybe. Google officially treats a business’s own reviews on its own site (LocalBusiness / Organization) as self-serving and does not guarantee star snippets for them; in practice stars often still appear. The reliably eligible path is Product or Service review markup where the reviews are about the product or service the page sells. Either way, the markup is valid and makes your reviews machine-readable for search and AI.
Ready to build a widget? Start with the free widget builder →