{
  "openapi": "3.0.1",
  "info": {
    "title": "Glassdoor Reviews Change Insights - What Changed for Employees",
    "description": "Glassdoor reviews you already scraped, compared period by period: rating change per company and month and the complaint topics that rose (pay, layoffs, management…) with quotes. AI explanations, summaries on paid plans. 1 company, 24 months, 600 reviews, 20 AI explanations: about $2.42 on BRONZE.",
    "version": "0.1",
    "x-build-id": "VaXNz4tpU55ulY9CL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ntriqpro~glassdoor-reviews-change-insights/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ntriqpro-glassdoor-reviews-change-insights",
        "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/ntriqpro~glassdoor-reviews-change-insights/runs": {
      "post": {
        "operationId": "runs-sync-ntriqpro-glassdoor-reviews-change-insights",
        "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/ntriqpro~glassdoor-reviews-change-insights/run-sync": {
      "post": {
        "operationId": "run-sync-ntriqpro-glassdoor-reviews-change-insights",
        "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": {
          "datasetIds": {
            "title": "Datasets of review scrapers",
            "type": "array",
            "description": "IDs of datasets in your Apify account with company reviews (for example a Glassdoor reviews scraper run). They are read with this run's own token; reading is covered by the run-start fee. Common fields are found by themselves: company (employer.shortName, employerName, companyName…), date (reviewDateTime, postedAt, reviewDate \"Mar 15, 2026\"…), rating (ratingOverall, ratings.overall, rating), pros, cons, summary/headline, reviewId. Job, salary and notice rows of other Actors are left out. Job title, location and author fields are never read.",
            "items": {
              "type": "string"
            }
          },
          "csvUrls": {
            "title": "CSV file addresses",
            "type": "array",
            "description": "Public http(s) addresses of CSV files with one review per row and a header row (headers are matched without letter case, spaces or underscores: \"Rating Overall\" = ratingOverall). Up to 20 MB a file; addresses inside private networks are refused.",
            "items": {
              "type": "string"
            }
          },
          "jsonUrls": {
            "title": "JSON or JSONL file addresses",
            "type": "array",
            "description": "Public http(s) addresses of JSON (an array, or an object with items/data/results/reviews) or JSONL files, one review per entry, in the shape of any of the scrapers above.",
            "items": {
              "type": "string"
            }
          },
          "reviews": {
            "title": "Reviews",
            "type": "array",
            "description": "Reviews pasted here as JSON objects in a scraper's shape, for example { \"employer\": { \"shortName\": \"Acme\" }, \"reviewDateTime\": \"2026-09-02\", \"ratingOverall\": 2, \"pros\": \"…\", \"cons\": \"…\", \"reviewId\": 123 }. The prefill is made-up reviews of a made-up company."
          },
          "companies": {
            "title": "Only these companies",
            "type": "array",
            "description": "Company names to keep (letter case and spacing aside, the exact name the scraper wrote). Empty: every company in the sources.",
            "items": {
              "type": "string"
            }
          },
          "defaultCompany": {
            "title": "Company of rows without a company field",
            "type": "string",
            "description": "For an export of one company whose rows do not name it."
          },
          "period": {
            "title": "Period",
            "enum": [
              "month",
              "quarter"
            ],
            "type": "string",
            "description": "One row per company and month, or per company and quarter.",
            "default": "month"
          },
          "compareTo": {
            "title": "Compare each period with",
            "enum": [
              "previous",
              "year-ago"
            ],
            "type": "string",
            "description": "previous: the period just before (when it has no review, the latest earlier period that has one — the row says which). year-ago: the same period a year before.",
            "default": "previous"
          },
          "minReviews": {
            "title": "Low-sample threshold",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "A period (or the one it is compared with) with fewer reviews than this is flagged lowSample. It is still compared and charged; it gets no AI explanation.",
            "default": 5
          },
          "minShareChange": {
            "title": "Rising complaint threshold (percentage points)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "A topic counts as a rising complaint when the share of reviews complaining about it grew by at least this many points (and at least 2 reviews raise it).",
            "default": 10
          },
          "maxPeriodsPerCompany": {
            "title": "Periods per company",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "The newest this many periods of each company become rows (older periods still serve as the comparison of the oldest row).",
            "default": 24
          },
          "startAtPeriod": {
            "title": "Start at company×period (paid plans)",
            "minimum": 0,
            "maximum": 24000,
            "type": "integer",
            "description": "Skip the first this many company×periods of the run's list (companies in the order they first appear, each company's periods newest first) to go on from where a run stopped at its maximum charge: that run's charge-limit-reached row gives the exact value (`nextStartAtPeriod`). Skipped periods are not delivered or charged; their reviews still serve as the comparison of the next period. The reading is charged again (the run reads the same sources).",
            "default": 0
          },
          "maxReviews": {
            "title": "Reviews per run (paid plans)",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Reviews read and classified in one run, in source order. A free run reads up to 5,000 source rows and shows one teaser.",
            "default": 5000
          },
          "aiExplanations": {
            "title": "AI explanation of each change (paid plans)",
            "type": "boolean",
            "description": "For every period with a comparison and enough reviews on both sides: what changed for employees and why, each change resting on review sentences quoted word for word and checked by code; an answer that fails the checks is thrown away and not charged. $0.04 each on BRONZE. When on, review texts (pros, cons, headline — never job title, location or author) are sent to Anthropic's API (USA).",
            "default": true
          },
          "aiMaxPeriods": {
            "title": "AI explanations per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "At most this many periods get an AI explanation in one run.",
            "default": 200
          },
          "companySummaries": {
            "title": "Company summary rows (paid plans)",
            "type": "boolean",
            "description": "One row per company with two or more period rows: rating first to last, best and worst period, complaint trends, the topics that rose most, quotes and the AI headlines. $0.08 each on BRONZE.",
            "default": true
          },
          "maxItemsPerSource": {
            "title": "Rows read per source",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "At most this many rows are read from one dataset or file. Reading the first 1,000 rows of the run is in the run-start fee; every further 1,000 rows read (also rows that are not reviews or not of your `companies`) is one rows-read event. A run stops reading when its maximum charge would no longer pay for the comparisons of what it read.",
            "default": 20000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}