{
  "openapi": "3.0.1",
  "info": {
    "title": "G2 Reviews Scraper - Software Reviews, Ratings & Product Data",
    "description": "Scrape G2 software reviews: title, stars, likes, dislikes, problems solved, reviewer role, industry, company size and date. Filter by stars, company size, role, region, industry, keyword or date; newest first; monitor mode. Optional product rows with the G2 profile. No login.",
    "version": "0.1",
    "x-build-id": "Kl5IzR85J32Xgkkch"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~g2-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-g2-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/scrapersdelight~g2-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-g2-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/scrapersdelight~g2-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-g2-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": {
          "products": {
            "title": "🔍 Products",
            "type": "array",
            "description": "G2 products to read: a product or reviews URL, a slug, G2's numeric product id or an exact product name, e.g. \"https://www.g2.com/products/slack/reviews\", \"hubspot-sales-hub\", \"Postman\". Several per run.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Product search",
            "type": "array",
            "description": "Words searched in G2's product directory, e.g. \"crm\", \"web scraping\", \"password manager\". Each term adds its best matches (up to 10, see Products per search / category).",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "G2 category URLs or slugs, e.g. \"https://www.g2.com/categories/crm\", \"help-desk\". Adds the products G2 ranks first in that category (up to 15). Read through Apify's Unblocker, about 30-50 s per category.",
            "items": {
              "type": "string"
            }
          },
          "maxProductsPerSource": {
            "title": "Products per search / category",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "How many products each search term or category adds, best match or highest ranked first. 1-15.",
            "default": 10
          },
          "scrapeReviews": {
            "title": "Scrape reviews",
            "type": "boolean",
            "description": "One row per review (the billed `review` event). Turn off to collect product rows only.",
            "default": true
          },
          "includeProducts": {
            "title": "Product rows",
            "type": "boolean",
            "description": "Add one row per product (`product` event): name, G2 rating, review count, categories, and how many of its reviews this run delivered.",
            "default": false
          },
          "productDetails": {
            "title": "Product details (profile)",
            "type": "boolean",
            "description": "Product rows also carry the product's G2 profile: vendor, description, logo, star distribution, pros and cons themes with mention counts, review counts per company size, role, category, industry and region (with the filter ids), pricing plans, languages, integrations count and G2's comparisons. One Unblocker page per product (about 30-50 s); billed as `product-details` instead of `product`. Turns on Product rows.",
            "default": false
          },
          "starRatings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Keep only these star levels (G2's own buckets: 5 = 4.5-5 stars, 4 = 3.5-4, 3 = 2.5-3, 2 = 1.5-2, 1 = 0-1). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "5",
                "4",
                "3",
                "2",
                "1"
              ],
              "enumTitles": [
                "5 stars",
                "4 stars",
                "3 stars",
                "2 stars",
                "1 star"
              ]
            },
            "default": []
          },
          "companySizes": {
            "title": "Reviewer company size",
            "type": "array",
            "description": "Keep reviews from these G2 market segments. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "small_business",
                "mid_market",
                "enterprise"
              ],
              "enumTitles": [
                "Small business (50 or fewer employees)",
                "Mid-market (51-1,000)",
                "Enterprise (more than 1,000)"
              ]
            },
            "default": []
          },
          "reviewerRoles": {
            "title": "Reviewer role",
            "type": "array",
            "description": "Keep reviewers with any of these roles on the product. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "user",
                "administrator",
                "executive_sponsor",
                "internal_consultant",
                "consultant",
                "agency",
                "analyst_or_writer",
                "industry_analyst",
                "tech_writer"
              ],
              "enumTitles": [
                "User",
                "Administrator",
                "Executive sponsor",
                "Internal consultant",
                "Consultant",
                "Agency",
                "Industry analyst / tech writer (older reviews)",
                "Industry analyst",
                "Tech writer"
              ]
            },
            "default": []
          },
          "regions": {
            "title": "Reviewer region",
            "type": "array",
            "description": "Keep reviewers from these regions. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "North America",
                "Europe",
                "Asia",
                "Latin America",
                "Middle East",
                "Africa",
                "ANZ"
              ],
              "enumTitles": [
                "North America",
                "Europe",
                "Asia",
                "Latin America",
                "Middle East",
                "Africa",
                "Australia / New Zealand"
              ]
            },
            "default": []
          },
          "industries": {
            "title": "Reviewer industry",
            "type": "array",
            "description": "Keep reviewers from these industries, by G2 name or numeric id, e.g. \"Computer Software\", \"Financial Services\", \"Hospital & Health Care\". All 149 G2 industry names are accepted. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword in the review",
            "type": "string",
            "description": "G2's own review search: keep reviews whose answers mention this, e.g. \"pricing\", \"customer support\"."
          },
          "reviewCategoryIds": {
            "title": "Reviewed as category (G2 category ids)",
            "type": "array",
            "description": "Keep reviews written for these G2 categories of the product, by G2's numeric category id (a product row with Product details lists them under reviewFacets.categories), e.g. \"2174\" = Business Instant Messaging for Slack.",
            "items": {
              "type": "string"
            }
          },
          "reviewsNewerThan": {
            "title": "Reviews newer than",
            "type": "string",
            "description": "Only reviews published on or after this date: \"2026-01-31\" or a relative window such as \"30 days\", \"6 months\"."
          },
          "reviewsOlderThan": {
            "title": "Reviews older than",
            "type": "string",
            "description": "Only reviews published on or before this date: \"2025-12-31\" or \"1 year\"."
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 0,
            "type": "integer",
            "description": "The newest N reviews of each product that match the filters. 0 = every review G2's feed reaches (see the README for how far that goes on large products).",
            "default": 100
          },
          "maxItems": {
            "title": "Max reviews per run",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the run after this many review rows across all products. 0 = no cap.",
            "default": 1000
          },
          "maxRequestsPerProduct": {
            "title": "Max G2 feed calls per product",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Upper bound on G2 feed calls per product (each returns up to 25 reviews of one filter combination). Raise it for complete histories of products with thousands of reviews. 1-5,000.",
            "default": 400
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "G2 feed calls in flight at once. 1-8.",
            "default": 6
          },
          "monitorMode": {
            "title": "Monitor mode (only new reviews)",
            "type": "boolean",
            "description": "Deliver only reviews published since earlier runs with the same products and filters (remembered in a named key-value store). Schedule it daily or weekly.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor memory name",
            "type": "string",
            "description": "Optional name for the monitor memory, so several schedules keep separate memories (e.g. \"crm-weekly\"). Empty = derived from the products and filters."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional: at the end of the run, POST a JSON summary (reviews delivered per product + the dataset link) to this URL - Zapier, Make, n8n, Slack or Discord incoming webhooks all accept it."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "G2's review feed answers without a proxy; leave this off. If G2 refuses the direct connection, the run moves to Apify proxies on its own. Your own proxy URLs are used before Apify's.",
            "default": {
              "useApifyProxy": 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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}