Shopify Store Analyzer — Python SDK
Get revenue estimates, traffic data, tech stack, brand age & dropshipper risk for any Shopify store via a single API call.
Python client for the Shopify Store Analyzer Apify Actor — extract 40+ business intelligence signals from any Shopify store using only public data sources.
What it does
For any Shopify store URL, this actor returns a single rich JSON record combining 9 public data sources + 40+ derived intelligence signals.
A direct, pay-per-use alternative to:
- StoreLeads.app ($29/mo)
- Commerce Inspector ($10/mo)
- SimilarWeb Pro
- BuiltWith
Pricing: $0.01 per store analyzed. No monthly subscription, no credits expiring, no rate limits.
Quick start
from shopify_analyzer import ShopifyAnalyzerClient
client = ShopifyAnalyzerClient(api_token="apify_api_xxxxxx")
result = client.analyze_one("https://allbirds.com")
print(f"Revenue: ${result['revenue_estimate']['monthly_revenue_usd_est']:,}/mo")
print(f"Traffic: {result['traffic']['monthly_visits']:,} visits/mo")
print(f"Brand age: {result['estimated_brand_age_years']} years")
print(f"Tech stack: {', '.join(result['tech_stack'])}")
print(f"Risk score: {result['dropshipper_risk_score']}/100 ({result['dropshipper_risk_bucket']})")
Output:
Revenue: $6,629,788/mo
Traffic: 3,608,048 visits/mo
Brand age: 10.4 years
Tech stack: Google Analytics, Shop Pay, Apple Pay
Risk score: 50/100 (high)
Installation
pip install shopify-store-analyzer
Or clone and use directly:
git clone https://github.com/apivault-labs/shopify-store-analyzer-python.git
cd shopify-store-analyzer-python
pip install -r requirements.txt
Requires Python 3.9+ and the requests library.
Get your API token (free)
- Sign up at apify.com — free tier includes $5 monthly credits, no card required
- Go to Account → Integrations
- Copy your Personal API token
export APIFY_API_TOKEN=apify_api_xxxxxxxxxxxxxxxxxxxxxxxx
Or pass it explicitly:
client = ShopifyAnalyzerClient(api_token="apify_api_xxxxxx")
What you get for $0.01 per store
💰 Revenue & Traffic
- Estimated monthly revenue (visits × CR × AOV)
- Annualized revenue projection
- Monthly visits + 3-month trend (via SimilarWeb)
- Global rank, country rank, category rank
- Bounce rate, page per visit, avg time on site
- Top 5 countries by traffic share
- Top 10 keywords with search volume + CPC
📊 Product Intelligence
- Product count, AOV, price range
- New products in 7 / 30 / 90 days (velocity)
- Discount aggressiveness (% on sale + avg discount %)
- Vendor concentration, product types
- Inventory health (% in stock)
- Top 20 product tags (niche detection)
- Duplicate description ratio (dropshipper signal)
- Likely best-sellers (top 5 by image count)
🛠️ Tech Stack (60+ apps detected)
Klaviyo, Yotpo, Judge.me, ReCharge, Gorgias, AfterShip, PageFly, Shogun, Hotjar, Triple Whale, Northbeam, Algolia, Rebuy, Smile.io, Loox, Stamped, Okendo, Junip, Bold, Postscript, Attentive, Drift, Tidio, Re:amaze, Lucky Orange, Crazy Egg, Mouseflow, Refersion, ShipStation, ShipBob, Spocket, AutoDS, CJ Dropshipping, Oberlo, Dsers, Printful, Klarna, Afterpay, Sezzle, Affirm, Shop Pay, Apple Pay, Google Pay, PayPal — and more.
🎯 Tracking IDs (unique feature)
Public advertising IDs for brand-network mapping:
- Google Tag Manager (
GTM-XXXXXX) - GA4 (
G-XXXXXXXX), Universal Analytics (UA-X-X) - Facebook Pixel ID
- TikTok Pixel ID
- Pinterest Tag, Snapchat Pixel
- Klaviyo public key
- Hotjar Site ID, Intercom App ID, Microsoft Clarity ID
Same FB Pixel on two different stores = same operator. Detect parallel brand operations.
📢 Active Promo & Announcement Bar
- Free shipping threshold (
$35,$50,$100, or 0 for universal) - Active promo codes (
SUMMER25,SAVE10) - Current discount % shown on the banner
- Announcement bar text
⏱️ Brand Age
- Earliest Wayback Machine snapshot
- Earliest SSL certificate (via crt.sh)
- Estimated brand age in years
- Estimated founding year
- Shopify CDN store ID (sequential, lower = older)
🌍 International Expansion
- All
hreflanglanguages detected - Currency switcher / country selector flags
- International expansion score (0–100)
🧠 Derived Intelligence
- Customer segment — mass-market / mid-market / premium / luxury
- Marketing channel mix — search-driven / social-driven / paid-driven / brand-driven / email-driven / mixed
- Dropshipper risk score (0–100) with explained signals
📱 Social & Contact
- Instagram, Facebook, Twitter/X, TikTok, YouTube, Pinterest, LinkedIn handles
- Public emails and phones from homepage
🌐 Sitemap totals
Real product / page / collection / blog counts (not just sample).
Examples
See the examples/ folder for full code:
| File | What it does |
|---|---|
quickstart.py |
Analyze one store, print key metrics |
bulk_analyze.py |
Analyze 50+ stores in parallel |
find_dropshippers.py |
Filter stores by risk score |
export_to_csv.py |
Save results to CSV / Excel |
compare_competitors.py |
Side-by-side competitor comparison |
monitor_changes.py |
Track stores over time, detect changes |
API reference
ShopifyAnalyzerClient(api_token=None, timeout=600)
| Param | Type | Description |
|---|---|---|
api_token |
str |
Apify API token. Falls back to APIFY_API_TOKEN env var. |
timeout |
int |
Max seconds to wait for analysis. Default 600 (10 min). |
client.analyze(store_urls, conversion_rate=2.5, product_sample_size=250, ...)
Analyze multiple stores synchronously.
| Param | Type | Default | Description |
|---|---|---|---|
store_urls |
list[str] |
required | Shopify store URLs (full or bare domain) |
conversion_rate |
float |
2.5 | % for revenue formula. Industry: 2.5%, fashion: 1.5–2%, electronics: 1%, impulse: 3–4% |
product_sample_size |
int |
250 | Max products to sample (0 = full catalog) |
max_concurrency |
int |
3 | Parallel stores to analyze |
Plus boolean toggles to skip data sources for speed:
| Flag | Default | Effect |
|---|---|---|
extract_traffic |
True |
Pull SimilarWeb data |
extract_brand_age |
True |
Wayback Machine + crt.sh lookups |
extract_tech_stack |
True |
Detect 60+ apps + tracking IDs |
extract_promo |
True |
Free shipping, promo codes, announcement |
extract_international |
True |
hreflang + currency switcher |
extract_sitemap |
True |
Sitemap totals |
extract_derived_signals |
True |
Risk score, customer segment, marketing mix |
Returns: list[dict] — one record per store.
client.analyze_one(store_url, **kwargs)
Convenience wrapper for single-store analysis. Returns one dict.
Sample output
{
"domain": "allbirds.com",
"myshopify_handle": "weareallbirds.myshopify.com",
"currency": "USD",
"cdn_store_id": "1104/4168",
"tech_stack": ["Google Analytics", "Shop Pay", "Apple Pay"],
"tracking_ids": {
"google_tag_manager": "TH8KRSBJ"
},
"announcement": {
"announcement_discount_pct": 30,
"announcement_bar_text": "30% off your order when you spend $150+. Discount automatically applied at checkout."
},
"socials": {
"instagram": "allbirds",
"tiktok": "weareallbirds"
},
"price_min": 3.0, "price_max": 99.0, "price_median": 39.0,
"avg_order_value": 58.50,
"products_on_sale_pct": 98.0,
"avg_discount_pct": 53.0,
"avg_images_per_product": 2.5,
"unique_tags_count": 285,
"top_tags": [
{"tag": "collection:apr26", "count": 100},
{"tag": "shoprunner", "count": 100}
],
"duplicate_description_pct": 89.0,
"new_products_30d": 100,
"sitemap_products": 980,
"hreflangs_count": 85,
"international_expansion_score": 70,
"estimated_brand_age_years": 10.4,
"estimated_founded_year": 2015,
"traffic": {
"monthly_visits": 3608048,
"global_rank": 10716,
"category_rank": 127,
"top_countries": [{"country_code": "US", "share": 0.87}]
},
"revenue_estimate": {
"monthly_revenue_usd_est": 6629788,
"annualized_revenue_usd_est": 79557456,
"conversion_rate_used_pct": 2.5
},
"customer_segment": "mid-market",
"marketing_channel_mix": "search-driven (58%)",
"dropshipper_risk_score": 50,
"dropshipper_risk_bucket": "high"
}
Use cases
🥇 Dropshipping competitor research
Verify a competitor's revenue before copying their niche. Find legit brands (dropshipper_risk_bucket: "low") with revenue > $1M/mo and study their tech stack.
🥈 B2B lead generation for Shopify apps
Find stores without your app (e.g. no Klaviyo → email automation pitch). Filter by revenue tier for enterprise prospects. Get founder emails and social handles in one call.
🥉 Investment due diligence
Verify claimed revenue. Cross-check brand age via Wayback + SSL. Spot paid-driven marketing (high CAC) vs brand-driven (sustainable).
🎯 Agency prospecting
- Old themes → pitch redesign
- Low
page_per_visit→ pitch CRO - Low
international_expansion_score→ pitch geo-expansion - High
dropshipper_risk_score→ skip (won't convert)
📊 Market research
Track 100+ competitors weekly. Compare AOV, velocity, tech stack across a niche.
🔍 Brand network detection
Use tracking_ids to detect domains sharing the same Facebook Pixel or GTM container — same operator behind multiple brands.
Pricing
Pay only for what you analyze:
| Volume | Cost |
|---|---|
| 1 store | $0.01 |
| 100 stores | $1.00 |
| 1,000 stores | $10.00 |
| 10,000 stores | $100.00 |
Free Apify tier includes ~$5 monthly credit — analyze ~500 stores per month for free.
How it works
All data sources are public and free — no logins, no proxies, no extra API keys:
/products.json— Shopify's public catalog API/collections.json— public collections/sitemap.xml— recursive child sitemaps for real totals- Homepage HTML — tech stack, socials, meta, tracking IDs, announcement bar
- SimilarWeb public API — undocumented but stable
- Wayback Machine — first snapshot date
- crt.sh — earliest SSL cert (certificate transparency logs)
- hreflang scan — international targeting
- Schema.org JSON-LD — aggregateRating
Revenue formula:
revenue = monthly_visits × conversion_rate × AOV
AOV = median_price × 1.5 (industry heuristic for items per order)
FAQ
Q: Will it work on every Shopify store?
A: Yes — every store with /products.json enabled (the default). Some stores hide their catalog; for those you still get tech stack, socials, traffic, brand age.
Q: How accurate is the revenue estimate? A: For stores with 100K+ monthly visits: usually within ±25% of public revenue. Smaller stores: less reliable due to SimilarWeb sampling. Treat as order-of-magnitude.
Q: Can it detect Shopify Plus stores?
A: Yes, via the likely_shopify_plus boolean.
Q: What if SimilarWeb has no data? A: Traffic / revenue fields will be null, but you still get all product, tech, brand age, and signal data.
Q: Is the dropshipper risk score reliable? A: It's a heuristic. Scores 50+ almost always indicate dropshippers. Under 25 = legit brands. 25–50 = manual review.
Q: Can I run this without Apify? A: This package is a thin wrapper around the hosted actor. The actor handles infrastructure, retries, parallelism. Self-hosted scraping at scale is a separate undertaking.
Related Apify actors
- Shopify Product Scraper — extract full catalogs
- WooCommerce Store Analyzer — same intelligence for WooCommerce
- Domain Intelligence Scraper — WHOIS, DNS, SSL, subdomains
- WordPress Plugin Directory Scraper — 60K+ plugins
See all actors by apivault_labs.
License
MIT — see LICENSE.
This client is open source. The underlying Apify actor is a paid service ($0.01/store).
Keywords
shopify-scraper shopify-store-analyzer shopify-revenue-estimator shopify-intelligence shopify-api storeleads-alternative commerce-inspector-alternative similarweb-alternative ecommerce-intelligence dropshipper-detection competitive-intelligence web-scraping apify apify-actor python-sdk shopify-tech-stack shopify-tracking-ids shopify-revenue-api shopify-traffic-estimation lead-generation b2b-leads
Metadata
Release files for shopify-store-analyzer 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| shopify_store_analyzer-0.1.0.tar.gz | 16.9 kB | Without provenance | Details for shopify_store_analyzer-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| shopify_store_analyzer-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for shopify_store_analyzer-0.1.0-py3-none-any.whl |
Total release size: 29.3 kB
Release files / shopify_store_analyzer-0.1.0.tar.gz
| Download URL | shopify_store_analyzer-0.1.0.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7087884d71c8688c9cf6e817eccaf85cf0288d15f4f1eb281a3747715ba0e7c3
|
|
BLAKE2b-256 checksum How to use checksums |
ef80fe7780979bba105fd957ff8b778d1a518ef83ad40a98ab24ab32dc7935de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / shopify_store_analyzer-0.1.0-py3-none-any.whl
| Download URL | shopify_store_analyzer-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4a3d907c91a9e05c98ead1051fa57b60eb702d52be9cd892adfa1ecf19a971b6
|
|
BLAKE2b-256 checksum How to use checksums |
b5914b54affd1070e0fd86239f74371b18d512fa898e05985290286a09df055a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for shopify-store-analyzer 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.