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
Launch Interactive Explorer

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 Started

Available 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 ID
  • preset_id - ID for theme presets/styles
  • demo_store_url - Direct URL to theme's demo store
  • is_base_theme - True if this is a base theme (not a preset)
  • presets - Available presets/styles for base themes
  • price_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 shop
  • latest_version - The latest version available in the Shopify Theme Store
  • update_available - Boolean indicating if a newer version is available
  • is_vintage - True if this is a legacy theme no longer sold
  • is_retired - True if the theme has been discontinued
  • last_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