Shopify App Detector API
Professional API for detecting Shopify apps, themes, and technologies with enterprise-grade reliability
Overview
The Shopify App Detector API analyzes websites to detect installed Shopify apps, themes, and technologies. Built for developers, researchers, and businesses who need reliable e-commerce intelligence.
Base URL:
https://api1.shopscan.app/
Key Features
- Detect Shopify apps and themes from any store
- Support for homepage, product, and collection page URLs
- Rate limiting with 3 requests per second
- Headless browser support for JavaScript-heavy sites
- Comprehensive app categorization
- Real-time scanning with 99.9% uptime
Authentication
All API requests require a valid API key passed as a query parameter. Contact our sales team to obtain your API key.
Parameter | Type | Required | Description |
---|---|---|---|
api_key |
string | Required | Your unique API authentication key |
Rate Limiting: 3 requests per second per API key. Exceeding this limit will result in 429 responses.
API Endpoints
GET /
Scan a website and detect Shopify apps, theme, and technologies.
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
api_key |
string | Required | Your API authentication key |
domain |
string | Required | Domain to scan (e.g., "example.com") |
url |
string | Optional | Alternative to domain parameter |
Example Request
curl "https://api1.shopscan.app/?domain=devluxx.com&api_key=your_api_key"
Response Examples
Shopify Store Response
200 OK
Successful scan of a Shopify store
{
"status": true,
"isShopify": true,
"theme_name": "Dawn",
"title": "Shopify Web Development Agency – DevLuxx.com",
"matched_apps": [
{
"name": "Judge.me",
"short_description": "Product Reviews",
"long_description": "empty",
"app_store_url": "https://shopify.pxf.io/XmZ3mX",
"image": "/images/apps/judge-me-product-reviews.webp",
"category": "App",
"recommended": false
},
{
"name": "Klaviyo",
"short_description": "Email and social campaigns",
"long_description": "empty",
"app_store_url": "https://shopify.pxf.io/XmZ3mX",
"image": "/images/apps/Klaviyo-Email-Marketing-SMS.webp",
"category": "App",
"recommended": false
}
],
"theme_info": {
"name": "Dawn",
"description": "A minimalist theme that lets product images take center stage.",
"theme_store": "Shopify",
"image_url": "images/themes/dawn.webp",
"theme_store_url": "https://shopify.pxf.io/MmdNo3"
}
}
Non-Shopify Store Response
200 OK
Website is not a Shopify store
{
"status": true,
"isShopify": false
}
Response Fields
Field | Type | Description |
---|---|---|
status |
boolean | Always true for successful requests |
isShopify |
boolean | true if store is hosted on Shopify |
theme_name |
string | Name of the detected Shopify theme |
title |
string | Page title of the scanned website |
matched_apps |
array | List of detected Shopify apps |
theme_info |
object|null | Theme details or null if not found |
Code Examples
const response = await fetch('https://api1.shopscan.app/?domain=devluxx.com&api_key=your_api_key');
const data = await response.json();
if (data.status && data.isShopify) {
console.log('Theme:', data.theme_name);
console.log('Apps found:', data.matched_apps.length);
console.log('Theme info:', data.theme_info);
} else if (data.status && !data.isShopify) {
console.log('Not a Shopify store');
} else {
console.error('Error:', data.message);
}
import requests
url = "https://api1.shopscan.app/"
params = {
"domain": "devluxx.com",
"api_key": "your_api_key"
}
response = requests.get(url, params=params)
data = response.json()
if data.get('status') and data.get('isShopify'):
print(f"Theme: {data['theme_name']}")
print(f"Apps found: {len(data['matched_apps'])}")
print(f"Theme info: {data['theme_info']}")
elif data.get('status') and not data.get('isShopify'):
print("Not a Shopify store")
else:
print(f"Error: {data['message']}")
Error:
# Scan a Shopify store
curl "https://api1.shopscan.app/?domain=devluxx.com&api_key=your_api_key"
# Scan a specific page
curl "https://api1.shopscan.app/?domain=store.com/products/item&api_key=your_api_key"
# Check if a site is Shopify
curl "https://api1.shopscan.app/?domain=example.com&api_key=your_api_key"
Error Handling
Error Responses
401 Unauthorized
Invalid or missing API key
{
"error": true,
"message": "Invalid or missing API key"
}
400 Bad Request
Website not accessible
{
"status": false,
"error": true,
"message": "Website not accessible or denied"
}
429 Rate Limited
Too many requests
{
"error": true,
"message": "Rate limit exceeded",
"limit": "3 requests per second",
"retry_after": 1
}
HTTP Status Codes
Code | Description |
---|---|
200 | Success (both Shopify and non-Shopify responses) |
400 | Bad Request (missing parameters, website not accessible) |
401 | Unauthorized (invalid or missing API key) |
429 | Rate Limited (too many requests) |
500 | Internal Server Error |
Best Practices:
- Always check the
status
andisShopify
fields - Handle
theme_info
beingnull
for unknown themes - Implement exponential backoff for 429 responses
- Set appropriate timeouts (recommended: 60 seconds)
- Cache results to minimize API calls