{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Review & Feedback Analyzer - Sentiment, Themes & Summary",
    "description": "Analyze reviews, surveys and support tickets with AI: sentiment, themes, feature requests, complaints, urgency and a free summary report with counts, quotes and trends. Works on our app review scrapers. $1 per 1,000 items.",
    "version": "0.1",
    "x-build-id": "KT4dII8egYSRFP9QR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/plotpointtech~ai-review-feedback-analyzer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-plotpointtech-ai-review-feedback-analyzer",
        "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/plotpointtech~ai-review-feedback-analyzer/runs": {
      "post": {
        "operationId": "runs-sync-plotpointtech-ai-review-feedback-analyzer",
        "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/plotpointtech~ai-review-feedback-analyzer/run-sync": {
      "post": {
        "operationId": "run-sync-plotpointtech-ai-review-feedback-analyzer",
        "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": {
          "datasetId": {
            "title": "Apify dataset ID",
            "type": "string",
            "description": "Analyze items from an Apify dataset, for example the output of our Google Play Reviews Scraper or App Store Reviews Scraper, or any other Actor. Paste the dataset ID or pick it."
          },
          "fileUrls": {
            "title": "CSV / JSON file URLs",
            "type": "array",
            "description": "Links to CSV, JSON, JSON Lines or plain-text files (one feedback per line). Exports from survey tools, helpdesks or spreadsheets work. Public links only (e.g. Google Sheets 'publish to web' CSV link).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "texts": {
            "title": "Pasted texts",
            "type": "array",
            "description": "Paste feedback directly: one review, survey answer, ticket or comment per line. Leave all three sources empty to analyze 20 bundled sample reviews.",
            "items": {
              "type": "string"
            }
          },
          "textField": {
            "title": "Text field",
            "type": "string",
            "description": "Name of the field/column that holds the feedback text (dots for nested fields, e.g. review.body). Leave empty to auto-detect: text, review, reviewText, content, body, comment, feedback, message, description."
          },
          "titleField": {
            "title": "Title field",
            "type": "string",
            "description": "Optional review title field. Auto-detected: title, reviewTitle, subject, headline."
          },
          "includeTitle": {
            "title": "Use review title",
            "type": "boolean",
            "description": "Send the review title to the AI together with the text.",
            "default": true
          },
          "dateField": {
            "title": "Date field",
            "type": "string",
            "description": "Field with the review date, used for the trend. Auto-detected: date, publishedAt, createdAt, at, timestamp and similar."
          },
          "ratingField": {
            "title": "Rating field",
            "type": "string",
            "description": "Field with a star rating or score. Auto-detected: rating, stars, score. Used as a hint and for average rating."
          },
          "idField": {
            "title": "ID field",
            "type": "string",
            "description": "Field with a unique item ID to carry into the output. Auto-detected: reviewId, id. Otherwise the row number is used."
          },
          "passThroughFields": {
            "title": "Fields to copy to output",
            "type": "array",
            "description": "Extra input fields to copy unchanged into each result, e.g. appName, country, appVersion, authorName.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Your categories (optional)",
            "type": "array",
            "description": "Your own theme list, e.g. Pricing, Onboarding, Sync, Support. Leave empty and the tool derives a consistent taxonomy from a sample of your data first. 'Other' is always added.",
            "items": {
              "type": "string"
            }
          },
          "maxThemes": {
            "title": "Max themes to derive",
            "minimum": 5,
            "maximum": 20,
            "type": "integer",
            "description": "Upper limit on automatically derived themes.",
            "default": 10
          },
          "productContext": {
            "title": "What is the feedback about? (optional)",
            "type": "string",
            "description": "A few words of context that improve accuracy, e.g. 'a meditation app', 'our hotel in Lisbon', 'B2B invoicing software'."
          },
          "outputLanguage": {
            "title": "Output language",
            "type": "string",
            "description": "Language for summaries, complaints, requests and the report. Feedback in any language is understood.",
            "default": "English"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Analyze at most this many items (0 = all, up to 100,000).",
            "default": 0
          },
          "maxTextLength": {
            "title": "Max characters per item",
            "minimum": 200,
            "maximum": 4000,
            "type": "integer",
            "description": "Longer texts are shortened to this length before analysis (keeps cost predictable). Most reviews are under 500 characters.",
            "default": 1500
          },
          "includeText": {
            "title": "Include original text",
            "type": "boolean",
            "description": "Copy the original feedback text into each result.",
            "default": true
          },
          "includeSummary": {
            "title": "Add aggregate summary record",
            "type": "boolean",
            "description": "Add one free final record with theme counts and example quotes, top complaints, top feature requests, top praise, trend by date and an overall summary. Also saved as SUMMARY in the key-value store.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel AI requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many batches of 10 items are analyzed at once.",
            "default": 6
          },
          "anthropicApiKey": {
            "title": "Your Anthropic API key (optional, cheaper)",
            "type": "string",
            "description": "Optional. With your own Anthropic key you pay a lower per-item price and Anthropic bills you directly for AI usage (a few cents per 1,000 items)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}