curl -X POST "https://searchcompany-main.up.railway.app/api/validate-shopify" \
-H "Content-Type: application/json" \
-d '{"url": "gymshark.com"}'
{
"is_shopify": true,
"message": "Valid Shopify store"
}
{
"is_shopify": false,
"message": "This does not appear to be a Shopify store"
}
π΅ POST - Validate Shopify
Validate Shopify Store
Check if a URL is a supported Shopify store
POST
/
api
/
validate-shopify
curl -X POST "https://searchcompany-main.up.railway.app/api/validate-shopify" \
-H "Content-Type: application/json" \
-d '{"url": "gymshark.com"}'
{
"is_shopify": true,
"message": "Valid Shopify store"
}
{
"is_shopify": false,
"message": "This does not appear to be a Shopify store"
}
Public endpoint used on the marketing website to validate that a URL is a Shopify store before proceeding with the ranking analysis flow.
This is a public endpoint - no authentication required. Rate limited to 5 requests/minute per IP.
How It Works
The endpoint checks if the domain has an accessible/products.json endpoint, which is a Shopify-specific API that every standard Shopify store exposes.
Why /products.json?
- Every Shopify store has this endpoint
- Returns 200 for Shopify stores, 404 for non-Shopify sites
- If blocked (403), the store is using a headless setup we canβt support
Request Body
string
required
Website URL to validate (e.g., βgymshark.comβ or βhttps://www.allbirds.comβ)
Response
boolean
true if the URL is a supported Shopify store, false otherwisestring
Human-readable status message
Supported vs Unsupported Stores
| Store Type | /products.json | Supported? |
|---|---|---|
| Standard Shopify | 200 β | Yes |
| Shopify behind Cloudflare | 200 β | Yes |
| Headless (custom frontend) | 403/404 β | No |
| Non-Shopify | 404 β | No |
curl -X POST "https://searchcompany-main.up.railway.app/api/validate-shopify" \
-H "Content-Type: application/json" \
-d '{"url": "gymshark.com"}'
{
"is_shopify": true,
"message": "Valid Shopify store"
}
{
"is_shopify": false,
"message": "This does not appear to be a Shopify store"
}
Usage on Landing Page
const response = await fetch(
"https://searchcompany-main.up.railway.app/api/validate-shopify",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ url: userInput }),
}
);
const { is_shopify, message } = await response.json();
if (!is_shopify) {
showError("This does not appear to be a Shopify store");
return;
}
// Proceed with ranking analysis...