Shopify AI Readiness Audit - products.json & AI crawler check
Pricing
from $7.00 / 1,000 store auditeds
Shopify AI Readiness Audit - products.json & AI crawler check
Shopify AI readiness audit: bulk products.json audit and AI crawler access check for any list of Shopify stores ($0.01 per store, 500 stores = $5)
Pricing
from $7.00 / 1,000 store auditeds
Rating
0.0
(0)
Developer
yestrue
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Features
Share
Shopify AI readiness audit for a whole list of stores: $0.01 per store, 500 stores = $5. Paste Shopify store domains (or a link to a CSV file) and get one row per store: a 0-100 readiness score, the three fixes that would add the most points, how complete the public product feed is, whether the product page carries Product structured data (JSON-LD), and which AI crawlers (GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot, Google-Extended) the store's robots.txt lets in.
Run it now: press Start - the prefilled input audits a public Shopify demo store in a few seconds. Replace it with your own list of stores, set a Maximum charge if you like (500 stores = $5), and download the rows as JSON, CSV or Excel. Stores that cannot be audited are free.
EU customs identifiers (from 1 Nov 2026)
From 1 Nov 2026, EU customs declarations for B2C distance sales need product identifiers: your own product code (the SKU), a manufacturer code, and a GTIN where the product has one. Merchants selling to EU customers are checking their catalogs now. Each audited store gets these extra fields:
euSkuCoveragePct: share of the sampled variants with a real SKU (empty values and fillers such as N/A or TBD do not count).euVariantsWithoutSku: how many sampled variants have no usable SKU.euDuplicateSkus: how many SKU values are used by more than one variant.euGtinInJsonLd:truewhen the product page that is read shows a GTIN with a valid GS1 check digit,falsewhen it shows none or a wrong one.
If SKUs are missing, one of the top fixes says so: "Give every variant its own SKU". These fields do not change the 0-100 score.
What this is, and is not: the public products.json feed carries no barcodes and no manufacturer codes, so this is a readiness proxy based on SKUs and one product page, not a full check of your customs data. It is not legal advice; confirm what you must declare with your carrier or customs broker.
What one row looks like
Illustrative output with placeholder store names:
| Store | Score | Products in feed | Product JSON-LD | AI crawlers blocked | Top fix |
|---|---|---|---|---|---|
store-a.example.com | 93 | 250+ | yes | none | Give every variant its own SKU: EU customs declarations from 1 Nov 2026 use it as your product code |
store-b.example.com | 49 | 84 | no | OAI-SearchBot, PerplexityBot | Add Product structured data (JSON-LD) to your product pages |
store-c.example.com | 41 | 19 | yes | GPTBot, ClaudeBot | Write fuller product descriptions: 88% of audited products have under 150 characters |
store-d.example.com | - | - | - | - | status feed_unavailable: products.json is not public (free) |
{"input": "store-b.example.com","store": "https://store-b.example.com","status": "ok","readinessScore": 49,"topFixes": ["Add Product structured data (JSON-LD) to your product pages: the audited product page has none, so crawlers cannot read price and availability reliably.","Your robots.txt blocks OAI-SearchBot and PerplexityBot on product pages (the crawler behind ChatGPT search results; the crawler behind Perplexity answers). If you want your products to be found there, allow them.","Give every variant its own SKU: EU customs declarations from 1 Nov 2026 use it as your product code. 120 of 300 sampled variants have none."],"scoreFeed": 34.9, "scoreStructuredData": 0, "scoreAiCrawlerAccess": 14,"productCount": 84, "productCountIsMinimum": false, "productsAudited": 50,"titlePct": 100, "descriptionPct": 70, "pricePct": 100, "imagePct": 100, "skuPct": 60,"tagsPct": 90, "productTypePct": 80, "vendorPct": 100, "variantNamesPct": 100,"euSkuCoveragePct": 60, "euVariantsWithoutSku": 120, "euDuplicateSkus": 2, "euVariantsSampled": 300, "euGtinInJsonLd": false,"productJsonLd": false,"robotsTxtFound": true,"oaiSearchBotAllowed": false, "perplexityBotAllowed": false, "gptBotAllowed": true, "claudeBotAllowed": true, "googleExtendedAllowed": true,"aiCrawlersBlocked": ["OAI-SearchBot", "PerplexityBot"],"checkedAt": "2026-10-23T09:00:00.000Z"}
Who it is for
- Agencies and freelancers who audit client catalogs and want a scored, comparable table instead of opening every store by hand.
- Shopify app builders and SEO tools that need a lead list sorted by how much a store has to fix.
- Store owners and operators with several stores or a long competitor list.
What it checks
| Part | Points | What is measured |
|---|---|---|
| Feed completeness | 40 | From the store's public /products.json: share of audited products with a title, a description of at least 150 characters, a price above zero, an image, a SKU on every variant, tags, a product type, a vendor, and named variant options (Size, Color instead of "Title") |
| Product structured data | 30 | One product page: is there Product JSON-LD, with price, availability, GTIN, SKU and brand? |
| AI crawler access | 30 | The store's robots.txt, judged on a product URL, for OAI-SearchBot, PerplexityBot, GPTBot, ClaudeBot and Google-Extended |
Each row also carries the product count, the percentage for every feed field, and the plain-English top three fixes, ordered by the points they would add.
Input
- Shopify stores: domains or any URL on the store, one per line. Duplicates are audited once. Up to 5,000 per run.
- CSV link (optional): a public https link to a CSV or text file with one store per line; the first domain or URL on each line is used.
- Products to audit per store: 1-250, default 50. The feed is read in one request of up to 250 products, so the product count is exact up to 250.
- Stores in parallel and pause between requests: defaults 5 stores at a time and 800 ms.
Price
$0.01 per store audited (pay per event: one store-audited event per store with status ok). 100 stores = $1, 500 stores = $5, 1,000 stores = $10. Apify plan discounts apply on top (Bronze -10%, Silver -20%, Gold and above -30%). Everything else is free: feed_unavailable, robots_disallowed, blocked, rate_limited, unreachable, not_shopify, empty_catalog, duplicate and invalid_input rows are not charged. Set a Maximum charge on the run and it stops cleanly when the budget is used up. Apify's small per-run platform fee applies to every Actor.
FAQ
Is products.json public?
For most Shopify stores, yes: the storefront serves /products.json (a product list in JSON) to anyone, without a login, unless the store is password protected or the merchant has switched it off. This Actor reads only that public feed and one public product page, never anything behind a login. A store that does not publish the feed comes back as feed_unavailable and costs nothing.
How much for 1,000 stores?
$10 at the list price of $0.01 per store, less with an Apify plan discount, and less still if some stores cannot be audited, because those rows are free. A run of 1,000 stores takes roughly 10 minutes at the default settings.
What is the score based on?
40 points for feed completeness, 30 for Product structured data on one product page, 30 for letting AI crawlers read product pages. It is a transparent checklist, not an official Shopify or AI-platform rating. If a store's product page cannot be read, the score is computed from the other two parts and the row says so in note.
Does it check EU customs product identifiers?
Partly. It measures the part the public storefront shows: whether every sampled variant has its own SKU (euSkuCoveragePct, euVariantsWithoutSku, euDuplicateSkus) and whether one product page exposes a valid GTIN (euGtinInJsonLd). Manufacturer codes and most barcodes are not published in products.json, so a clean result means your SKUs are in order, not that your customs data is complete. It is not legal advice; confirm with your carrier or customs broker.
Does a high score mean AI assistants will recommend the store?
No. It measures whether the basics an AI shopping tool needs are present and reachable on the store's public pages. It cannot see what ChatGPT, Perplexity or Gemini actually answer; the AI Search Visibility Tracker below measures that.
Good to know
- Barcodes (GTIN) are not in products.json. They can only be seen in the Product structured data of the one product page that is read, so
jsonLdHasGtindescribes that page, not the whole catalog. - One product page per store. Structured data is judged on the first product of the feed, not on every product.
- Image alt text is not checked. products.json does not carry it.
- robots.txt access is not a visit log.
oaiSearchBotAllowed: truemeans the store's rules allow the crawler, not that it has visited. Blocking some AI crawlers can be a deliberate choice; the fixes say so. - Products to audit samples the start of the feed; stores with thousands of products are judged on the sample.
Polite by design
The robots.txt of every store is read first and obeyed: if it does not allow this robot to read /products.json, nothing else is requested (robots_disallowed). At most three requests per store (robots.txt, products.json, one product page), one request at a time per store with a pause between them, the store's Crawl-delay honoured up to 10 seconds, a clear user agent (ShopifyReadinessAudit/1.0), no proxy, no retry after an HTTP 403 or 429, and no attempt to get around bot protection.
More AI visibility tools from highbrow_fame
| Actor | The question it answers | Price |
|---|---|---|
| AI Search Visibility Tracker | Is my brand cited by ChatGPT, Perplexity and Gemini, and which competitors are cited instead? | full audit about $4.80 |
| AI Brand Share of Voice | Which brands do AI engines recommend for my category? | $0.08 per prompt |
| Google AI Overview Citation Checker | Which sites does Google's AI Overview cite for my keywords? | $0.03 per keyword |
Found this useful? A short review on the Actor's Store page helps other store owners find it and tells us what to improve next.