{
  "openapi": "3.0.1",
  "info": {
    "title": "Chrome Extension Competitor Analysis Scraper",
    "description": "Compare competing extensions using public store metadata and review signals.",
    "version": "1.1",
    "x-build-id": "vrfsHetcfHKx6PbNm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/googleapi~chrome-extension-competitor-analysis-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-googleapi-chrome-extension-competitor-analysis-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/googleapi~chrome-extension-competitor-analysis-scraper/runs": {
      "post": {
        "operationId": "runs-sync-googleapi-chrome-extension-competitor-analysis-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/googleapi~chrome-extension-competitor-analysis-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-googleapi-chrome-extension-competitor-analysis-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": {
          "extensionIds": {
            "title": "Extension IDs",
            "maxItems": 100,
            "type": "array",
            "description": "Chrome extension IDs or official detail URLs.",
            "items": {
              "type": "string",
              "maxLength": 500
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Official Chrome Web Store detail, search, or category URLs.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "Public URL",
                  "description": "Official HTTPS Chrome Web Store URL.",
                  "type": "string",
                  "maxLength": 500
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "sourceUrls": {
            "title": "Source URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Alias for startUrls.",
            "items": {
              "type": "string",
              "maxLength": 500
            }
          },
          "urls": {
            "title": "URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Compatibility alias for official source URLs.",
            "items": {
              "type": "string",
              "maxLength": 500
            }
          },
          "queries": {
            "title": "Queries",
            "maxItems": 25,
            "type": "array",
            "description": "Public Chrome Web Store search terms that define a competitor cohort.",
            "items": {
              "type": "string",
              "maxLength": 200
            }
          },
          "query": {
            "title": "Query",
            "maxLength": 200,
            "type": "string",
            "description": "One public competitor search term."
          },
          "searchQuery": {
            "title": "Query alias",
            "maxLength": 200,
            "type": "string",
            "description": "Compatibility alias for query."
          },
          "category": {
            "title": "Category",
            "pattern": "^[^/?#]+$",
            "minLength": 1,
            "maxLength": 100,
            "type": "string",
            "description": "One category path segment used when no explicit source is supplied.",
            "default": "extensions"
          },
          "comparisonGroup": {
            "title": "Comparison group",
            "minLength": 1,
            "maxLength": 100,
            "type": "string",
            "description": "Business label attached to every comparison row."
          },
          "mode": {
            "title": "Collection mode",
            "enum": [
              "search",
              "details",
              "intelligence"
            ],
            "type": "string",
            "description": "Collection intent label. Enable Include details explicitly to enrich discovered extensions. Direct detail targets are always fetched."
          },
          "maxItems": {
            "title": "Maximum competitors",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum normal comparison rows.",
            "default": 25
          },
          "maxPages": {
            "title": "Maximum pages",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum listing pages per source.",
            "default": 2
          },
          "maxRequests": {
            "title": "Maximum requests",
            "minimum": 1,
            "maximum": 250,
            "type": "integer",
            "description": "Maximum public listing and detail fetches for the run. If omitted, runtime derives a bounded default from maxItems: max(25, 3 × maxItems), capped at 250."
          },
          "maxDetailItems": {
            "title": "Maximum detail items",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum discovered listing candidates to fetch as public detail pages. This is independent of maxItems; candidates beyond this detail limit are returned as listing-only records."
          },
          "maxDetailRequests": {
            "title": "Legacy detail limit",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Compatibility alias for maxDetailItems. It limits detail-page fetches only and never reduces global maxItems."
          },
          "sortBy": {
            "title": "Comparison order",
            "enum": [
              "user_count_desc",
              "rating_desc",
              "review_count_desc",
              "source_order"
            ],
            "type": "string",
            "description": "Order used for the final cohort rows.",
            "default": "user_count_desc"
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Optional rating filter from 0 to 5.",
            "default": 0
          },
          "minReviewCount": {
            "title": "Minimum reviews",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Optional minimum review/rating count.",
            "default": 0
          },
          "includeDetails": {
            "title": "Include details",
            "type": "boolean",
            "description": "Opt in to fetching public detail pages for extensions discovered from search or category listings. Disabled by default. Explicit detail URLs and extension IDs are always fetched as primary targets.",
            "default": false
          },
          "requestDelayMs": {
            "title": "Request delay",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Delay between public requests.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Maximum concurrency",
            "minimum": 1,
            "maximum": 1,
            "type": "integer",
            "description": "Fixed at one for polite sequential requests.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Maximum retries",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Retries for transient requests.",
            "default": 1
          },
          "maxRetries": {
            "title": "Retry alias",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Compatibility alias for maxRequestRetries."
          },
          "requestTimeoutSecs": {
            "title": "Timeout seconds",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Per-request timeout.",
            "default": 25
          },
          "timeoutSecs": {
            "title": "Timeout alias seconds",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Compatibility timeout alias."
          },
          "requestTimeoutMs": {
            "title": "Timeout milliseconds",
            "minimum": 5000,
            "maximum": 120000,
            "type": "integer",
            "description": "Compatibility millisecond timeout."
          },
          "maxResponseBytes": {
            "title": "Maximum response bytes",
            "minimum": 10000,
            "maximum": 5000000,
            "type": "integer",
            "description": "Bound retained HTML.",
            "default": 3000000
          },
          "locale": {
            "title": "Locale",
            "type": "string",
            "description": "Store locale such as en-US or en.",
            "default": "en-US"
          },
          "language": {
            "title": "Locale alias",
            "type": "string",
            "description": "Compatibility alias for locale."
          },
          "userAgent": {
            "title": "User agent",
            "type": "string",
            "description": "Optional ordinary public browser user agent."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Compatibility field; direct public HTTPS is used."
          },
          "page": {
            "title": "Page",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "One-based starting page. Earlier pages are skipped only by following observed rel=next links from the public source; no page URL offsets are invented.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}