shopinfo.app API Documentation
Get Started: Sign up for free to get 100 API requests, then manage your API keys from your dashboard.
Try the Interactive API Explorer
Want to test API endpoints directly in your browser? Our interactive Swagger UI lets you make real API calls, see live responses, and experiment with parameters without writing any code.
- Test all endpoints with your API key
- See real-time response examples
- Explore the complete OpenAPI specification
Pricing & Plans
| Tier | Price | Rate Limit | API Keys | CSV Export |
|---|---|---|---|---|
| Basic | Free | 10 requests/month | 1 key | ✗ |
| Pro | $5/month | 100 requests/hour | 3 keys | ✓ |
| Team | $30/month (5 members included, +$7/user) |
Unlimited | 50 keys | ✓ |
📝 Note: Checks made through the web app do not count against your API limits.
CSV Export Feature
Download the complete theme directory as a CSV file with Pro and Team plans. Perfect for bulk analysis, importing into spreadsheets, or building your own theme comparison tools.
Special Access: Members of ShopDev Alliance receive enhanced API access as part of their membership benefits.
Ready to upgrade?
Sign Up Free to Get StartedAvailable Endpoints
shopinfo.app API provides two main endpoints for theme detection:
- Shop Check - Detect theme by scraping a live Shopify store URL
- Theme Lookup - Look up theme information from our database by name or ID
Theme Lookup Endpoint
GET /api/v1/themes/lookup
Look up theme information directly from our database using either the theme name or Shopify theme store ID. This endpoint provides instant results without web scraping, making it ideal for known themes.
Authentication
Include your API key in the API-Key header.
API-Key: your_api_key_here
Request Parameters
Provide at least one of the following parameters:
name- The theme name (e.g., "Dawn", "Prestige", "Sense")theme_store_id- The Shopify theme store ID (e.g., "887", "855")include_pricing- Optional. Set to "true" to include price trend data (default: false)include_performance- Optional. Set to "true" to include Core Web Vitals performance data (default: false, Pro/Team tier required)
Request Examples
Lookup by name:
GET /api/v1/themes/lookup?name=Dawn
Lookup by theme store ID:
GET /api/v1/themes/lookup?theme_store_id=887
Lookup Dawn preset (e.g., Sense):
GET /api/v1/themes/lookup?name=Sense
With both parameters (theme_store_id takes precedence):
GET /api/v1/themes/lookup?theme_store_id=887&name=Prestige
Include price trend data:
GET /api/v1/themes/lookup?name=Prestige&include_pricing=true
Include performance data (Pro/Team tier required):
GET /api/v1/themes/lookup?name=Dawn&include_performance=true
Include both pricing and performance data:
GET /api/v1/themes/lookup?name=Prestige&include_pricing=true&include_performance=true
Response Examples
Default Response (Minimal):
{
"theme": {
"id": 1,
"name": "Dawn",
"theme_store_id": "887",
"preset_id": "4473",
"preset_name": null,
"base_theme_name": "Dawn",
"is_base_theme": true,
"latest_version": "15.4.0",
"developer": "Shopify",
"current_price": 0,
"is_vintage": false,
"is_retired": false,
"last_updated": "2025-07-24",
"purchase_url": "https://themes.shopify.com/themes/dawn",
"documentation_url": "https://help.shopify.com/themes/dawn",
"demo_store_url": "https://theme-dawn-demo.myshopify.com/",
"theme_vitals_available": true,
"details_url": "https://shopinfo.app/themes/dawn",
"presets": ["Sense", "Craft", "Studio", "Taste", "Colorblock"],
"performance": {
"mobile_cwv_rank": 67,
"desktop_cwv_rank": 82,
"data_updated_at": "2025-01-15T08:00:00Z",
"data_source": "ThemeVitals",
"themevitals_url": "https://themevitals.com/themes/dawn?utm_source=shopinfo_theme&utm_medium=partner&utm_campaign=dawn"
}
},
"lookup_method": "name",
"checked_at": "2025-08-15T10:30:00Z"
}
Note: The performance object only appears when include_performance=true is specified AND you have a Pro or Team tier API key. Performance rankings are sourced directly from ThemeVitals.com. Basic users will see performance_available: true with an upgrade message.
With Pricing Data (include_pricing=true):
{
"theme": {
"id": 46,
"name": "Prestige",
"theme_store_id": "855",
"current_price": 400,
"demo_store_url": "https://prestige-theme-allure.myshopify.com/",
"price_trends": {
"last_30_days": {
"price_change": 0,
"percent_change": 0,
"start_price": 400,
"end_price": 400
},
"last_90_days": {
"price_change": 0,
"percent_change": 0
}
},
// ... other fields
}
}
Response Fields
theme_store_id- Shopify's internal theme store IDpreset_id- ID for theme presets/stylesdemo_store_url- Direct URL to theme's demo storeis_base_theme- True if this is a base theme (not a preset)presets- Available presets/styles for base themesprice_trends- Price change history (only when include_pricing=true)lookup_method- Which parameter was used for the lookup
Code Examples
cURL
# Lookup by name
curl -H "API-Key: your_api_key_here" \
"https://shopinfo.app/api/v1/themes/lookup?name=Dawn"
# Lookup by theme store ID
curl -H "API-Key: your_api_key_here" \
"https://shopinfo.app/api/v1/themes/lookup?theme_store_id=887"
# Include pricing data
curl -H "API-Key: your_api_key_here" \
"https://shopinfo.app/api/v1/themes/lookup?name=Prestige&include_pricing=true"
# Include performance data (Pro/Team tier required)
curl -H "API-Key: your_pro_api_key_here" \
"https://shopinfo.app/api/v1/themes/lookup?name=Dawn&include_performance=true"
# Include both pricing and performance data
curl -H "API-Key: your_pro_api_key_here" \
"https://shopinfo.app/api/v1/themes/lookup?name=Prestige&include_pricing=true&include_performance=true"
# URL encode spaces and special characters
curl -H "API-Key: your_api_key_here" \
"https://shopinfo.app/api/v1/themes/lookup?name=Be%20Yours"
JavaScript
// Lookup by name (minimal response)
const params = new URLSearchParams({ name: 'Dawn' });
const response = await fetch(`https://shopinfo.app/api/v1/themes/lookup?${params}`, {
headers: {
'API-Key': 'your_api_key_here'
}
});
const data = await response.json();
console.log(data);
// Lookup with pricing data
const params2 = new URLSearchParams({
name: 'Prestige',
include_pricing: 'true'
});
const response2 = await fetch(`https://shopinfo.app/api/v1/themes/lookup?${params2}`, {
headers: {
'API-Key': 'your_api_key_here'
}
});
// Lookup with performance data (Pro/Team tier required)
const params3 = new URLSearchParams({
name: 'Dawn',
include_performance: 'true'
});
const response3 = await fetch(`https://shopinfo.app/api/v1/themes/lookup?${params3}`, {
headers: {
'API-Key': 'your_pro_api_key_here'
}
});
Python
import requests
# Lookup by name (minimal response)
response = requests.get(
'https://shopinfo.app/api/v1/themes/lookup',
params={'name': 'Dawn'},
headers={'API-Key': 'your_api_key_here'}
)
# Lookup with pricing data
response = requests.get(
'https://shopinfo.app/api/v1/themes/lookup',
params={'name': 'Prestige', 'include_pricing': 'true'},
headers={'API-Key': 'your_api_key_here'}
)
# Lookup by theme store ID
response = requests.get(
'https://shopinfo.app/api/v1/themes/lookup',
params={'theme_store_id': '887'},
headers={'API-Key': 'your_api_key_here'}
)
# Lookup with performance data (Pro/Team tier required)
response = requests.get(
'https://shopinfo.app/api/v1/themes/lookup',
params={'name': 'Dawn', 'include_performance': 'true'},
headers={'API-Key': 'your_pro_api_key_here'}
)
print(response.json())
Shop Check Endpoint
POST /api/v1/themes/shop_check
Check which Shopify theme a shop is using by providing the shop URL. This endpoint scrapes the shop in real-time and returns comprehensive theme information.
Authentication
Include your API key in the API-Key header.
API-Key: your_api_key_here
Request Body
{
"shop_url": "example.myshopify.com"
}
Response Example
{
"shop_url": "https://example.myshopify.com",
"theme": {
"id": 123,
"name": "Dawn",
"installed_version": "14.0.0",
"latest_version": "15.0.0",
"update_available": true,
"developer": "Shopify",
"current_price": 0,
"is_vintage": false,
"is_retired": false,
"last_updated": "2024-01-15",
"purchase_url": "https://themes.shopify.com/themes/dawn",
"documentation_url": "https://help.shopify.com/themes/dawn",
"presets": ["Default", "Colorful", "Modern"]
},
"detection_method": "web_scraping",
"checked_at": "2025-01-22T10:30:00Z"
}
Response Fields
installed_version- The theme version currently installed on the shoplatest_version- The latest version available in the Shopify Theme Storeupdate_available- Boolean indicating if a newer version is availableis_vintage- True if this is a legacy theme no longer soldis_retired- True if the theme has been discontinuedlast_updated- When the theme was last updated in the store
Code Examples
cURL
curl -X POST https://shopinfo.app/api/v1/themes/shop_check \
-H "Content-Type: application/json" \
-H "API-Key: your_api_key_here" \
-d '{"shop_url": "thepagesmedia.com"}'
JavaScript
const response = await fetch('https://shopinfo.app/api/v1/themes/shop_check', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'API-Key': 'your_api_key_here'
},
body: JSON.stringify({ shop_url: 'thepagesmedia.com' })
});
const data = await response.json();
console.log(data);
Python
import requests
response = requests.post(
'https://shopinfo.app/api/v1/themes/shop_check',
headers={
'API-Key': 'your_api_key_here',
'Content-Type': 'application/json'
},
json={'shop_url': 'thepagesmedia.com'}
)
print(response.json())
Error Responses
400 Bad Request
Shop Check endpoint:
{ "error": "shop_url parameter is required" }
Theme Lookup endpoint:
{
"error": "At least one parameter required",
"message": "Please provide either theme_store_id or name parameter"
}
401 Unauthorized
{ "error": "Unauthorized" }
404 Not Found
Shop Check endpoint (site not Shopify):
{
"shop_url": "https://example.com",
"error": "Not a Shopify site or theme could not be detected",
"checked_at": "2025-01-22T10:30:00Z"
}
Theme Lookup endpoint (theme not found):
{
"error": "Theme not found",
"message": "No theme found with name: NonExistentTheme",
"searched_parameters": {
"theme_store_id": null,
"name": "NonExistentTheme"
},
"checked_at": "2025-08-15T10:30:00Z"
}
When to Use Each Endpoint
Use Theme Lookup when:
- You know the theme name or ID
- You need instant results (no web scraping delay)
- You want to check theme details, presets, or pricing
- You're building a theme selector or comparison tool
- You need to validate theme compatibility before installation
Use Shop Check when:
- You have a Shopify store URL
- You need to detect the actual installed theme version
- You're monitoring competitor stores
- You're checking if a store needs theme updates
- You're analyzing theme adoption across multiple stores
Use Cases
- App developers checking theme compatibility
- Theme developers tracking theme usage and version adoption
- Merchants checking if their theme needs updating
- Agencies monitoring client stores for outdated themes
- Analytics and market research