{
  "data": {
    "id": "MSosULKUeT3RSaekh",
    "actId": "fteDom5AGrhvjdchX",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-11-13T15:59:24.305Z",
    "finishedAt": "2026-11-13T15:59:50.043Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 25573,
      "runTimeSecs": 25.573,
      "computeUnits": 0.028414444444444444,
      "imageSizeBytes": 3188258816
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Gartner Peer Insights Scraper Input\",\n  \"description\": \"Scrape product profiles, public reviews, market product listings, and the Gartner market directory.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"Choose what to collect: product profiles with reviews, a market's product listing, or the full market and category directory.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"products\",\n        \"market\",\n        \"categories\"\n      ],\n      \"enumTitles\": [\n        \"Product profiles and reviews\",\n        \"Products in a market\",\n        \"Market and category directory\"\n      ],\n      \"default\": \"categories\",\n      \"prefill\": \"categories\"\n    },\n    \"productUrls\": {\n      \"title\": \"Product URLs or slugs\",\n      \"type\": \"array\",\n      \"description\": \"Gartner Peer Insights product page URLs or product slugs, e.g. https://www.gartner.com/reviews/product/salesforce-sales-performance-management or salesforce-sales-performance-management. Used in products mode.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"marketSeoName\": {\n      \"title\": \"Market\",\n      \"type\": \"string\",\n      \"description\": \"Gartner market slug or full market URL, e.g. sales-force-automation-platforms or https://www.gartner.com/reviews/market/sales-force-automation-platforms. Used in market mode.\",\n      \"editor\": \"textfield\",\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"includeProductDetails\": {\n      \"title\": \"Fetch full product details in market mode\",\n      \"type\": \"boolean\",\n      \"description\": \"When on, market mode fetches each product profile and its reviews instead of writing the fast market listing records.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxReviewsPerProduct\": {\n      \"title\": \"Max reviews per product\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum public reviews to collect for each product. Set 0 to collect only the product profile. Reviews are paged until this limit or the public review list ends.\",\n      \"minimum\": 0,\n      \"maximum\": 1000,\n      \"default\": 50,\n      \"prefill\": 2\n    },\n    \"useFilters\": {\n      \"title\": \"Add star-rating passes for more reviews\",\n      \"type\": \"boolean\",\n      \"description\": \"After paging, query each star rating once to surface additional unique public reviews. Has no effect when a specific star rating is selected below.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"reviewSort\": {\n      \"title\": \"Review sort order\",\n      \"type\": \"string\",\n      \"description\": \"How Gartner orders public reviews before paging.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"most-helpful\",\n        \"most-recent\",\n        \"least-recent\"\n      ],\n      \"enumTitles\": [\n        \"Most helpful\",\n        \"Most recent\",\n        \"Least recent\"\n      ],\n      \"default\": \"most-helpful\",\n      \"prefill\": \"most-helpful\"\n    },\n    \"reviewRating\": {\n      \"title\": \"Filter reviews by star rating\",\n      \"type\": \"string\",\n      \"description\": \"Collect only reviews with this star rating, or all ratings.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"5\",\n        \"4\",\n        \"3\",\n        \"2\",\n        \"1\"\n      ],\n      \"enumTitles\": [\n        \"All ratings\",\n        \"5 stars\",\n        \"4 stars\",\n        \"3 stars\",\n        \"2 stars\",\n        \"1 star\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"reviewerType\": {\n      \"title\": \"Filter reviews by reviewer type\",\n      \"type\": \"string\",\n      \"description\": \"Collect reviews from all reviewers, end users, or vendor partners.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"end-user\",\n        \"partner\"\n      ],\n      \"enumTitles\": [\n        \"All reviewers\",\n        \"End users\",\n        \"Partner reviewers\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"lastTwelveMonths\": {\n      \"title\": \"Only reviews from the last 12 months\",\n      \"type\": \"boolean\",\n      \"description\": \"Limit reviews to those published in the last twelve months.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"marketSort\": {\n      \"title\": \"Market product sort order\",\n      \"type\": \"string\",\n      \"description\": \"How products are ordered inside a market listing.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"ratingsCount_desc\",\n        \"ratingsCount_asc\",\n        \"averageRating_desc\",\n        \"averageRating_asc\",\n        \"name_asc\",\n        \"name_desc\"\n      ],\n      \"enumTitles\": [\n        \"Most ratings first\",\n        \"Fewest ratings first\",\n        \"Highest rated first\",\n        \"Lowest rated first\",\n        \"Name A-Z\",\n        \"Name Z-A\"\n      ],\n      \"default\": \"ratingsCount_desc\",\n      \"prefill\": \"ratingsCount_desc\"\n    },\n    \"marketCompanySize\": {\n      \"title\": \"Filter market products by company size\",\n      \"type\": \"string\",\n      \"description\": \"Use Gartner's company-size facet when listing products in a market.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"<50M USD\",\n        \"50M-1B USD\",\n        \"1B-10B USD\",\n        \"10B+ USD\",\n        \"Gov't/PS/Ed\"\n      ],\n      \"enumTitles\": [\n        \"All company sizes\",\n        \"Under 50M USD\",\n        \"50M-1B USD\",\n        \"1B-10B USD\",\n        \"10B+ USD\",\n        \"Government / public sector / education\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"maxItems\": {\n      \"title\": \"Max records\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of market, product, review, or category records to save.\",\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"default\": 100,\n      \"prefill\": 3\n    },\n    \"proxyConfiguration\": {\n      \"title\": \"Proxy configuration\",\n      \"type\": \"object\",\n      \"description\": \"Optional. The actor works without a proxy and switches automatically only if Gartner blocks the request.\",\n      \"editor\": \"proxy\"\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Gartner Peer Insights Product & Market Data Extractor\n\nGartner Peer Insights is where enterprise buyers compare B2B software through verified customer reviews. This actor collects four connected layers of that data without a login: product profiles, the public review stream with reviewer demographics, complete product listings for a Gartner market, and the full market/category directory.\n\n## Modes\n\n| Mode | What it returns | Best for |\n|---|---|---|\n| `products` | One `product` record plus `review` records for each product URL or slug | Vendor and product research |\n| `market` | One `market` record plus every product in that market, or full product details when `includeProductDetails` is on | Competitive landscape and market mapping |\n| `categories` | One `category` record per Gartner market, with its parent category | Building a market taxonomy |\n\nProduct mode accepts full URLs or bare slugs, and market mode accepts a slug or a full market URL.\n\n## Input\n\n| Field | Type | Default | What it does |\n|---|---|---|---|\n| `mode` | select | `categories` | `products`, `market`, or `categories` |\n| `productUrls` | string list | – | Product page URLs or slugs for `products` |\n| `marketSeoName` | string | – | Market slug or URL for `market` |\n| `includeProductDetails` | boolean | `false` | In `market` mode, fetch full profiles and reviews instead of fast listing rows |\n| `maxReviewsPerProduct` | integer | `50` | Public reviews per product; `0` = profile only |\n| `useFilters` | boolean | `true` | Adds one pass per star rating after paging to surface extra unique reviews |\n| `reviewSort` | select | `most-helpful` | `most-helpful`, `most-recent`, `least-recent` |\n| `reviewRating` | select | `all` | `all`, `5`, `4`, `3`, `2`, `1` |\n| `reviewerType` | select | `all` | `all`, `end-user`, `partner` |\n| `lastTwelveMonths` | boolean | `false` | Limit reviews to the last 12 months |\n| `marketSort` | select | `ratingsCount_desc` | Ratings count, average rating, or name; ascending or descending |\n| `marketCompanySize` | select | `all` | Gartner company-size facet for market listings |\n| `maxItems` | integer | `100` | Total record cap across all output types |\n| `proxyConfiguration` | object | – | Optional; the actor tries direct access first |\n\n### Examples\n\n```json\n{\n  \"mode\": \"products\",\n  \"productUrls\": [\n    \"https://www.gartner.com/reviews/product/salesforce-sales-performance-management\",\n    \"microsoft-dynamics-365-sales\"\n  ],\n  \"maxReviewsPerProduct\": 25,\n  \"reviewSort\": \"most-recent\"\n}\n```\n\n```json\n{\n  \"mode\": \"market\",\n  \"marketSeoName\": \"sales-force-automation-platforms\",\n  \"marketSort\": \"averageRating_desc\",\n  \"marketCompanySize\": \"50M-1B USD\",\n  \"maxItems\": 100\n}\n```\n\n```json\n{\n  \"mode\": \"market\",\n  \"marketSeoName\": \"sales-force-automation-platforms\",\n  \"includeProductDetails\": true,\n  \"maxReviewsPerProduct\": 10,\n  \"maxItems\": 50\n}\n```\n\n```json\n{\n  \"mode\": \"categories\",\n  \"maxItems\": 500\n}\n```\n\n## Output: product (`type: \"product\"`)\n\n- `url`, `productId`, `productName`, `productSeoName`, `productLogoUrl`, `productLegacy`\n- `vendorId`, `vendorName`, `vendorSeoName`, `vendorDescription`, `vendorLogoUrl`, `vendorClaimedStatus`\n- `markets[]` — each with `id`, `name`, `seoName`, overview text, last-updated date, and awards\n- `productDescription`, `pricingDescription`, `productOverviewUpdatedAt`\n- `totalReviews`, `averageRating`, `ratingsBreakdown` (counts for 1–5 stars), `dimensionRatings[]`\n- `alternatives[]` — competing products with `name`, `seoName`, `averageRating`, `totalReviews`, `logoUrl`\n- `scrapedAt`\n\nMarket listing rows use the same `product` type but are leaner: `url`, `productId`, `productName`, `productSeoName`, `vendorName`, `vendors[]`, `marketSeoName`, `averageRating`, `totalReviews`, `productDescription`, `hasProfile`, `legacy`, `scrapedAt`.\n\n## Output: review (`type: \"review\"`)\n\n- `reviewId`, `reviewUrl`, `productSeoName`, `productNames`\n- `headline`, `summary`, `likes`, `dislikes` (likes/dislikes only when Gartner features the review)\n- `rating`, `reviewDate`, `reviewDateIso`\n- `jobTitle`, `industry`, `companySize`, `reviewerType`\n- `incentivized`, `reviewOrigin`, `incentive` — Gartner's review-origin and gift disclosures\n- `source` — which section the review came from, `scrapedAt`\n\n## Output: market (`type: \"market\"`)\n\n`marketId`, `marketName`, `marketSeoName`, `marketUrl`, `marketTitle`, `marketSubtitle`, `marketDescription`, `marketReviewCount`, `productCount`, `scrapedAt`.\n\n## Output: category (`type: \"category\"`)\n\n`marketId`, `marketName`, `marketSeoName`, `marketUrl`, `isPopularMarket`, `categoryId`, `categoryName`, `categorySeoName`, `categoryDescription`, `categoryShortDescription`, `scrapedAt`.\n\n## Pagination and depth\n\n- Market listings are fetched in pages of 100 until Gartner's reported product count is reached.\n- Reviews are paged one result page at a time. For logged-out visitors each result page exposes one full public review, so the actor pages until `maxReviewsPerProduct` or the public list ends. `useFilters` adds one extra query per star rating to surface additional unique reviews.\n- Gartner's `totalReviews` counter includes reviews that are not publicly readable. The dataset therefore contains fewer reviews than the counter by design; this is a source limit, not an actor failure.\n- Review text is never fabricated. Gartner's placeholder summaries are omitted.\n\n## FAQ\n\n**Does this need a Gartner account or cookies?**\nNo. It reads the public product, review, market, and category views anonymously.\n\n**Do I need a proxy?**\nNo. Direct requests are attempted first. If Gartner blocks the network path, the actor escalates automatically; you do not need to configure a proxy.\n\n**Can I get every review ever written?**\nNo. Gartner exposes only part of each product's review stream to logged-out visitors. The actor collects everything that stream exposes through paging and rating passes up to your cap.\n\n**Why is `totalReviews` larger than the number of review rows?**\n`totalReviews` is Gartner's full rating count. Public review pages expose one review at a time per result page, so a run with `maxReviewsPerProduct: 50` collects at most 50 public reviews unless additional star-rating passes find new ones.\n\n**How do I find a market slug?**\nOpen the market page and copy the last URL segment: `https://www.gartner.com/reviews/market/sales-force-automation-platforms` → `sales-force-automation-platforms`. Full URLs are also accepted.\n\n**Are the review and product URLs public?**\nYes. Review URLs use Gartner's `/reviews/review/view/<id>` path, and product and market URLs use Gartner's public Peer Insights paths.\n\n**Is this affiliated with Gartner?**\nNo. This is an independent third-party actor and is not endorsed by Gartner, Inc.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "gartner-peer-insights-product-and-market-data",
      "title": "Gartner Peer Insights Product & Market Data Extractor",
      "description": "Gartner Peer Insights data: product profiles, public reviews with reviewer industry/company size/job title, full market product listings, and the market directory. Filter by rating, reviewer type, recency, and company size. No login required.",
      "version": "1.1",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Gartner Peer Insights Product & Market Data Extractor\n\nGartner Peer Insights is where enterprise buyers compare B2B software through verified customer reviews. This actor collects four connected layers of that data without a login: product profiles, the public review stream with reviewer demographics, complete product listings for a Gartner market, and the full market/category directory.\n\n## Modes\n\n| Mode | What it returns | Best for |\n|---|---|---|\n| `products` | One `product` record plus `review` records for each product URL or slug | Vendor and product research |\n| `market` | One `market` record plus every product in that market, or full product details when `includeProductDetails` is on | Competitive landscape and market mapping |\n| `categories` | One `category` record per Gartner market, with its parent category | Building a market taxonomy |\n\nProduct mode accepts full URLs or bare slugs, and market mode accepts a slug or a full market URL.\n\n## Input\n\n| Field | Type | Default | What it does |\n|---|---|---|---|\n| `mode` | select | `categories` | `products`, `market`, or `categories` |\n| `productUrls` | string list | – | Product page URLs or slugs for `products` |\n| `marketSeoName` | string | – | Market slug or URL for `market` |\n| `includeProductDetails` | boolean | `false` | In `market` mode, fetch full profiles and reviews instead of fast listing rows |\n| `maxReviewsPerProduct` | integer | `50` | Public reviews per product; `0` = profile only |\n| `useFilters` | boolean | `true` | Adds one pass per star rating after paging to surface extra unique reviews |\n| `reviewSort` | select | `most-helpful` | `most-helpful`, `most-recent`, `least-recent` |\n| `reviewRating` | select | `all` | `all`, `5`, `4`, `3`, `2`, `1` |\n| `reviewerType` | select | `all` | `all`, `end-user`, `partner` |\n| `lastTwelveMonths` | boolean | `false` | Limit reviews to the last 12 months |\n| `marketSort` | select | `ratingsCount_desc` | Ratings count, average rating, or name; ascending or descending |\n| `marketCompanySize` | select | `all` | Gartner company-size facet for market listings |\n| `maxItems` | integer | `100` | Total record cap across all output types |\n| `proxyConfiguration` | object | – | Optional; the actor tries direct access first |\n\n### Examples\n\n```json\n{\n  \"mode\": \"products\",\n  \"productUrls\": [\n    \"https://www.gartner.com/reviews/product/salesforce-sales-performance-management\",\n    \"microsoft-dynamics-365-sales\"\n  ],\n  \"maxReviewsPerProduct\": 25,\n  \"reviewSort\": \"most-recent\"\n}\n```\n\n```json\n{\n  \"mode\": \"market\",\n  \"marketSeoName\": \"sales-force-automation-platforms\",\n  \"marketSort\": \"averageRating_desc\",\n  \"marketCompanySize\": \"50M-1B USD\",\n  \"maxItems\": 100\n}\n```\n\n```json\n{\n  \"mode\": \"market\",\n  \"marketSeoName\": \"sales-force-automation-platforms\",\n  \"includeProductDetails\": true,\n  \"maxReviewsPerProduct\": 10,\n  \"maxItems\": 50\n}\n```\n\n```json\n{\n  \"mode\": \"categories\",\n  \"maxItems\": 500\n}\n```\n\n## Output: product (`type: \"product\"`)\n\n- `url`, `productId`, `productName`, `productSeoName`, `productLogoUrl`, `productLegacy`\n- `vendorId`, `vendorName`, `vendorSeoName`, `vendorDescription`, `vendorLogoUrl`, `vendorClaimedStatus`\n- `markets[]` — each with `id`, `name`, `seoName`, overview text, last-updated date, and awards\n- `productDescription`, `pricingDescription`, `productOverviewUpdatedAt`\n- `totalReviews`, `averageRating`, `ratingsBreakdown` (counts for 1–5 stars), `dimensionRatings[]`\n- `alternatives[]` — competing products with `name`, `seoName`, `averageRating`, `totalReviews`, `logoUrl`\n- `scrapedAt`\n\nMarket listing rows use the same `product` type but are leaner: `url`, `productId`, `productName`, `productSeoName`, `vendorName`, `vendors[]`, `marketSeoName`, `averageRating`, `totalReviews`, `productDescription`, `hasProfile`, `legacy`, `scrapedAt`.\n\n## Output: review (`type: \"review\"`)\n\n- `reviewId`, `reviewUrl`, `productSeoName`, `productNames`\n- `headline`, `summary`, `likes`, `dislikes` (likes/dislikes only when Gartner features the review)\n- `rating`, `reviewDate`, `reviewDateIso`\n- `jobTitle`, `industry`, `companySize`, `reviewerType`\n- `incentivized`, `reviewOrigin`, `incentive` — Gartner's review-origin and gift disclosures\n- `source` — which section the review came from, `scrapedAt`\n\n## Output: market (`type: \"market\"`)\n\n`marketId`, `marketName`, `marketSeoName`, `marketUrl`, `marketTitle`, `marketSubtitle`, `marketDescription`, `marketReviewCount`, `productCount`, `scrapedAt`.\n\n## Output: category (`type: \"category\"`)\n\n`marketId`, `marketName`, `marketSeoName`, `marketUrl`, `isPopularMarket`, `categoryId`, `categoryName`, `categorySeoName`, `categoryDescription`, `categoryShortDescription`, `scrapedAt`.\n\n## Pagination and depth\n\n- Market listings are fetched in pages of 100 until Gartner's reported product count is reached.\n- Reviews are paged one result page at a time. For logged-out visitors each result page exposes one full public review, so the actor pages until `maxReviewsPerProduct` or the public list ends. `useFilters` adds one extra query per star rating to surface additional unique reviews.\n- Gartner's `totalReviews` counter includes reviews that are not publicly readable. The dataset therefore contains fewer reviews than the counter by design; this is a source limit, not an actor failure.\n- Review text is never fabricated. Gartner's placeholder summaries are omitted.\n\n## FAQ\n\n**Does this need a Gartner account or cookies?**\nNo. It reads the public product, review, market, and category views anonymously.\n\n**Do I need a proxy?**\nNo. Direct requests are attempted first. If Gartner blocks the network path, the actor escalates automatically; you do not need to configure a proxy.\n\n**Can I get every review ever written?**\nNo. Gartner exposes only part of each product's review stream to logged-out visitors. The actor collects everything that stream exposes through paging and rating passes up to your cap.\n\n**Why is `totalReviews` larger than the number of review rows?**\n`totalReviews` is Gartner's full rating count. Public review pages expose one review at a time per result page, so a run with `maxReviewsPerProduct: 50` collects at most 50 public reviews unless additional star-rating passes find new ones.\n\n**How do I find a market slug?**\nOpen the market page and copy the last URL segment: `https://www.gartner.com/reviews/market/sales-force-automation-platforms` → `sales-force-automation-platforms`. Full URLs are also accepted.\n\n**Are the review and product URLs public?**\nYes. Review URLs use Gartner's `/reviews/review/view/<id>` path, and product and market URLs use Gartner's public Peer Insights paths.\n\n**Is this affiliated with Gartner?**\nNo. This is an independent third-party actor and is not endorsed by Gartner, Inc.\n",
      "input": {
        "title": "Gartner Peer Insights Scraper Input",
        "description": "Scrape product profiles, public reviews, market product listings, and the Gartner market directory.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "Choose what to collect: product profiles with reviews, a market's product listing, or the full market and category directory.",
            "editor": "select",
            "enum": [
              "products",
              "market",
              "categories"
            ],
            "enumTitles": [
              "Product profiles and reviews",
              "Products in a market",
              "Market and category directory"
            ],
            "default": "categories",
            "prefill": "categories"
          },
          "productUrls": {
            "title": "Product URLs or slugs",
            "type": "array",
            "description": "Gartner Peer Insights product page URLs or product slugs, e.g. https://www.gartner.com/reviews/product/salesforce-sales-performance-management or salesforce-sales-performance-management. Used in products mode.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "marketSeoName": {
            "title": "Market",
            "type": "string",
            "description": "Gartner market slug or full market URL, e.g. sales-force-automation-platforms or https://www.gartner.com/reviews/market/sales-force-automation-platforms. Used in market mode.",
            "editor": "textfield",
            "default": "",
            "prefill": ""
          },
          "includeProductDetails": {
            "title": "Fetch full product details in market mode",
            "type": "boolean",
            "description": "When on, market mode fetches each product profile and its reviews instead of writing the fast market listing records.",
            "default": false,
            "prefill": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "type": "integer",
            "description": "Maximum public reviews to collect for each product. Set 0 to collect only the product profile. Reviews are paged until this limit or the public review list ends.",
            "minimum": 0,
            "maximum": 1000,
            "default": 50,
            "prefill": 2
          },
          "useFilters": {
            "title": "Add star-rating passes for more reviews",
            "type": "boolean",
            "description": "After paging, query each star rating once to surface additional unique public reviews. Has no effect when a specific star rating is selected below.",
            "default": true,
            "prefill": true
          },
          "reviewSort": {
            "title": "Review sort order",
            "type": "string",
            "description": "How Gartner orders public reviews before paging.",
            "editor": "select",
            "enum": [
              "most-helpful",
              "most-recent",
              "least-recent"
            ],
            "enumTitles": [
              "Most helpful",
              "Most recent",
              "Least recent"
            ],
            "default": "most-helpful",
            "prefill": "most-helpful"
          },
          "reviewRating": {
            "title": "Filter reviews by star rating",
            "type": "string",
            "description": "Collect only reviews with this star rating, or all ratings.",
            "editor": "select",
            "enum": [
              "all",
              "5",
              "4",
              "3",
              "2",
              "1"
            ],
            "enumTitles": [
              "All ratings",
              "5 stars",
              "4 stars",
              "3 stars",
              "2 stars",
              "1 star"
            ],
            "default": "all",
            "prefill": "all"
          },
          "reviewerType": {
            "title": "Filter reviews by reviewer type",
            "type": "string",
            "description": "Collect reviews from all reviewers, end users, or vendor partners.",
            "editor": "select",
            "enum": [
              "all",
              "end-user",
              "partner"
            ],
            "enumTitles": [
              "All reviewers",
              "End users",
              "Partner reviewers"
            ],
            "default": "all",
            "prefill": "all"
          },
          "lastTwelveMonths": {
            "title": "Only reviews from the last 12 months",
            "type": "boolean",
            "description": "Limit reviews to those published in the last twelve months.",
            "default": false,
            "prefill": false
          },
          "marketSort": {
            "title": "Market product sort order",
            "type": "string",
            "description": "How products are ordered inside a market listing.",
            "editor": "select",
            "enum": [
              "ratingsCount_desc",
              "ratingsCount_asc",
              "averageRating_desc",
              "averageRating_asc",
              "name_asc",
              "name_desc"
            ],
            "enumTitles": [
              "Most ratings first",
              "Fewest ratings first",
              "Highest rated first",
              "Lowest rated first",
              "Name A-Z",
              "Name Z-A"
            ],
            "default": "ratingsCount_desc",
            "prefill": "ratingsCount_desc"
          },
          "marketCompanySize": {
            "title": "Filter market products by company size",
            "type": "string",
            "description": "Use Gartner's company-size facet when listing products in a market.",
            "editor": "select",
            "enum": [
              "all",
              "<50M USD",
              "50M-1B USD",
              "1B-10B USD",
              "10B+ USD",
              "Gov't/PS/Ed"
            ],
            "enumTitles": [
              "All company sizes",
              "Under 50M USD",
              "50M-1B USD",
              "1B-10B USD",
              "10B+ USD",
              "Government / public sector / education"
            ],
            "default": "all",
            "prefill": "all"
          },
          "maxItems": {
            "title": "Max records",
            "type": "integer",
            "description": "Maximum number of market, product, review, or category records to save.",
            "minimum": 1,
            "maximum": 10000,
            "default": 100,
            "prefill": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The actor works without a proxy and switches automatically only if Gartner blocks the request.",
            "editor": "proxy"
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Gartner Peer Insights Product & Market Data Extractor Output",
        "description": "Product profiles, public reviews, market listings, and market/category directory records from Gartner Peer Insights. Each record has a `type`: product, review, market, or category.",
        "properties": {
          "results": {
            "type": "string",
            "title": "Gartner data",
            "description": "Dataset containing scraped Gartner Peer Insights records.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Results",
              "transformation": {
                "fields": [
                  "type",
                  "productName",
                  "vendorName",
                  "averageRating",
                  "totalReviews",
                  "marketName",
                  "marketSeoName",
                  "productSeoName",
                  "reviewId",
                  "headline",
                  "rating",
                  "reviewDate",
                  "jobTitle",
                  "industry",
                  "companySize"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.1.1",
    "imageDigest": "9e9e71c52949d51e99596e04774acbd82de1937118ce48187a0738e3474b4114",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.028414444444444444
    }
  }
}