woocommerce-store-analyzer 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ApiVault Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,446 @@
1
+ Metadata-Version: 2.4
2
+ Name: woocommerce-store-analyzer
3
+ Version: 0.1.0
4
+ Summary: Python SDK for the WooCommerce Store Analyzer Apify actor — revenue, traffic, brand age, 70+ plugins, tech stack, tracking IDs, dropshipper risk for any WooCommerce store.
5
+ Author: ApiVault Labs
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/apivault-labs/woocommerce-store-analyzer-python
8
+ Project-URL: Documentation, https://github.com/apivault-labs/woocommerce-store-analyzer-python#readme
9
+ Project-URL: Apify Actor, https://apify.com/apivault_labs/woocommerce-store-analyzer
10
+ Project-URL: Bug Tracker, https://github.com/apivault-labs/woocommerce-store-analyzer-python/issues
11
+ Keywords: woocommerce,woocommerce-analyzer,woocommerce-store-analyzer,wordpress-analyzer,wp-analyzer,wp-plugin-detector,ecommerce-intelligence,store-intelligence,builtwith-alternative,wappalyzer-alternative,similarweb-alternative,competitor-intelligence,lead-generation,agency-prospecting,dropshipper-detection,brand-network-mapping,web-scraping,apify,apify-actor,python-sdk
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Internet :: WWW/HTTP
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Requires-Python: >=3.9
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: requests>=2.31.0
26
+ Dynamic: license-file
27
+
28
+ # WooCommerce Store Analyzer — Python SDK
29
+
30
+ > **Spy on any WooCommerce store: revenue, traffic, brand age, 70+ plugins detected, tech stack, tracking IDs, dropshipper risk, international expansion — all in one API call.**
31
+
32
+ Python client for the [WooCommerce Store Analyzer Apify Actor](https://apify.com/apivault_labs/woocommerce-store-analyzer) — get **56+ intelligence fields** for any WooCommerce store using only public data sources.
33
+
34
+ [![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue?logo=apify)](https://apify.com/apivault_labs/woocommerce-store-analyzer)
35
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
36
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9%2B-blue.svg)](https://www.python.org/)
37
+ [![PyPI-friendly](https://img.shields.io/badge/install-pip-success)](#installation)
38
+
39
+ ---
40
+
41
+ ## What it does
42
+
43
+ WooCommerce powers ~30% of all online stores worldwide. For any WooCommerce URL, this actor returns a single rich JSON record combining **8 public data sources** and **20+ derived intelligence signals**.
44
+
45
+ A direct, pay-per-use alternative to:
46
+ - [BuiltWith](https://builtwith.com) ($295+/mo)
47
+ - [Wappalyzer](https://wappalyzer.com) ($150+/mo)
48
+ - [SimilarWeb Pro](https://www.similarweb.com)
49
+ - [Commerce Inspector](https://commerceinspector.com) ($10/mo, Shopify-focused)
50
+
51
+ **Pricing:** $0.01 per store analyzed. No subscriptions, no credits expiring, no rate limits.
52
+
53
+ ---
54
+
55
+ ## Quick start
56
+
57
+ ```python
58
+ from woocommerce_analyzer import WooCommerceAnalyzerClient
59
+
60
+ client = WooCommerceAnalyzerClient(api_token="apify_api_xxxxxx")
61
+
62
+ result = client.analyze_one("https://store.com")
63
+
64
+ print(f"Revenue: ${result['revenue_estimate']['monthly_revenue_usd_est']:,}/mo")
65
+ print(f"Traffic: {result['traffic']['monthly_visits']:,} visits/mo")
66
+ print(f"WP version: {result.get('wordpress_version', '?')}")
67
+ print(f"WC version: {result.get('woocommerce_version', '?')}")
68
+ print(f"Plugins: {result['plugins_count']}")
69
+ print(f"Tech quality: {result['tech_quality_score']}/100")
70
+ print(f"Risk: {result['dropshipper_risk_score']}/100 ({result['dropshipper_risk_bucket']})")
71
+ ```
72
+
73
+ Output:
74
+ ```
75
+ Revenue: $1,843,570/mo
76
+ Traffic: 1,393,477 visits/mo
77
+ WP version: 7.0
78
+ WC version: 8.4.1
79
+ Plugins: 3
80
+ Tech quality: 90/100
81
+ Risk: 0/100 (low)
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Installation
87
+
88
+ ```bash
89
+ pip install woocommerce-store-analyzer
90
+ ```
91
+
92
+ Or clone and use directly:
93
+
94
+ ```bash
95
+ git clone https://github.com/apivault-labs/woocommerce-store-analyzer-python.git
96
+ cd woocommerce-store-analyzer-python
97
+ pip install -r requirements.txt
98
+ ```
99
+
100
+ Requires Python 3.9+ and the [`requests`](https://pypi.org/project/requests/) library.
101
+
102
+ ---
103
+
104
+ ## Get your API token (free)
105
+
106
+ 1. Sign up at [apify.com](https://apify.com) — free tier includes $5 monthly credits, no card required
107
+ 2. Go to [Account → Integrations](https://console.apify.com/account/integrations)
108
+ 3. Copy your Personal API token
109
+
110
+ ```bash
111
+ export APIFY_API_TOKEN=apify_api_xxxxxxxxxxxxxxxxxxxxxxxx
112
+ ```
113
+
114
+ Or pass it explicitly:
115
+
116
+ ```python
117
+ client = WooCommerceAnalyzerClient(api_token="apify_api_xxxxxx")
118
+ ```
119
+
120
+ ---
121
+
122
+ ## What you get for $0.01 per store
123
+
124
+ ### 💰 Revenue & Traffic Intelligence
125
+ - **Estimated monthly revenue** (visits × CR × AOV)
126
+ - **Annualized revenue** projection
127
+ - **Monthly visits** + 3-month trend (SimilarWeb)
128
+ - Global rank, country rank, category rank
129
+ - Bounce rate, page per visit, avg time on site
130
+ - Top 5 countries by traffic share
131
+ - Traffic sources breakdown (search/social/paid/direct/...)
132
+ - Top 10 keywords with search volume + CPC
133
+
134
+ ### 🔌 Plugin Detection (two methods)
135
+ 1. **HTML scan** — plugin slugs from `/wp-content/plugins/<slug>/`
136
+ 2. **WP REST namespaces** — plugins that register REST endpoints (more reliable)
137
+
138
+ ### 🛠️ Tech Stack (70+ apps)
139
+ - **Page builders:** Elementor, Divi, WPBakery, Beaver Builder, Oxygen, Bricks
140
+ - **Payments:** Stripe, PayPal, Square, Klarna, Afterpay, Sezzle, Affirm
141
+ - **Reviews:** Judge.me, Yotpo, Loox, Trustpilot
142
+ - **Email:** Klaviyo, Mailchimp, MailPoet, ActiveCampaign, ConvertKit, HubSpot
143
+ - **SEO:** Yoast, Rank Math, AIOSEO
144
+ - **Cache:** WP Rocket, W3 Total Cache, LiteSpeed, NitroPack, Cloudflare
145
+ - **Pixels:** Facebook, TikTok, Pinterest, Google, Microsoft Clarity, Hotjar
146
+ - **Hosting hints:** WP Engine, Kinsta, SiteGround, Hostinger
147
+ - **Security:** Wordfence, Sucuri, iThemes Security
148
+ - **Multilingual:** WPML, Polylang, TranslatePress
149
+ - **LMS:** MemberPress, LearnDash, LifterLMS
150
+
151
+ ### 🎯 Tracking IDs (unique feature)
152
+ Public advertising IDs for **brand-network mapping**:
153
+ - Google Tag Manager, GA4, Universal Analytics
154
+ - Facebook Pixel, TikTok Pixel, Pinterest Tag
155
+ - Klaviyo public key, Hotjar, Microsoft Clarity
156
+
157
+ > Same FB Pixel on two domains = same operator. Detect parallel WooCommerce brands.
158
+
159
+ ### 🌐 Sitemap Totals
160
+ - Real product / page / post / category counts (from `/sitemap.xml`)
161
+
162
+ ### ⏱️ Brand Age
163
+ - Earliest Wayback Machine snapshot
164
+ - Earliest SSL certificate (via crt.sh)
165
+ - Estimated brand age + founding year
166
+
167
+ ### 🌍 International Expansion
168
+ - All hreflang languages
169
+ - Currency switcher / country selector flags
170
+ - WPML / Polylang detection
171
+ - **International expansion score (0-100)**
172
+
173
+ ### 🏷️ WordPress Meta
174
+ - WordPress version (from generator meta)
175
+ - WooCommerce version (from asset paths)
176
+ - Active theme, currency, OG metadata
177
+
178
+ ### 🧠 Derived Intelligence
179
+ - **`tech_quality_score`** (0-100) with explained signals — composite quality
180
+ - **`dropshipper_risk_score`** (0-100) — heuristic detection (alidropship, dropified, spocket)
181
+ - **`customer_segment`** — mass-market / mid-market / premium / luxury
182
+ - **`marketing_channel_mix`** — search-driven / social-driven / paid-driven / brand-driven
183
+ - **`international_expansion_score`** (0-100)
184
+
185
+ ### 📱 Social & Contact
186
+ - Instagram, Facebook, Twitter/X, TikTok, YouTube, Pinterest, LinkedIn handles
187
+ - Public emails and phones from homepage
188
+
189
+ ---
190
+
191
+ ## Examples
192
+
193
+ See [`examples/`](examples) for full code:
194
+
195
+ | File | What it does |
196
+ |---|---|
197
+ | [`quickstart.py`](examples/quickstart.py) | Analyze one store, print key metrics |
198
+ | [`bulk_analyze.py`](examples/bulk_analyze.py) | Analyze 50+ stores in parallel |
199
+ | [`find_dropshippers.py`](examples/find_dropshippers.py) | Filter stores by dropshipper risk score |
200
+ | [`agency_prospecting.py`](examples/agency_prospecting.py) | Find WC stores with outdated WP/WC for agency leads |
201
+ | [`plugin_research.py`](examples/plugin_research.py) | Aggregate plugin usage across niche stores |
202
+ | [`brand_network_detector.py`](examples/brand_network_detector.py) | Detect domains sharing the same FB Pixel/GTM |
203
+ | [`export_to_csv.py`](examples/export_to_csv.py) | Save results to CSV / Excel |
204
+
205
+ ---
206
+
207
+ ## API reference
208
+
209
+ ### `WooCommerceAnalyzerClient(api_token=None, timeout=600)`
210
+
211
+ | Param | Type | Description |
212
+ |---|---|---|
213
+ | `api_token` | `str` | Apify API token. Falls back to `APIFY_API_TOKEN` env var. |
214
+ | `timeout` | `int` | Max seconds to wait for analysis. Default 600 (10 min). |
215
+
216
+ ### `client.analyze(store_urls, **kwargs)`
217
+
218
+ Analyze multiple stores synchronously.
219
+
220
+ | Param | Type | Default | Description |
221
+ |---|---|---|---|
222
+ | `store_urls` | `list[str]` | required | WooCommerce store URLs (or bare domains) |
223
+ | `conversion_rate` | `float` | 1.8 | % for revenue formula. Industry: 1.5–2% |
224
+ | `product_sample_size` | `int` | 200 | Products to sample (0 = full catalog) |
225
+ | `max_concurrency` | `int` | 3 | Parallel stores to analyze |
226
+
227
+ Plus boolean toggles to skip layers for speed:
228
+
229
+ | Flag | Default | Effect |
230
+ |---|---|---|
231
+ | `extract_traffic` | `True` | Pull SimilarWeb data |
232
+ | `extract_revenue_estimate` | `True` | Compute revenue formula |
233
+ | `extract_tech_stack` | `True` | Detect 70+ apps + tracking IDs |
234
+ | `extract_plugins` | `True` | Plugin slugs from HTML |
235
+ | `extract_wp_namespaces` | `True` | Active plugins via WP REST |
236
+ | `extract_sitemap` | `True` | Real totals from sitemap.xml |
237
+ | `extract_brand_age` | `True` | Wayback + crt.sh lookups |
238
+ | `extract_international` | `True` | hreflang + currency switcher |
239
+ | `extract_derived_signals` | `True` | tech_quality_score, dropshipper_risk_score |
240
+
241
+ Returns: `list[dict]` — one record per store.
242
+
243
+ ### `client.analyze_one(store_url, **kwargs)`
244
+ Convenience wrapper for single-store analysis. Returns one `dict`.
245
+
246
+ ### `client.find_by_revenue(store_urls, min_usd_per_month, **kwargs)`
247
+ Filter analyzed stores by minimum estimated monthly revenue.
248
+
249
+ ### `client.find_outdated_wp(store_urls, max_wp_version=6.0, **kwargs)`
250
+ Find stores running WordPress older than X.Y — agency lead generation.
251
+
252
+ ### `client.estimate_cost(store_count)`
253
+ Returns the estimated USD cost for analyzing `store_count` stores.
254
+
255
+ ---
256
+
257
+ ## Sample output
258
+
259
+ ```json
260
+ {
261
+ "domain": "store.com",
262
+ "wordpress_version": "6.4.2",
263
+ "woocommerce_version": "8.4.1",
264
+ "theme_slug": "astra",
265
+ "currency": "USD",
266
+ "tech_stack": ["WooCommerce", "Elementor", "Stripe", "Klaviyo", "Yoast SEO", "WP Rocket"],
267
+ "tracking_ids": {
268
+ "google_tag_manager": "GTM-ABC1234",
269
+ "facebook_pixel": "1234567890123456"
270
+ },
271
+ "plugins_detected": ["woocommerce", "elementor", "klaviyo", "yoast-seo"],
272
+ "plugins_count": 24,
273
+ "wp_namespaces": ["yoast/v1", "wpforms/v1", "elementor/v1"],
274
+ "wp_rest_alive": true,
275
+ "sitemap_products": 487,
276
+ "sitemap_pages": 24,
277
+ "hreflangs_count": 3,
278
+ "international_expansion_score": 50,
279
+ "estimated_brand_age_years": 4.2,
280
+ "estimated_founded_year": 2022,
281
+ "traffic": {
282
+ "monthly_visits": 187432,
283
+ "global_rank": 89321,
284
+ "category_rank": 421,
285
+ "top_countries": [{"country_code": "US", "share": 0.74}]
286
+ },
287
+ "revenue_estimate": {
288
+ "monthly_revenue_usd_est": 247943,
289
+ "annualized_revenue_usd_est": 2975316,
290
+ "conversion_rate_used_pct": 1.8
291
+ },
292
+ "customer_segment": "mid-market",
293
+ "marketing_channel_mix": "search-driven (52%)",
294
+ "tech_quality_score": 90,
295
+ "tech_quality_signals": ["WP 6.3+", "WC 8.x+", "modern payments", "caching layer", "SEO plugin", "email marketing"],
296
+ "dropshipper_risk_score": 0,
297
+ "dropshipper_risk_bucket": "low"
298
+ }
299
+ ```
300
+
301
+ ---
302
+
303
+ ## Use cases
304
+
305
+ ### 🥇 WP-agency prospecting
306
+ Find stores with **outdated WordPress / WooCommerce versions**, **no caching**, **no security plugin**, **no SEO plugin** — perfect leads for WP optimization services.
307
+
308
+ ```python
309
+ candidates = ["https://store1.com", "https://store2.com", ...]
310
+ outdated = client.find_outdated_wp(candidates, max_wp_version=6.0)
311
+ # → list of stores with WP < 6.0 — pitch WP upgrade
312
+ ```
313
+
314
+ ### 🥈 Plugin/SaaS sales
315
+ Find WC stores **using your competitor** (e.g. Mailchimp → pitch Klaviyo) or **NOT using** your category (e.g. no Wordfence → pitch security).
316
+
317
+ ```python
318
+ stores = client.analyze(candidates)
319
+ no_klaviyo = [s for s in stores
320
+ if "Klaviyo" not in (s.get("tech_stack") or [])
321
+ and s.get("revenue_estimate", {}).get("monthly_revenue_usd_est", 0) > 50000]
322
+ ```
323
+
324
+ ### 🥉 Dropshipping competitor research
325
+ Verify a competitor's revenue **before** copying. Filter `dropshipper_risk_score < 25 + revenue > $50K/mo` to find legit niches worth entering.
326
+
327
+ ### 🎯 Plugin research at scale
328
+ Aggregate `top_plugins` across 100 stores in a niche → see which plugin combinations correlate with success.
329
+
330
+ ### 📊 Investment due diligence
331
+ Verify claimed revenue. Cross-check brand age via Wayback + SSL. Detect tech stack maturity.
332
+
333
+ ### Brand network detection
334
+ Use `tracking_ids` to detect domains sharing the same Facebook Pixel or GTM container — same operator behind multiple WC brands.
335
+
336
+ ```python
337
+ stores = client.analyze(candidates)
338
+ fb_pixel_groups = {}
339
+ for s in stores:
340
+ pixel = s.get("tracking_ids", {}).get("facebook_pixel")
341
+ if pixel:
342
+ fb_pixel_groups.setdefault(pixel, []).append(s["domain"])
343
+
344
+ # Detect networks
345
+ for pixel, domains in fb_pixel_groups.items():
346
+ if len(domains) > 1:
347
+ print(f"Same FB Pixel {pixel}: {domains}")
348
+ ```
349
+
350
+ ### Market research
351
+ Track 100+ WC competitors weekly. Compare AOV, plugin choices, customer segment.
352
+
353
+ ---
354
+
355
+ ## Pricing
356
+
357
+ Pay only for what you analyze:
358
+
359
+ | Volume | Cost |
360
+ |---|---|
361
+ | 1 store | $0.01 |
362
+ | 100 stores | $1.00 |
363
+ | 1,000 stores | $10.00 |
364
+ | 10,000 stores | $100.00 |
365
+
366
+ Free Apify tier includes ~$5 monthly credit — analyze ~500 stores per month for free.
367
+
368
+ ---
369
+
370
+ ## How it works
371
+
372
+ All sources are **public and free** — no logins, no API keys, no proxies:
373
+
374
+ 1. **`/wp-json/wc/store/v1/products`** — WooCommerce Store API (default-on since WC 4.7)
375
+ 2. **`/wp-json/wc/store/v1/products/categories`** — public category metadata
376
+ 3. **`/wp-json/`** — list of registered REST namespaces (active plugins fingerprint)
377
+ 4. **`/sitemap.xml` / `/wp-sitemap.xml`** — recursive child sitemaps for real totals
378
+ 5. **Homepage HTML** — parsed for plugins, theme, tech stack, tracking IDs, hreflang, currency
379
+ 6. **SimilarWeb public API** — stable for years
380
+ 7. **Wayback Machine** — first snapshot date
381
+ 8. **crt.sh** — SSL certificate transparency logs
382
+
383
+ Revenue estimate uses the industry-standard formula:
384
+ ```
385
+ estimated_revenue = monthly_visits × conversion_rate × AOV
386
+ AOV = median_price × 1.5
387
+ ```
388
+
389
+ ---
390
+
391
+ ## Speed & reliability
392
+
393
+ - **8–12 seconds per store** (parallel HTTP, no rendering)
394
+ - **3 stores in parallel** by default (configurable up to 10)
395
+ - **No proxies needed** — all sources work from datacenter IPs
396
+ - **Graceful degradation** — if Wayback is slow, other layers still return data
397
+
398
+ ---
399
+
400
+ ## FAQ
401
+
402
+ **Q: Will it work on every WooCommerce store?**
403
+ A: Yes — every store with the Store API enabled (default since WC 4.7, ~95%+ of stores). Stores that disable it return an error and skip cleanly.
404
+
405
+ **Q: How accurate is the revenue estimate?**
406
+ A: For stores with 100K+ monthly visits: usually within ±25% of public revenue. Smaller stores: less reliable due to SimilarWeb sampling. Treat as an order-of-magnitude estimate.
407
+
408
+ **Q: Can I detect Shopify stores too?**
409
+ A: Use the companion **[Shopify Store Analyzer](https://apify.com/apivault_labs/shopify-store-analyzer)**.
410
+
411
+ **Q: How is `tech_quality_score` computed?**
412
+ A: Composite of WP/WC versions + modern payments + caching + security + SEO + email marketing + premium hosting. Stores scoring 70+ are well-maintained DTC brands; <30 = abandoned/legacy.
413
+
414
+ **Q: How accurate is `dropshipper_risk_score`?**
415
+ A: Heuristic. Scores 50+ almost always indicate dropshippers. Under 25 = legit brands. 25–50 needs manual review.
416
+
417
+ **Q: How is brand age estimated?**
418
+ A: Earliest of (Wayback first snapshot, crt.sh first SSL cert). For domains older than ~2010, usually within ±1–2 years of actual founding.
419
+
420
+ **Q: Can I run this without Apify?**
421
+ 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.
422
+
423
+ ---
424
+
425
+ ## Related Apify actors
426
+
427
+ - [WooCommerce Product Scraper](https://apify.com/apivault_labs/woocommerce-product-scraper) — full catalog extraction with variants
428
+ - [Shopify Store Analyzer](https://apify.com/apivault_labs/shopify-store-analyzer) — same intelligence for Shopify
429
+ - [WordPress Plugin Detector](https://apify.com/apivault_labs/wp-plugin-detector) — detect WP plugins on any site
430
+ - [Domain Intelligence Scraper](https://apify.com/apivault_labs/domain-intelligence-scraper) — WHOIS, DNS, SSL, subdomains
431
+
432
+ See [all actors by apivault_labs](https://apify.com/apivault_labs).
433
+
434
+ ---
435
+
436
+ ## License
437
+
438
+ MIT — see [LICENSE](LICENSE).
439
+
440
+ This client is open source. The underlying Apify actor is a paid service ($0.01/store).
441
+
442
+ ---
443
+
444
+ ## Keywords
445
+
446
+ `woocommerce-analyzer` `woocommerce-store-analyzer` `wordpress-analyzer` `wp-analyzer` `wp-plugin-detector` `wordpress-plugin-detection` `ecommerce-intelligence` `store-intelligence` `builtwith-alternative` `wappalyzer-alternative` `similarweb-alternative` `commerce-inspector-alternative` `competitor-intelligence` `wp-agency-prospecting` `wp-lead-generation` `dropshipper-detection` `dropshipper-risk-score` `brand-network-mapping` `tracking-id-extraction` `wc-store-api` `wp-rest-api` `wordpress-rest` `web-scraping` `apify` `apify-actor` `python-sdk` `tech-stack-detection`