{
  "data": {
    "id": "yvjWtmKgfbyDV6FVY",
    "actId": "1HhF1jdDY6OOB3f9b",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-11-03T16:47:18.884Z",
    "finishedAt": "2026-11-03T16:47:22.632Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3643,
      "runTimeSecs": 3.643,
      "computeUnits": 0.004047777777777778,
      "imageSizeBytes": 318918144
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"schemaVersion\": 1,\n  \"title\": \"Ecwid App Market Scraper Input\",\n  \"description\": \"Choose which apps and reviews to collect from the Ecwid App Market.\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"Browse all apps, filter by category, search by keyword, fetch exact apps, or collect reviews.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"browse\",\n        \"byCategory\",\n        \"search\",\n        \"byApp\",\n        \"reviews\"\n      ],\n      \"enumTitles\": [\n        \"Browse all apps\",\n        \"Filter by category\",\n        \"Search by keyword\",\n        \"Fetch exact apps\",\n        \"Collect reviews\"\n      ],\n      \"default\": \"browse\",\n      \"prefill\": \"browse\"\n    },\n    \"category\": {\n      \"title\": \"Category\",\n      \"type\": \"string\",\n      \"description\": \"Marketplace category or collection (mode=byCategory). Legacy names are accepted.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"featured\",\n        \"new\",\n        \"free\",\n        \"marketing\",\n        \"design\",\n        \"dropshipping\",\n        \"storemanagement\",\n        \"marketplaces\",\n        \"accounting\",\n        \"shipping\",\n        \"analytics\",\n        \"customersupport\",\n        \"tools\",\n        \"pos\",\n        \"cms\",\n        \"social\",\n        \"shipping-carriers\",\n        \"store-design\",\n        \"storedesign\",\n        \"customer-support\",\n        \"selling-on-marketplaces\",\n        \"store management\",\n        \"store-management\",\n        \"catalog-order-management\",\n        \"social-media\",\n        \"shipping carriers\",\n        \"store design\",\n        \"selling on marketplaces\",\n        \"customer support\",\n        \"customer support & rewards\",\n        \"analytics & reporting\",\n        \"point of sale (pos)\",\n        \"content management systems (cms)\",\n        \"all apps\",\n        \"catalog & order management\",\n        \"catalog and order management\",\n        \"social media\",\n        \"point of sale\",\n        \"content management systems\",\n        \"analytics and reporting\",\n        \"reporting\"\n      ],\n      \"enumTitles\": [\n        \"All apps\",\n        \"Featured\",\n        \"New\",\n        \"Free\",\n        \"Marketing\",\n        \"Store Design\",\n        \"Dropshipping\",\n        \"Catalog & Order Management\",\n        \"Selling on Marketplaces\",\n        \"Accounting\",\n        \"Shipping\",\n        \"Analytics & Reporting\",\n        \"Customer Support & Rewards\",\n        \"Tools\",\n        \"Point of Sale (POS)\",\n        \"Content Management Systems (CMS)\",\n        \"Social Media\",\n        \"Shipping carriers\",\n        \"Store Design (legacy alias)\",\n        \"Store Design (legacy alias)\",\n        \"Customer Support & Rewards (legacy alias)\",\n        \"Selling on Marketplaces (legacy alias)\",\n        \"Catalog & Order Management (legacy alias)\",\n        \"Catalog & Order Management (legacy alias)\",\n        \"Catalog & Order Management (legacy alias)\",\n        \"Social Media (legacy alias)\",\n        \"Shipping carriers (legacy alias)\",\n        \"Store Design (legacy alias)\",\n        \"Selling on Marketplaces (legacy alias)\",\n        \"Customer Support & Rewards (legacy alias)\",\n        \"Customer Support & Rewards (legacy alias)\",\n        \"Analytics & Reporting (legacy alias)\",\n        \"Point of Sale (POS) (legacy alias)\",\n        \"Content Management Systems (CMS) (legacy alias)\",\n        \"All apps (legacy alias)\",\n        \"Catalog & Order Management (legacy alias)\",\n        \"Catalog & Order Management (legacy alias)\",\n        \"Social Media (legacy alias)\",\n        \"Point of Sale (POS) (legacy alias)\",\n        \"Content Management Systems (CMS) (legacy alias)\",\n        \"Analytics & Reporting (legacy alias)\",\n        \"Analytics & Reporting (legacy alias)\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"searchQuery\": {\n      \"title\": \"Search Query\",\n      \"type\": \"string\",\n      \"description\": \"Keyword matched against app name, tagline, description, developer and categories (mode=search).\",\n      \"editor\": \"textfield\"\n    },\n    \"appIds\": {\n      \"title\": \"App IDs or URLs\",\n      \"type\": \"array\",\n      \"description\": \"App namespaces or Ecwid marketplace URLs (mode=byApp or mode=reviews).\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"prefill\": [\n        \"the-printful\"\n      ]\n    },\n    \"includeFreeOnly\": {\n      \"title\": \"Free Apps Only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only apps whose listing is marked completely free. Overrides pricingType.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"pricingType\": {\n      \"title\": \"Pricing Type\",\n      \"type\": \"string\",\n      \"description\": \"Filter by free, freemium or paid pricing.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"free\",\n        \"freemium\",\n        \"paid\"\n      ],\n      \"enumTitles\": [\n        \"Any pricing\",\n        \"Free\",\n        \"Freemium\",\n        \"Paid\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"minRating\": {\n      \"title\": \"Minimum Rating\",\n      \"type\": \"number\",\n      \"description\": \"Keep apps rated at or above this value (0-5). Apps without a rating are excluded when set.\",\n      \"minimum\": 0,\n      \"maximum\": 5\n    },\n    \"minReviewCount\": {\n      \"title\": \"Minimum Review Count\",\n      \"type\": \"integer\",\n      \"description\": \"Keep apps with at least this many reviews. Apps without a review count count as zero.\",\n      \"minimum\": 0,\n      \"maximum\": 100000\n    },\n    \"includeDetails\": {\n      \"title\": \"Include App Details\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch each app's detail page for developer website, support contact, feature bullets and screenshots.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeReviews\": {\n      \"title\": \"Attach Reviews\",\n      \"type\": \"boolean\",\n      \"description\": \"Attach up to maxReviewsPerApp reviews to each app record (app modes only).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxReviewsPerApp\": {\n      \"title\": \"Max Reviews per App\",\n      \"type\": \"integer\",\n      \"description\": \"Review cap per app, 1-100 (includeReviews and reviews modes).\",\n      \"editor\": \"number\",\n      \"default\": 10,\n      \"prefill\": 10,\n      \"minimum\": 1,\n      \"maximum\": 100\n    },\n    \"emitReviewRecords\": {\n      \"title\": \"Emit Review Records\",\n      \"type\": \"boolean\",\n      \"description\": \"Also emit one dataset record per review when includeReviews is on.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"sortBy\": {\n      \"title\": \"Sort By\",\n      \"type\": \"string\",\n      \"description\": \"Sort app records by source order, name, rating or review count.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"default\",\n        \"name\",\n        \"rating\",\n        \"reviewCount\"\n      ],\n      \"enumTitles\": [\n        \"Source order\",\n        \"Name (A-Z)\",\n        \"Highest rating\",\n        \"Most reviews\"\n      ],\n      \"default\": \"default\",\n      \"prefill\": \"default\"\n    },\n    \"maxItems\": {\n      \"title\": \"Max Items\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum app records in app modes, or review records in reviews mode (1-1000).\",\n      \"editor\": \"number\",\n      \"default\": 100,\n      \"prefill\": 3,\n      \"minimum\": 1,\n      \"maximum\": 1000\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Ecwid App Market Apps, Ratings & Reviews Scraper\n\nScrape **the Ecwid App Market** — the add-on marketplace for Ecwid (Lightspeed E-Series) stores. Collect every listed app with its developer, categories, pricing, free-trial flag, logo, rating and review count, then optionally open detail pages for feature bullets, screenshots and support contacts, or pull paginated customer reviews. No login, cookies, or proxy setup.\n\n## What this actor does\n\n- **Five modes:** browse the whole market, filter by category or collection, search by keyword, fetch exact apps, or collect reviews.\n- **Complete catalog:** reads the live listing in one request — currently 405 apps — and deduplicates by app namespace.\n- **Exact categories:** all 14 marketplace categories plus the Featured, New, and Free collections.\n- **Decision signals:** rating, review count, real logo URL, pricing type, and a free-trial flag on every app that has them.\n- **Optional depth:** developer website, support URL and email, feature bullets, screenshots, attached reviews, and standalone review records.\n- **Filters and sorting:** pricing type, free-only, minimum rating, minimum review count, and sorting by name, rating or review count.\n- **Empty fields are omitted:** a field is only included when the marketplace actually provides it.\n\n## Output per app\n\n- `appId` — unique app namespace (for example `the-printful`)\n- `name` — app title\n- `tagline` — short listing description\n- `description` — full listing description (HTML preserved)\n- `developer` — developer or company name, when published\n- `categories[]` — marketplace category names\n- `pricingType` — `free`, `freemium`, or `paid`\n- `pricing` — the marketplace's own pricing text, when it is more than just “Free”\n- `hasFreeTrial` — true when the pricing text advertises a trial\n- `rating` — average rating from 0 to 5; omitted when the app has no rating\n- `reviewCount` — number of published reviews; `0` is a real value\n- `url` — app page on the Ecwid marketplace\n- `iconUrl` — the app's real logo URL\n- `headerImageUrl` — the app's header/banner image URL\n- `developerWebsite` — developer site from the detail page (when `includeDetails` is on)\n- `supportUrl` — support link from the detail page (when `includeDetails` is on)\n- `supportEmail` — support email from the detail page (when `includeDetails` is on)\n- `features[]` — feature bullets from the detail page (when `includeDetails` is on)\n- `screenshots[]` — gallery image URLs, excluding the header image (when `includeDetails` is on)\n- `reviews[]` — attached reviews (when `includeReviews` is on), each with `reviewId`, `rating`, `text`, `author`, `date`\n- `recordType` — always `app`\n- `scrapedAt` — ISO 8601 UTC capture timestamp\n\n## Output per review\n\nReturned by `mode: \"reviews\"`, or as extra records when `emitReviewRecords` is on:\n\n- `reviewId` — marketplace review ID\n- `appId`, `appName` — the reviewed app\n- `rating` — 1 to 5 stars\n- `text` — review body as published\n- `author` — display name shown by the marketplace\n- `date` — review timestamp from the source\n- `url` — the app page\n- `recordType` — always `review`\n- `scrapedAt` — ISO 8601 UTC capture timestamp\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `browse` | `browse` / `byCategory` / `search` / `byApp` / `reviews` |\n| `category` | string | `all` | Category or collection (mode=byCategory); legacy names accepted |\n| `searchQuery` | string | – | Keyword matched against name, tagline, description, developer and categories (mode=search) |\n| `appIds` | array | – | Namespaces or full marketplace URLs (mode=byApp or mode=reviews) |\n| `includeFreeOnly` | boolean | `false` | Keep only completely free apps; overrides `pricingType` |\n| `pricingType` | string | `all` | `all` / `free` / `freemium` / `paid` |\n| `minRating` | number | – | Keep apps rated at or above this value (0–5); unrated apps are excluded when set |\n| `minReviewCount` | integer | – | Keep apps with at least this many reviews |\n| `includeDetails` | boolean | `false` | Fetch developer website, support contact, feature bullets and screenshots per app |\n| `includeReviews` | boolean | `false` | Attach reviews to app records (app modes only) |\n| `maxReviewsPerApp` | integer | `10` | Review cap per app (1–100) |\n| `emitReviewRecords` | boolean | `false` | Also emit one record per attached review |\n| `sortBy` | string | `default` | `default` / `name` / `rating` / `reviewCount` |\n| `maxItems` | integer | `100` | App-record cap in app modes; review-record cap in `reviews` mode (1–1000) |\n\n## Examples\n\n### Example: top-rated apps with a meaningful review history\n\n```json\n{\n  \"mode\": \"browse\",\n  \"minRating\": 4.5,\n  \"minReviewCount\": 10,\n  \"sortBy\": \"rating\",\n  \"maxItems\": 50\n}\n```\n\n### Example: one category with full detail enrichment\n\n```json\n{\n  \"mode\": \"byCategory\",\n  \"category\": \"shipping\",\n  \"includeDetails\": true,\n  \"maxItems\": 40\n}\n```\n\n### Example: keyword search for free inventory tools\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"inventory\",\n  \"includeFreeOnly\": true,\n  \"maxItems\": 30\n}\n```\n\n### Example: exact apps with reviews attached\n\n```json\n{\n  \"mode\": \"byApp\",\n  \"appIds\": [\n    \"the-printful\",\n    \"https://www.ecwid.com/apps/featured/kliken-stats\"\n  ],\n  \"includeDetails\": true,\n  \"includeReviews\": true,\n  \"maxReviewsPerApp\": 25\n}\n```\n\n### Example: review records for one app\n\n```json\n{\n  \"mode\": \"reviews\",\n  \"appIds\": [\"kliken-stats\"],\n  \"maxReviewsPerApp\": 50,\n  \"maxItems\": 50\n}\n```\n\n## Use cases\n\n- **Competitive research** — compare the apps available to Ecwid merchants across categories, pricing models and ratings.\n- **App directory sites** — mirror marketplace listings with logos, ratings, review counts and screenshots.\n- **Pricing analysis** — separate genuinely free apps from freemium and externally billed ones.\n- **Partner and developer scouting** — find active developers and the support channels they publish.\n- **Voice-of-customer research** — export paginated reviews for sentiment analysis and product-gap studies.\n- **Market monitoring** — re-run on a schedule to catch new listings and changing ratings.\n\n## FAQ\n\n**Do I need an Ecwid account?** No. The marketplace pages and review endpoints used here are public.\n\n**How many apps are on the market?** The live total changes as developers add and remove listings. A full `browse` run currently returns about 405 apps; the actor deduplicates by namespace and reports the real total.\n\n**What is the difference between free, freemium and paid?** `free` means the listing is marked completely free. `freemium` covers a free tier, a free trial, free tokens, or a “Free to $X” plan. Everything else is `paid`, including externally billed apps and in-app charges. The raw marketplace pricing text is kept in `pricing` when it adds detail.\n\n**Why does a “Free to $X” app say freemium?** Because it has a free entry point but paid tiers above it. The `hasFreeTrial` flag tells you whether the pricing text also advertises a trial.\n\n**Why do some apps have no rating?** Ratings come from the marketplace's public review widget. Apps with no reviews, or with no review product yet, omit `rating`. A real `reviewCount: 0` is kept; apps with no review product at all omit both fields.\n\n**How many reviews can I collect?** The source returns five reviews per page. `maxReviewsPerApp` accepts 1–100, and the actor stops at the last page or after two empty pages. The largest app currently has 225 reviews, so the 100-review cap is deliberate.\n\n**Which categories are available?** All 14 live marketplace categories plus Featured, New, and Free. A few categories (CMS, Social Media, Shipping carriers) have no public category page, so the actor matches them exactly against each app's category list.\n\n**Does the actor expose install counts, app versions, last-updated dates, languages, badges or structured pricing tiers?** No. The marketplace does not publish those datapoints; the actor ships the raw pricing text and the fields the source actually provides.\n\n**Are review authors anonymized?** Sometimes. The marketplace displays some reviewers as anonymized names; the actor publishes the author name exactly as shown and does not attempt to de-anonymize it.\n\n**Is this affiliated with Ecwid or Lightspeed?** No. This is an independent third-party actor reading publicly available marketplace pages.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "ecwid-app-market-pricing-and-category-scraper",
      "title": "Ecwid App Market Apps, Ratings & Reviews Scraper",
      "description": "Scrape every app in the Ecwid App Market — developer, categories, pricing, free trials, ratings, review counts, logos, screenshots and reviews. Browse all apps, filter by category, search by keyword, or fetch exact apps.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "../Dockerfile",
      "readme": "# Ecwid App Market Apps, Ratings & Reviews Scraper\n\nScrape **the Ecwid App Market** — the add-on marketplace for Ecwid (Lightspeed E-Series) stores. Collect every listed app with its developer, categories, pricing, free-trial flag, logo, rating and review count, then optionally open detail pages for feature bullets, screenshots and support contacts, or pull paginated customer reviews. No login, cookies, or proxy setup.\n\n## What this actor does\n\n- **Five modes:** browse the whole market, filter by category or collection, search by keyword, fetch exact apps, or collect reviews.\n- **Complete catalog:** reads the live listing in one request — currently 405 apps — and deduplicates by app namespace.\n- **Exact categories:** all 14 marketplace categories plus the Featured, New, and Free collections.\n- **Decision signals:** rating, review count, real logo URL, pricing type, and a free-trial flag on every app that has them.\n- **Optional depth:** developer website, support URL and email, feature bullets, screenshots, attached reviews, and standalone review records.\n- **Filters and sorting:** pricing type, free-only, minimum rating, minimum review count, and sorting by name, rating or review count.\n- **Empty fields are omitted:** a field is only included when the marketplace actually provides it.\n\n## Output per app\n\n- `appId` — unique app namespace (for example `the-printful`)\n- `name` — app title\n- `tagline` — short listing description\n- `description` — full listing description (HTML preserved)\n- `developer` — developer or company name, when published\n- `categories[]` — marketplace category names\n- `pricingType` — `free`, `freemium`, or `paid`\n- `pricing` — the marketplace's own pricing text, when it is more than just “Free”\n- `hasFreeTrial` — true when the pricing text advertises a trial\n- `rating` — average rating from 0 to 5; omitted when the app has no rating\n- `reviewCount` — number of published reviews; `0` is a real value\n- `url` — app page on the Ecwid marketplace\n- `iconUrl` — the app's real logo URL\n- `headerImageUrl` — the app's header/banner image URL\n- `developerWebsite` — developer site from the detail page (when `includeDetails` is on)\n- `supportUrl` — support link from the detail page (when `includeDetails` is on)\n- `supportEmail` — support email from the detail page (when `includeDetails` is on)\n- `features[]` — feature bullets from the detail page (when `includeDetails` is on)\n- `screenshots[]` — gallery image URLs, excluding the header image (when `includeDetails` is on)\n- `reviews[]` — attached reviews (when `includeReviews` is on), each with `reviewId`, `rating`, `text`, `author`, `date`\n- `recordType` — always `app`\n- `scrapedAt` — ISO 8601 UTC capture timestamp\n\n## Output per review\n\nReturned by `mode: \"reviews\"`, or as extra records when `emitReviewRecords` is on:\n\n- `reviewId` — marketplace review ID\n- `appId`, `appName` — the reviewed app\n- `rating` — 1 to 5 stars\n- `text` — review body as published\n- `author` — display name shown by the marketplace\n- `date` — review timestamp from the source\n- `url` — the app page\n- `recordType` — always `review`\n- `scrapedAt` — ISO 8601 UTC capture timestamp\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `browse` | `browse` / `byCategory` / `search` / `byApp` / `reviews` |\n| `category` | string | `all` | Category or collection (mode=byCategory); legacy names accepted |\n| `searchQuery` | string | – | Keyword matched against name, tagline, description, developer and categories (mode=search) |\n| `appIds` | array | – | Namespaces or full marketplace URLs (mode=byApp or mode=reviews) |\n| `includeFreeOnly` | boolean | `false` | Keep only completely free apps; overrides `pricingType` |\n| `pricingType` | string | `all` | `all` / `free` / `freemium` / `paid` |\n| `minRating` | number | – | Keep apps rated at or above this value (0–5); unrated apps are excluded when set |\n| `minReviewCount` | integer | – | Keep apps with at least this many reviews |\n| `includeDetails` | boolean | `false` | Fetch developer website, support contact, feature bullets and screenshots per app |\n| `includeReviews` | boolean | `false` | Attach reviews to app records (app modes only) |\n| `maxReviewsPerApp` | integer | `10` | Review cap per app (1–100) |\n| `emitReviewRecords` | boolean | `false` | Also emit one record per attached review |\n| `sortBy` | string | `default` | `default` / `name` / `rating` / `reviewCount` |\n| `maxItems` | integer | `100` | App-record cap in app modes; review-record cap in `reviews` mode (1–1000) |\n\n## Examples\n\n### Example: top-rated apps with a meaningful review history\n\n```json\n{\n  \"mode\": \"browse\",\n  \"minRating\": 4.5,\n  \"minReviewCount\": 10,\n  \"sortBy\": \"rating\",\n  \"maxItems\": 50\n}\n```\n\n### Example: one category with full detail enrichment\n\n```json\n{\n  \"mode\": \"byCategory\",\n  \"category\": \"shipping\",\n  \"includeDetails\": true,\n  \"maxItems\": 40\n}\n```\n\n### Example: keyword search for free inventory tools\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"inventory\",\n  \"includeFreeOnly\": true,\n  \"maxItems\": 30\n}\n```\n\n### Example: exact apps with reviews attached\n\n```json\n{\n  \"mode\": \"byApp\",\n  \"appIds\": [\n    \"the-printful\",\n    \"https://www.ecwid.com/apps/featured/kliken-stats\"\n  ],\n  \"includeDetails\": true,\n  \"includeReviews\": true,\n  \"maxReviewsPerApp\": 25\n}\n```\n\n### Example: review records for one app\n\n```json\n{\n  \"mode\": \"reviews\",\n  \"appIds\": [\"kliken-stats\"],\n  \"maxReviewsPerApp\": 50,\n  \"maxItems\": 50\n}\n```\n\n## Use cases\n\n- **Competitive research** — compare the apps available to Ecwid merchants across categories, pricing models and ratings.\n- **App directory sites** — mirror marketplace listings with logos, ratings, review counts and screenshots.\n- **Pricing analysis** — separate genuinely free apps from freemium and externally billed ones.\n- **Partner and developer scouting** — find active developers and the support channels they publish.\n- **Voice-of-customer research** — export paginated reviews for sentiment analysis and product-gap studies.\n- **Market monitoring** — re-run on a schedule to catch new listings and changing ratings.\n\n## FAQ\n\n**Do I need an Ecwid account?** No. The marketplace pages and review endpoints used here are public.\n\n**How many apps are on the market?** The live total changes as developers add and remove listings. A full `browse` run currently returns about 405 apps; the actor deduplicates by namespace and reports the real total.\n\n**What is the difference between free, freemium and paid?** `free` means the listing is marked completely free. `freemium` covers a free tier, a free trial, free tokens, or a “Free to $X” plan. Everything else is `paid`, including externally billed apps and in-app charges. The raw marketplace pricing text is kept in `pricing` when it adds detail.\n\n**Why does a “Free to $X” app say freemium?** Because it has a free entry point but paid tiers above it. The `hasFreeTrial` flag tells you whether the pricing text also advertises a trial.\n\n**Why do some apps have no rating?** Ratings come from the marketplace's public review widget. Apps with no reviews, or with no review product yet, omit `rating`. A real `reviewCount: 0` is kept; apps with no review product at all omit both fields.\n\n**How many reviews can I collect?** The source returns five reviews per page. `maxReviewsPerApp` accepts 1–100, and the actor stops at the last page or after two empty pages. The largest app currently has 225 reviews, so the 100-review cap is deliberate.\n\n**Which categories are available?** All 14 live marketplace categories plus Featured, New, and Free. A few categories (CMS, Social Media, Shipping carriers) have no public category page, so the actor matches them exactly against each app's category list.\n\n**Does the actor expose install counts, app versions, last-updated dates, languages, badges or structured pricing tiers?** No. The marketplace does not publish those datapoints; the actor ships the raw pricing text and the fields the source actually provides.\n\n**Are review authors anonymized?** Sometimes. The marketplace displays some reviewers as anonymized names; the actor publishes the author name exactly as shown and does not attempt to de-anonymize it.\n\n**Is this affiliated with Ecwid or Lightspeed?** No. This is an independent third-party actor reading publicly available marketplace pages.\n",
      "input": {
        "schemaVersion": 1,
        "title": "Ecwid App Market Scraper Input",
        "description": "Choose which apps and reviews to collect from the Ecwid App Market.",
        "type": "object",
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "Browse all apps, filter by category, search by keyword, fetch exact apps, or collect reviews.",
            "editor": "select",
            "enum": [
              "browse",
              "byCategory",
              "search",
              "byApp",
              "reviews"
            ],
            "enumTitles": [
              "Browse all apps",
              "Filter by category",
              "Search by keyword",
              "Fetch exact apps",
              "Collect reviews"
            ],
            "default": "browse",
            "prefill": "browse"
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Marketplace category or collection (mode=byCategory). Legacy names are accepted.",
            "editor": "select",
            "enum": [
              "all",
              "featured",
              "new",
              "free",
              "marketing",
              "design",
              "dropshipping",
              "storemanagement",
              "marketplaces",
              "accounting",
              "shipping",
              "analytics",
              "customersupport",
              "tools",
              "pos",
              "cms",
              "social",
              "shipping-carriers",
              "store-design",
              "storedesign",
              "customer-support",
              "selling-on-marketplaces",
              "store management",
              "store-management",
              "catalog-order-management",
              "social-media",
              "shipping carriers",
              "store design",
              "selling on marketplaces",
              "customer support",
              "customer support & rewards",
              "analytics & reporting",
              "point of sale (pos)",
              "content management systems (cms)",
              "all apps",
              "catalog & order management",
              "catalog and order management",
              "social media",
              "point of sale",
              "content management systems",
              "analytics and reporting",
              "reporting"
            ],
            "enumTitles": [
              "All apps",
              "Featured",
              "New",
              "Free",
              "Marketing",
              "Store Design",
              "Dropshipping",
              "Catalog & Order Management",
              "Selling on Marketplaces",
              "Accounting",
              "Shipping",
              "Analytics & Reporting",
              "Customer Support & Rewards",
              "Tools",
              "Point of Sale (POS)",
              "Content Management Systems (CMS)",
              "Social Media",
              "Shipping carriers",
              "Store Design (legacy alias)",
              "Store Design (legacy alias)",
              "Customer Support & Rewards (legacy alias)",
              "Selling on Marketplaces (legacy alias)",
              "Catalog & Order Management (legacy alias)",
              "Catalog & Order Management (legacy alias)",
              "Catalog & Order Management (legacy alias)",
              "Social Media (legacy alias)",
              "Shipping carriers (legacy alias)",
              "Store Design (legacy alias)",
              "Selling on Marketplaces (legacy alias)",
              "Customer Support & Rewards (legacy alias)",
              "Customer Support & Rewards (legacy alias)",
              "Analytics & Reporting (legacy alias)",
              "Point of Sale (POS) (legacy alias)",
              "Content Management Systems (CMS) (legacy alias)",
              "All apps (legacy alias)",
              "Catalog & Order Management (legacy alias)",
              "Catalog & Order Management (legacy alias)",
              "Social Media (legacy alias)",
              "Point of Sale (POS) (legacy alias)",
              "Content Management Systems (CMS) (legacy alias)",
              "Analytics & Reporting (legacy alias)",
              "Analytics & Reporting (legacy alias)"
            ],
            "default": "all",
            "prefill": "all"
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Keyword matched against app name, tagline, description, developer and categories (mode=search).",
            "editor": "textfield"
          },
          "appIds": {
            "title": "App IDs or URLs",
            "type": "array",
            "description": "App namespaces or Ecwid marketplace URLs (mode=byApp or mode=reviews).",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "prefill": [
              "the-printful"
            ]
          },
          "includeFreeOnly": {
            "title": "Free Apps Only",
            "type": "boolean",
            "description": "Keep only apps whose listing is marked completely free. Overrides pricingType.",
            "default": false,
            "prefill": false
          },
          "pricingType": {
            "title": "Pricing Type",
            "type": "string",
            "description": "Filter by free, freemium or paid pricing.",
            "editor": "select",
            "enum": [
              "all",
              "free",
              "freemium",
              "paid"
            ],
            "enumTitles": [
              "Any pricing",
              "Free",
              "Freemium",
              "Paid"
            ],
            "default": "all",
            "prefill": "all"
          },
          "minRating": {
            "title": "Minimum Rating",
            "type": "number",
            "description": "Keep apps rated at or above this value (0-5). Apps without a rating are excluded when set.",
            "minimum": 0,
            "maximum": 5
          },
          "minReviewCount": {
            "title": "Minimum Review Count",
            "type": "integer",
            "description": "Keep apps with at least this many reviews. Apps without a review count count as zero.",
            "minimum": 0,
            "maximum": 100000
          },
          "includeDetails": {
            "title": "Include App Details",
            "type": "boolean",
            "description": "Fetch each app's detail page for developer website, support contact, feature bullets and screenshots.",
            "default": false,
            "prefill": false
          },
          "includeReviews": {
            "title": "Attach Reviews",
            "type": "boolean",
            "description": "Attach up to maxReviewsPerApp reviews to each app record (app modes only).",
            "default": false,
            "prefill": false
          },
          "maxReviewsPerApp": {
            "title": "Max Reviews per App",
            "type": "integer",
            "description": "Review cap per app, 1-100 (includeReviews and reviews modes).",
            "editor": "number",
            "default": 10,
            "prefill": 10,
            "minimum": 1,
            "maximum": 100
          },
          "emitReviewRecords": {
            "title": "Emit Review Records",
            "type": "boolean",
            "description": "Also emit one dataset record per review when includeReviews is on.",
            "default": false,
            "prefill": false
          },
          "sortBy": {
            "title": "Sort By",
            "type": "string",
            "description": "Sort app records by source order, name, rating or review count.",
            "editor": "select",
            "enum": [
              "default",
              "name",
              "rating",
              "reviewCount"
            ],
            "enumTitles": [
              "Source order",
              "Name (A-Z)",
              "Highest rating",
              "Most reviews"
            ],
            "default": "default",
            "prefill": "default"
          },
          "maxItems": {
            "title": "Max Items",
            "type": "integer",
            "description": "Maximum app records in app modes, or review records in reviews mode (1-1000).",
            "editor": "number",
            "default": 100,
            "prefill": 3,
            "minimum": 1,
            "maximum": 1000
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Ecwid App Market Apps, Ratings & Reviews Scraper Output",
        "description": "Apps and reviews from the Ecwid App Market — developer, categories, pricing, free trials, ratings, review counts, logos, screenshots and reviews.",
        "properties": {
          "apps": {
            "type": "string",
            "title": "Ecwid apps and reviews",
            "description": "Dataset containing scraped Ecwid App Market apps and, when requested, their reviews.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "defaultMemoryMbytes": 1024,
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Apps and reviews",
              "transformation": {
                "fields": [
                  "appId",
                  "name",
                  "developer",
                  "categories",
                  "pricingType",
                  "rating",
                  "reviewCount",
                  "url"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "a8e7f0babb626bd0b28a3c2b8c1a57ae5fe9f2b3c32ffb3797dbeacab6c9315d",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.004047777777777778
    }
  }
}