Shopify Theme Detector
Pricing
from $1.00 / 1,000 result storeds
Shopify Theme Detector
A powerful Apify Actor that detects the active Shopify theme from any store URL — extracting theme name, version, schema, and Theme Store origin. Only charges for successful extractions.
Pricing
from $1.00 / 1,000 result storeds
Rating
5.0
(1)
Developer
Applora
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Detect the active theme on any Shopify storefront. Given one or more store URLs, the actor fetches each page, checks for Shopify signals, and returns fully flattened theme metadata.
You are only charged for URLs where theme data was successfully extracted. URLs that are not Shopify stores, or Shopify stores using a fully custom theme, are recorded in the run stats but do not count toward your usage.
Features
- Shopify Detection: Identifies Shopify stores by the presence of
cdn.shopify.comin the page HTML - Theme Metadata: Extracts theme name, ID, schema name, schema version, role, and theme store ID
- Theme Style: Captures the active style variant (
theme_style_idandtheme_style_handle) - Theme Store Flag: Reports
is_theme_store_theme— whether the theme originates from the public Shopify Theme Store - Custom Theme Handling: Shopify stores that use a fully custom theme (no standard Shopify script) are detected as Shopify but skipped from results and logged in stats
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
urls | array | Yes | — | Store URLs to check, e.g. ["https://allbirds.com"] |
maxItems | integer | No | 100 | Maximum number of URLs to process |
Output
Dataset
Only URLs where theme data was successfully extracted (theme_detected: true) appear in the dataset.
{"url": "https://allbirds.com","handle": "allbirds","locale": "en","theme_name": "Horizon","theme_id": 141419118701,"theme_schema_name": "Horizon","theme_schema_version": "3.2.1","theme_store_id": 2481,"theme_role": "main","theme_handle": "horizon","theme_style_id": null,"theme_style_handle": null,"is_theme_store_theme": true,"scraped_at": "2025-06-29T10:00:00.000Z"}
| Field | Type | Description |
|---|---|---|
url | string | The input URL |
handle | string | null | Store subdomain, e.g. allbirds (from allbirds.myshopify.com) |
locale | string | null | Active store locale, e.g. en |
theme_name | string | null | Display name of the active theme |
theme_id | number | null | Shopify internal theme ID |
theme_schema_name | string | null | Theme schema name (may differ from display name for customised themes) |
theme_schema_version | string | null | Semantic version of the theme schema, e.g. 3.2.1 |
theme_store_id | number | null | Theme Store listing ID; null for custom or private themes |
theme_role | string | null | Theme role, typically main |
theme_handle | string | null | URL handle of the theme in the Theme Store; null if not from Theme Store |
theme_style_id | number | null | Active style variant ID |
theme_style_handle | string | null | Active style variant handle |
is_theme_store_theme | boolean | null | true if the theme originates from the public Shopify Theme Store |
scraped_at | string | ISO 8601 timestamp of when the URL was scraped |
Stats (Key-Value Store)
After each run, a stats record is saved to the key-value store with a full breakdown of all processed URLs:
{"total": 10,"succeeded": 6,"failed": 1,"not_shopify": ["https://wordpress-site.com", "https://not-a-store.com"],"shopify_no_theme": ["https://headless-shopify-store.com"]}
| Field | Description |
|---|---|
total | Total number of URLs processed |
succeeded | URLs where theme data was extracted and saved to the dataset |
failed | URLs that could not be fetched (network errors, HTTP errors, etc.) |
not_shopify | URLs with no cdn.shopify.com signal — not identified as Shopify stores |
shopify_no_theme | Confirmed Shopify stores where the theme script could not be parsed (custom/headless themes) |
Usage Examples
Detect theme for a single store
{"urls": ["https://allbirds.com"]}
Batch detect themes for multiple stores
{"urls": ["https://allbirds.com", "https://gymshark.com", "https://fashionnova.com"],"maxItems": 50}