primaryLanguage
Optional
Primary storefront language (ISO 639-1).
Shopify Store Analyzer: Apps, Theme & Tech Stack
Pricing
from $2.10 / 1,000 shopify store analyzeds
Analyze any Shopify store by domain: installed apps with evidence, free or paid theme, catalog size, prices, pixels and markets. Pay per store analyzed.
Pricing
from $2.10 / 1,000 shopify store analyzeds
Rating
0.0
(0)
Developer
LAMOTTE LLC
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
inputUrl
Required
The entry as provided in the input. When one line held several domains separated by commas, semicolons or spaces, the part of the line this row is about.
domain
Optional
Normalized domain of the entry (lowercase, without www; punycode for an internationalized name, see domainUnicode). Stable key for joins.
domainUnicode
Optional
The domain in readable form: the same as domain, except for an internationalized domain name (xn--bcher-kva.de is bücher.de).
finalUrl
Optional
URL of the home page after redirects. Null when nothing could be fetched.
status
Required
ok = Shopify confirmed, home page and catalog read (the only billed status). partial = Shopify confirmed, but the home page or the catalog could not be read completely after retries or within the time limit, or the shop description announces products and the product feed gave none (missingData product_feed: no price, no date), not billed. no_public_catalog = Shopify confirmed but the store exposes neither its shop description nor its product feed (typical of a headless storefront such as Hydrogen), or a headless storefront whose shop description and product feed list no product on the online store channel: visible apps and tags are returned, not billed. empty_catalog = Shopify confirmed and readable on a Liquid theme, but the store publishes no product (0 in its shop description and product feed): apps and theme are returned, not billed. store_unavailable = a Shopify store that is closed or frozen (HTTP 423, Shopify page "This store is unavailable"): running it again changes nothing, not billed. not_shopify = reachable site read, no Shopify evidence (isShopify false). headless_suspected = a myshopify.com domain appears in the page but no public Shopify endpoint confirms it (isShopify null), not billed. undetermined = a JavaScript storefront with e-commerce features and no identifiable platform, so a headless Shopify store cannot be excluded (isShopify null). unreachable = DNS error, timeout, server error, missing home page, or the store did not answer within the time limit. password_protected = Shopify store locked behind the password page. blocked = bot wall or rate limit that could not be passed. invalid_input = the entry is not a usable public domain. duplicate = another entry of the run already resolved to the same store, not billed again.
statusDetail
Optional
A plain-English sentence explaining the status, for example "The domain does not exist or has no website (its name does not resolve)." or "The site blocks automated visits (bot check).". Null for an ok row without caveat. The technical cause is in errorCode.
errorCode
Optional
Technical code of the cause, for scripts, when there is one: a network error code (ENOTFOUND, ECONNREFUSED, ETIMEDOUT, ECONNRESET...), http_403 or another HTTP status, bot_challenge, bot_challenge_on_endpoints, rate_limited, store_deadline_exceeded, incomplete_response, incomplete_data, catalog_not_public, product_feed_not_public, product_feed_empty, product_feed_network (and other product_feed_ reasons), analysis_error, or for an invalid entry empty, not_a_domain, label_too_long, domain_too_long, unsupported_scheme, not_public_domain, custom_port. Null when there is none.
billed
Required
true when this row was charged one store-analyzed event. Only rows with status ok are; every other row is free.
isShopify
Optional
true when Shopify is confirmed (ok, partial, no_public_catalog, empty_catalog, password_protected, duplicate, and store_unavailable when Shopify answered), false only when the site was read and has no Shopify evidence (status not_shopify), null when it could not be determined (unreachable, blocked, invalid input, headless_suspected, undetermined).
platform
Optional
shopify, shopify_hydrogen (headless storefront on Oxygen), shopify_headless (other headless storefront, flagged by a warning), or for not_shopify rows the best guess: woocommerce, bigcommerce, magento, prestashop, wix, squarespace, salesforce_commerce_cloud, shopware, opencart, webflow, ecwid, lightspeed, shift4shop, sap_commerce, wordpress or unknown. Null when not determined.
dataQuality
Optional
complete when every part of the analysis was read. partial when something is missing (listed in missingData): negative signals are never derived from a missing part. Null for rows that were not analyzed.
missingData
Optional
What could not be read after retries or within the time limit, separated by "; ": home_html (home page), catalog (no product feed and no shop description, or a headless storefront whose feed lists no product), product_feed (the shop description announces products but the product feed gave none: no price, no date), catalog_pages (a later page of the product feed broke, the products already read are kept), product_page (the sampled product page). home_html, catalog and product_feed are essential: without them the row is not billed (status partial, or no_public_catalog when the store does not expose its catalog at all). Null when nothing is missing or the row was not analyzed.
myshopifyDomain
Optional
The store's permanent myshopify.com domain when exposed.
storeName
Optional
Store name as set in the shop settings (not always the brand: it can be an administration name such as Oh Polly UK or HOLY DE). Null for rows that are not Shopify.
brandName
Optional
The brand without its slogan or suffix ("Allbirds | Sustainable Shoes" gives "Allbirds"), chosen from the store name; the part that contains the domain's brand word wins. Null when there is no store name.
currency
Optional
Store currency (ISO 4217), from the store's public shop description.
country
Optional
Country of the business address of the Shopify store that answered (ISO 3166-1 alpha-2), from its public shop description. It is not necessarily the brand's home country nor the market it sells to: a brand with one store per region exposes the address of the regional store.
primaryLanguage
Optional
Primary storefront language (ISO 639-1).
languages
Optional
Languages declared by the storefront (hreflang alternates plus the primary language), separated by "; ".
markets
Optional
Markets the store addresses. Every field is null when the row was not analyzed.
theme
Optional
Active storefront theme. Every field is null when the theme is unknown or the row was not analyzed.
appCount
Optional
Number of apps and third-party services detected (length of apps). Null when the home page could not be read.
appNames
Optional
Names of the detected apps, separated by "; ", in the order of apps ("Klaviyo; Judge.me; Recharge"). Filter a spreadsheet on this one column to find every store with an app. Null when the home page could not be read or no app was detected.
appIds
Optional
Stable ids of the detected apps, separated by "; ", same order as appNames ("klaviyo; judgeme; recharge"). Unknown apps have the id shopify-app:.
appCategories
Optional
Categories of the detected apps, separated by "; ", most frequent first (see apps.category for the list). A category that is missing means not detected, never absent.
matchedApps
Optional
Detected apps that match the appsToMatch input (by id or name), separated by "; ". Null when appsToMatch is empty or the home page could not be read.
hasMatchedApp
Optional
true when at least one app of appsToMatch was detected, false when none was, null when appsToMatch is empty or the home page could not be read.
apps
Optional
Apps and third-party services detected in the public HTML of the home page and one product page, with their evidence. An app is normally listed once; an unknown app seen under two unrelated names can appear twice (about 1 to 2 % of the detections in the evaluations). Evidence that does not prove an installed app is ignored: preconnect or dns-prefetch hints, cookie declarations of consent banners, failed app blocks, links to a vendor site in a text. An empty list when nothing was detected or when the home page could not be read (appCount, appNames and appIds are null in that case).
catalog
Optional
Catalog size, prices and dates. Price statistics use each product's lowest variant price over the products read; scanIsComplete says whether that is every product or a part of them. Dates come from published_at and created_at (the update date is not used: on current Shopify it is the time of the request). Every field is null when the row was not analyzed.
marketing
Optional
Marketing pixels and analytics tags detected in the public HTML. false means not detected, not proven absent (tags loaded after consent or inside a tag manager container are invisible). Every field is null when the home page was not read.
merchantCenterReadiness
Optional
Checks on one sampled product page that matter for Google Merchant Center product data, by check id. Only product_structured_data can fail (no Product markup found in the HTML of the page). price_and_currency, availability and product_image are pass when the Product block read carries them and info when it does not (a page often has a second Product block or microdata that Google reads too, so their failures were right only 66.7 % of the time); gtin_or_mpn and brand are information, as everything depending on the merchant's feed. Nothing here says that Merchant Center will reject the feed. Every field is null when no product page was checked.
shopifyPayments
Optional
true when the store exposes enabled Shopify Payments card brands.
signals
Optional
Readable indicators derived from the fields above, keyed by code, the value being one sentence: active_store, dormant_store, large_catalog, small_catalog, empty_catalog, heavy_discounting, stock_gaps, theme_outdated, theme_retired, international, reviews_app, subscriptions, loyalty, bnpl, ad_pixels, headless_storefront, merchant_center_ok, merchant_center_gaps. A code that is absent did not apply. theme_outdated: a free Shopify theme (or a custom copy of one) at least one major version behind the version shown on the Theme Store ("Dawn 11.0.0, latest 16.1.0"). theme_retired: the theme is a retired Theme Store theme (Debut, Supply, Brooklyn...), by its Theme Store id. There is no negative app signal (no reviews app, no ad pixel): review widgets and tags are often injected after the page loads, so their absence cannot be shown from the HTML.
{ "active_store": "Active store: at least 12 new products created in the last 30 days.", "reviews_app": "Shows product reviews with Judge.me."}summary
Optional
One factual sentence in English describing the store, starting with its brand name.
productsSample
Optional
The first products of the store's product feed (not sorted by date), up to productsSampleSize (50 at most). Present only when includeProducts is enabled.
warnings
Optional
Parts of the analysis that could not be completed, or caveats, separated by "; ": for example catalog_unavailable:http_404, home_html_unavailable, merchant_center_not_checked:product_page_unavailable, store_deadline_reached (the store did not answer completely within the time limit: see missingData) or storefront_on_checkout_subdomain (the domain given leads to the store's checkout instead of its storefront).
analyzedAt
Required
ISO 8601 timestamp of the analysis.
social
Optional
Social media pages of the brand found in the store's HTML. Only company pages are kept, never personal profiles. Every field is null when nothing was found or the row was not analyzed.