DEV Community

Cover image for how to export a shopify catalog into a chatgpt shopping feed, no login required
George Kioko
George Kioko

Posted on

how to export a shopify catalog into a chatgpt shopping feed, no login required

meta shipped muse yesterday. it shops, it compares prices, it checks out through stripe link. shop pay is listed as coming soon. anthropic put out commerce agents a week earlier. openai has had shopping in chatgpt for a while now.

so every lab has a buyer. when muse hits a store with no api, it drives a browser. same as you would. it looks at a rendered page and infers a price. that works, sort of, in the way that reading a menu through a window works. an agent reading a structured catalog does not infer anything. it knows the price, the currency, the variant, and whether the thing is in stock.

that gap is the whole game this quarter, and most shopify stores are on the wrong side of it.

what an agentic commerce feed actually is

an agentic commerce feed is a machine readable list of your products with the attributes a shopping agent needs to make a recommendation and complete a purchase. at minimum that means a stable id, a title, a description, a canonical link, an image link, a price, a currency, availability, a brand, and a product identifier such as a gtin or mpn.

two specs matter right now. the openai product feed specification, which is what chatgpt reads to surface products. and ucp, the universal commerce protocol, which google co developed with shopify and which shopify serves at /.well-known/ucp for a very large number of stores.

the current ucp version is dated august 25. adoption outside the big platforms is not real yet. one count last week put independent ucp sites at around 26. the protocol shipped. the catalogs did not.

a product page is not a feed

this is where merchants get comfortable and stop. shopify has an agentic storefronts toggle. flipping it makes you visible. it does not make you the easiest thing in the results to parse, and it does not fill in the attributes you never entered.

if your variants have no barcode, an agent cannot match your product to the same product on three other sites. if availability is not exposed, it cannot promise the buyer the thing exists. if you block gptbot in robots.txt, you are not in the conversation at all.

shopify says catalog powered ai search converts around 2x scraped data. that is a shopify claim about shopify, not an independent study. anthropic says agent carts run up to 35 percent larger and shoppers are 60 percent more likely to finish. also their number about their own product. hold both loosely. they point the same direction and neither one is evidence.

three checks you can run by hand right now, free

no tool needed for any of these. open a browser.

one, your robots file. go to yourstore.com/robots.txt and search for GPTBot, OAI-SearchBot and ChatGPT-User. if any of them is disallowed, that is a deliberate choice someone made, possibly a plugin, possibly years ago. it is the cheapest thing on this list to fix.

two, your ucp manifest. go to yourstore.com/.well-known/ucp. if you get json, shopify is serving a manifest for you. if you get a 404, you are not exposed through that path.

three, your raw catalog. go to yourstore.com/products.json. most public shopify stores return the whole catalog as json, no login, no app, no api key. this is the same endpoint an agent or an aggregator would reach for first. look at what is actually in there. look at whether barcode is populated on your variants. usually it is not.

that third one is the honest gut check. whatever is missing in /products.json is missing everywhere downstream.

doing it across the whole catalog

reading /products.json by eye works for one store and about ten products. past that you want the catalog normalized and every record checked against the spec, which is the actor i publish.

storeUrl --> catalog extract --> normalize --> validate against
             (products.json,     1 record/     OpenAI feed spec +
             collection JSON,    product,      UCP attributes
             sitemap, JSON-LD)   variants          |
                                 nested            v
                    free drift <-- snapshot <-- fix-it errors per product
                    monitoring     (persists)   + store readiness score
Enter fullscreen mode Exit fullscreen mode

it walks a ladder of public endpoints, /products.json first because it is the cheapest, then collection json, then the product sitemap with per product json, then json ld on the page for headless storefronts. no browser, no login, no credentials at any rung. every record carries the method, the exact source url and a timestamp so you can check the work.

then it validates. every violation names the field, the rule, the evidence and the fix, phrased as the thing you do in shopify admin. "add a barcode in shopify admin, variant level" rather than "gtin missing".

it also writes one free store summary row with a readiness score from 0 to 100, your ai bot robots policy, whether a ucp manifest was found, and the top issues ranked by how much they actually cost you.

honest notes on it, since this is my actor and you should discount accordingly.

pricing is 5 cents per run start plus 1 cent per agent ready product. agent ready means the record is complete enough to be feed eligible. partial extractions are delivered free with the errors that explain why they failed, so a store with a bad catalog does not turn into a bill. there is a max cost setting and the run refuses to start if the worst case estimate goes over it.

residential proxy is the default because shopify blocks datacenter ranges. because the extraction path is json endpoints rather than a browser, that costs about 4mb per 1000 products.

drift monitoring is free. runs sharing a monitor id diff against each other, so you get new products, removed products, price changes, and issues that appeared or got fixed since last time. snapshots live in a named store in your own account so the history outlives apify's 31 day dataset retention.

one thing that is not live. there is a chatgpt shopping placement check in the input, and it is switched off and never charged, because it does not work yet. it is in there so the schema does not change when it ships. do not turn it on expecting an answer.

link: https://apify.com/george.the.developer/shopify-agentic-commerce-product-feed

what to fix first

from the stores i have run through it, the order is almost always the same.

barcodes are missing at the variant level. that is the single most common blocker and it is manual data entry in shopify admin, which is why everyone skips it.

descriptions are html blobs written for a human reading a page, not text an agent can summarise.

brand is unset because the vendor field was never filled in.

and some stores are still disallowing one of the ai crawlers in robots.txt without knowing it.

none of that is exciting work. it is the same unglamorous data hygiene that seo asked for fifteen years ago, aimed at a different reader. the agent is not the product. the feed is.

start with /products.json on your own store and see how much of it is empty.

Top comments (0)