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 truefor successful requests | 
| isShopify | boolean | trueif 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 nullif 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 statusandisShopifyfields
- Handle theme_infobeingnullfor unknown themes
- Implement exponential backoff for 429 responses
- Set appropriate timeouts (recommended: 60 seconds)
- Cache results to minimize API calls
