{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Software Products & Reviews Scraper",
    "description": "Scrape B2B and SaaS software products with star ratings, review counts, pricing, feature lists and detailed user reviews (title, text, reviewer role and industry, rating and date). Search by category or keyword and export products plus reviews to JSON, CSV or Excel.",
    "version": "0.2",
    "x-build-id": "2vDKnErZk3lVrw5lf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers_lat~g2-software-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers_lat-g2-software-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapers_lat~g2-software-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapers_lat-g2-software-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapers_lat~g2-software-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers_lat-g2-software-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Product names or keywords to search on G2 (e.g. \"salesforce\", \"crm\", \"help desk\"). Each returns matching software products.",
            "items": {
              "type": "string"
            }
          },
          "productUrls": {
            "title": "Product URLs or slugs",
            "type": "array",
            "description": "Specific G2 product pages to scrape, as full URLs (https://www.g2.com/products/slack/reviews) or bare slugs (\"slack\"). Use when you already know the products you want.",
            "items": {
              "type": "string"
            }
          },
          "categoryUrls": {
            "title": "Category URLs or slugs",
            "type": "array",
            "description": "G2 category pages to browse, as full URLs (https://www.g2.com/categories/crm) or bare slugs (\"crm\", \"project-management\"). Returns the ranked products in each category.",
            "items": {
              "type": "string"
            }
          },
          "maxProducts": {
            "title": "Max products",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of products to scrape across the whole run.",
            "default": 20
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Collect individual user reviews (title, text, star rating, date, reviewer name) for each product. Turn off for a faster products-only run.",
            "default": true
          },
          "maxReviews": {
            "title": "Max reviews per product",
            "minimum": 0,
            "type": "integer",
            "description": "How many reviews to collect per product (10 come free with the product page; more are paginated). Set 0 to skip reviews.",
            "default": 10
          },
          "reviewSort": {
            "title": "Review sort order",
            "enum": [
              "most_recent",
              "most_helpful",
              "highest_rated",
              "lowest_rated",
              "default"
            ],
            "type": "string",
            "description": "Order reviews are collected in.",
            "default": "most_recent"
          },
          "minReviewStar": {
            "title": "Minimum review star",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only keep reviews at or above this star rating (1-5). Leave at 0 for all reviews.",
            "default": 0
          },
          "reviewsSince": {
            "title": "Reviews since date",
            "type": "string",
            "description": "Only keep reviews published on or after this date (ISO, e.g. 2025-01-01). Useful for incremental review monitoring."
          },
          "minRating": {
            "title": "Minimum product rating",
            "type": "string",
            "description": "Skip products whose average star rating (out of 5) is below this value (e.g. 4.0). Leave empty for all products."
          },
          "includePricing": {
            "title": "Include pricing tiers",
            "type": "boolean",
            "description": "Fetch each product's pricing page to add entry-level price and pricing tiers. Adds one extra page fetch per product.",
            "default": false
          },
          "includeAlternatives": {
            "title": "Include alternatives / competitors",
            "type": "boolean",
            "description": "Capture the competing products G2 lists as head-to-head alternatives for each product.",
            "default": true
          },
          "withSummary": {
            "title": "AI product summary (add-on)",
            "type": "boolean",
            "description": "Opt-in paid add-on. Generate a 1-2 sentence AI summary of what each product does. Requires a paid Apify plan.",
            "default": false
          },
          "withTopics": {
            "title": "AI topics & category (add-on)",
            "type": "boolean",
            "description": "Opt-in paid add-on. Extract topic/keyword tags and a broad software category for each product using AI. Requires a paid Apify plan.",
            "default": false
          },
          "withReviewDigest": {
            "title": "AI review digest — pros/cons (add-on)",
            "type": "boolean",
            "description": "Opt-in paid add-on. Distill the collected reviews for each product into top pros, top cons and an overall verdict using AI. Requires 'Include reviews' enabled and a paid Apify plan.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}