# Changelog of Shopify Store Discovery - Apps, Revenue Estimate, Tech Stack (`seibs.co/shopify-store-discovery`) Actor

- **URL**: https://apify.com/seibs.co/shopify-store-discovery/changelog.md
- **Full Actor documentation**: https://apify.com/seibs.co/shopify-store-discovery.md

## Changelog

### 0.4 - 2026-06-23 - Real discovery: find stores by niche (no domain list)

- New **`discover_by_niche` mode** (now the default): give `niche_keywords` like `["skincare"]` and the actor FINDS the stores - it searches the web for niche round-up articles, harvests the brands they link to, verifies Shopify, then detects apps / extracts contacts / estimates revenue / filters, exactly like the other modes. This closes the gap that made the actor enrich-only: buyers no longer have to bring the domain list. Combine with `required_apps` / `excluded_apps` for "skincare stores using Klaviyo" or "coffee stores WITHOUT Klaviyo".
- New `src/search_source.py`: niche -> listicle-seeking queries -> multi-engine search (DuckDuckGo Lite primary, DDG HTML + Mojeek fallback, tried per-query so one engine rate-limiting is not fatal) -> deduped round-up seed URLs, fed into the existing crawl -> verify -> enrich pipeline. Validated live end-to-end: `["skincare"]` returned 8 verified Shopify stores (kosas, fenty, kylie, pixi...) with full app stacks + contacts, all billable.
- Inputs: `niche_keywords` (cap 10) + `discovery_max_seed_urls`. No new billable event - discovery simply sources more verified stores per run at the existing `store_record` price.
- Repositioned the listing title/description from "discovery by domain list" to "find Shopify stores by niche + app" (the query buyers actually search for). Best on the default RESIDENTIAL proxy (search engines rate-limit datacenter IPs).

### 0.3 - 2026-05-15

- Per-store progress logging (`[shopify] domain OK: Shopify, Plus, 142 products, 8 apps, est rev $30k-$80k/mo (medium), email=founder@...`).
- Contact enrichment module: scrapes `/contact` `/pages/contact` `/about` for emails (with role classification — founder, sales, support, etc) and phones. New PPE event `contact_enrichment` ($0.005) charged only when data is extracted.
- Founder + brand-story intel module (opt-in via `include_founder_intel`): `founder_names`, `founding_year`, `brand_story_keywords` (vegan, sustainable, made in USA, woman-owned, B-corp, etc).
- Revenue estimator refinements: Shopify Plus uplift, subscription-mix uplift, B2B/wholesale band widening, enterprise-stack uplift; new `revenue_estimate_confidence` (low/medium/high).
- New `is_shopify_plus` and `is_b2b_wholesale` boolean fields.
- New `last_product_published_at` and `days_since_last_publish` (deep\_analyze mode) so buyers can separate fresh from abandoned stores.
- New `reviews_count_visible` and `reviews_avg_visible` (when a review app is detected).
- 8 new app footprints: SparkLayer, B2B Wholesale Solution, Wholesale Pricing Now, LoyaltyLion, Global-e (38+ total).
- Two new input toggles: `include_contact_enrichment` (default true) and `include_founder_intel` (default false).

### 0.2 - 2026-05-14

- Added Apify output schema (`.actor/output_schema.json`).
- Added `detailed` view and `apps` unwind view (one row per detected app per store).
- README restructured with Features / Use cases / FAQ / Support.

### 0.1 - Initial release

- Three modes: discover\_by\_domain\_list, detect\_shopify\_only, deep\_analyze.
- 30+ app detector, server-side filters by required/excluded apps + revenue band, heuristic monthly revenue estimate.
