{
  "openapi": "3.0.1",
  "info": {
    "title": "Chrome Web Store Scraper",
    "description": "Scrape Chrome Web Store extensions by URL or ID, keyword search and category: users, rating, reviews count, version, update date, size, languages, permissions, publisher, badges. Also extension reviews. No login. US$ 2 per 1,000 rows; failed items are free.",
    "version": "0.1",
    "x-build-id": "3Nxm0bSeLbo1lXXht"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~chrome-web-store/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-chrome-web-store",
        "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/scrapewise~chrome-web-store/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-chrome-web-store",
        "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/scrapewise~chrome-web-store/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-chrome-web-store",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "auto",
              "extensions",
              "search",
              "category",
              "reviews"
            ],
            "type": "string",
            "description": "Auto (default) runs every input you fill in: extension URLs or IDs return full extension rows, search terms return ranked search results, categories return category listings, and links ending in /reviews return reviews. Pick 'Reviews of extensions' to get reviews for every extension in 'Extension URLs or IDs' instead of their details. The other options run only that kind of input. Every row costs the same (US$ 2.00 per 1,000)."
          },
          "extensionUrls": {
            "title": "Extension URLs or IDs",
            "type": "array",
            "description": "One per line: a Chrome Web Store link (https://chromewebstore.google.com/detail/google-translate/aapbdbdomjkkjkaonfhkkikfgjllcleb), an old chrome.google.com/webstore link, a /reviews link, or the bare 32-letter ID (aapbdbdomjkkjkaonfhkkikfgjllcleb). Each returns one extension row with full details, or its reviews in reviews mode. Store search and category URLs pasted here also work. An unknown ID returns a free EXTENSION_NOT_FOUND row; duplicates are removed. Also accepts 'extensionIds' and 'startUrls'.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search on the Chrome Web Store, one per line, for example ad blocker, screenshot or ai writing. Each keyword returns up to 'Max items' extensions in the store's own ranking order, with 'searchRank' (1, 2, 3...) and 'searchQuery' on every row. Ranking depends on 'Language'. A keyword with no results returns a free NO_RESULTS row. Also accepts 'searchKeywords' and 'queries'.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Category slugs, names or category URLs, one per line. Slugs: productivity/developer, productivity/tools, productivity/workflow, productivity/communication, productivity/education, lifestyle/shopping, lifestyle/social, lifestyle/entertainment, lifestyle/games, lifestyle/news, lifestyle/travel, make_chrome_yours/privacy, make_chrome_yours/functionality, make_chrome_yours/accessibility. Names such as Developer Tools also work. Each category returns up to 'Max items' extensions in store order with their position; categories hold thousands, so set 'Max items' to what you need. Unknown names return a free INVALID_CATEGORY row. Also accepts 'categoryUrls'.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum extensions per search term or category, and maximum reviews per extension in reviews mode when 'Max reviews per extension' is empty. Default 30. Extension URLs and IDs are always returned in full. You pay per row (US$ 2.00 per 1,000), so this sets the cost per input: 30 rows cost US$ 0.06. Also accepts 'maxResultsPerQuery' and 'limit'.",
            "default": 30
          },
          "includeDetails": {
            "title": "Full details for search and category results",
            "type": "boolean",
            "description": "On (default): search and category rows get the same fields as a direct lookup: version, last update, size, languages, manifest permissions, publisher, trader status, support and privacy links (one extra light request per extension). Off: faster rank snapshots with name, users, rating, category, badges and short description only. Same price either way. Also accepts 'fetchDetails'.",
            "default": true
          },
          "maxReviews": {
            "title": "Max reviews per extension",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Reviews mode only. Maximum reviews per extension, overriding 'Max items' for reviews, for example 500. Leave empty to use 'Max items'. Each review is one charged row; reviews removed by the star, date or language filters are not charged. Also accepts 'maxReviewsPerExtension'."
          },
          "reviewsSort": {
            "title": "Reviews order",
            "enum": [
              "recent",
              "helpful",
              "highest",
              "lowest"
            ],
            "type": "string",
            "description": "Reviews mode only. Order in which reviews are read, the same options as the store's reviews page: Most recent (default; with it 'Reviews since' stops paging at the first older review), Most helpful, Highest rating first or Lowest rating first. 'Only new reviews' always reads most recent first.",
            "default": "recent"
          },
          "reviewsLanguage": {
            "title": "Reviews language filter",
            "type": "string",
            "description": "Reviews mode only. Two-letter code of the reviews to return, for example en, es, de, ja or fr. Leave empty to follow the 'Language' field, as the store page does. Set all to get reviews in every language."
          },
          "minRating": {
            "title": "Minimum review stars",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Reviews mode only. Keep only reviews with at least this many stars, 1 to 5 (set 4 for positive reviews). Reviews below it are skipped and not charged."
          },
          "maxRating": {
            "title": "Maximum review stars",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Reviews mode only. Keep only reviews with at most this many stars, 1 to 5. Set 2 to monitor complaints. Reviews above it are skipped and not charged."
          },
          "reviewsSince": {
            "title": "Reviews since (date)",
            "type": "string",
            "description": "Reviews mode only. Keep only reviews created on or after this date, in ISO format: 2026-01-01 or 2026-01-01T12:00:00Z. With 'Most recent' order the Actor stops paging at the first older review, so a daily check reads only one or two pages."
          },
          "onlyNewReviews": {
            "title": "Only new reviews since the last run",
            "type": "boolean",
            "description": "Reviews mode only, for a review alert on a schedule. Remembers the reviews already delivered for each extension, language and star filter in the Key-Value Store 'chrome-web-store-only-new' in your account, reads most recent first and stops at the first review you already have. Each run delivers, and charges, only reviews posted since; a run with nothing new costs nothing. Delete the store to start over. Default off.",
            "default": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Store language (Google's hl), for example en, pt-BR, es, de, fr or ja. Default en. It changes extension names and descriptions when the developer translated them, the search ranking for each keyword, and the default review language.",
            "default": "en"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy (the default) works for the Chrome Web Store; blocked requests are retried on a new IP, and a request blocked on every retry becomes a free BLOCKED row. Change it only if you have a reason to use another proxy group.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}