{
  "openapi": "3.0.1",
  "info": {
    "title": "Chrome Web Store & Firefox Add-ons Scraper — Users, Ratings",
    "description": "Scrape Chrome Web Store and Firefox Add-ons extensions in one run: users, rating, reviews count, version, last update, size, developer, website, permissions, data handling and badges. By keyword, category, extension ID or the full catalog. Compare runs to track growth. No login.",
    "version": "0.1",
    "x-build-id": "i3oLK3dAO3vOM39Fx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~browser-extension-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-browser-extension-store-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/yugenox~browser-extension-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-browser-extension-store-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/yugenox~browser-extension-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-browser-extension-store-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": {
          "stores": {
            "title": "Stores",
            "type": "array",
            "description": "Which stores to scrape: Chrome Web Store, Firefox Add-ons, or both. Extension IDs and links you paste are always read from their own store.",
            "items": {
              "type": "string",
              "enum": [
                "chrome",
                "firefox"
              ],
              "enumTitles": [
                "Chrome Web Store",
                "Firefox Add-ons"
              ]
            },
            "default": [
              "chrome",
              "firefox"
            ]
          },
          "searchTerms": {
            "title": "🔎 Search terms",
            "type": "array",
            "description": "Keywords, e.g. \"vpn\", \"grammar\", \"seo\", \"password manager\". Firefox: Mozilla's own add-on search (by relevance unless you pick a sort below). Chrome: every extension whose name contains your words, found in the store's public index of all extensions (≈375,000; the index lists the first ~25 characters of each name). Words match the start of words, e.g. \"vpn\" finds \"Free VPN for Chrome\". The index is read section by section until Max items is reached: a common word takes 15–60 seconds, a rare word that has to be checked against the whole index 3–5 minutes.",
            "items": {
              "type": "string"
            }
          },
          "chromeCategories": {
            "title": "Chrome categories",
            "type": "array",
            "description": "Chrome Web Store categories. Each gives the store's top 32 extensions of that category (by users, as the category page shows them).",
            "items": {
              "type": "string",
              "enum": [
                "productivity/communication",
                "productivity/workflow",
                "productivity/tools",
                "productivity/education",
                "productivity/developer",
                "lifestyle/shopping",
                "lifestyle/news",
                "lifestyle/entertainment",
                "lifestyle/games",
                "lifestyle/social",
                "lifestyle/art",
                "lifestyle/well_being",
                "lifestyle/travel",
                "lifestyle/household",
                "lifestyle/fun",
                "make_chrome_yours/accessibility",
                "make_chrome_yours/functionality",
                "make_chrome_yours/privacy"
              ],
              "enumTitles": [
                "Productivity › Communication",
                "Productivity › Workflow & planning",
                "Productivity › Tools",
                "Productivity › Education",
                "Productivity › Developer tools",
                "Lifestyle › Shopping",
                "Lifestyle › News & weather",
                "Lifestyle › Entertainment",
                "Lifestyle › Games",
                "Lifestyle › Social networking",
                "Lifestyle › Art & design",
                "Lifestyle › Well-being",
                "Lifestyle › Travel",
                "Lifestyle › Household",
                "Lifestyle › Just for fun",
                "Make Chrome yours › Accessibility",
                "Make Chrome yours › Functionality & UI",
                "Make Chrome yours › Privacy & security"
              ]
            }
          },
          "firefoxCategories": {
            "title": "Firefox categories",
            "type": "array",
            "description": "Firefox Add-ons categories. Each gives ALL extensions of the category (up to Mozilla's limit of 25,000 per category), most-used first unless you pick another sort.",
            "items": {
              "type": "string",
              "enum": [
                "alerts-updates",
                "appearance",
                "bookmarks",
                "download-management",
                "feeds-news-blogging",
                "games-entertainment",
                "language-support",
                "other",
                "photos-music-videos",
                "privacy-security",
                "search-tools",
                "shopping",
                "social-communication",
                "tabs",
                "web-development"
              ],
              "enumTitles": [
                "Alerts & Updates",
                "Appearance",
                "Bookmarks",
                "Download Management",
                "Feeds, News & Blogging",
                "Games & Entertainment",
                "Language Support",
                "Other",
                "Photos, Music & Videos",
                "Privacy & Security",
                "Search Tools",
                "Shopping",
                "Social & Communication",
                "Tabs",
                "Web Development"
              ]
            }
          },
          "extensionIds": {
            "title": "🔗 Extension IDs or links",
            "type": "array",
            "description": "Specific extensions. Chrome: the 32-letter ID (e.g. \"kbfnbcaeplbcioakkpcpgfkobkghlhen\") or the chromewebstore.google.com link. Firefox: the add-on slug (e.g. \"ublock-origin\"), its ID or GUID, or the addons.mozilla.org link. Category links work too.",
            "items": {
              "type": "string"
            }
          },
          "fullCatalog": {
            "title": "Full catalog",
            "type": "boolean",
            "description": "Scrape the whole store(s) instead of a search: Chrome — every extension in the store's public index (≈375,000 pages, so set Max items and Timeout to match; with Search terms, only names that match); Firefox — every extension of every category, most-used first. Large runs take hours.",
            "default": false
          },
          "maxItems": {
            "title": "Max extensions",
            "minimum": 0,
            "maximum": 500000,
            "type": "integer",
            "description": "Maximum number of extensions saved for the whole run, shared fairly between your searches and categories. 0 = no limit.",
            "default": 100
          },
          "includeDetails": {
            "title": "Full Chrome details",
            "type": "boolean",
            "description": "Chrome categories list extensions with users, rating, version and permissions. Keep this on to also read each extension's store page: last update, size, languages, developer, support/privacy links, data-handling disclosures, full description and screenshots (charged as \"Chrome page read\"). Chrome searches, IDs and the full catalog always read the page. Firefox rows are always complete.",
            "default": true
          },
          "minUsers": {
            "title": "Minimum users",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep extensions with at least this many users (Chrome: users shown on the store; Firefox: average daily users). Leave empty for all."
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "string",
            "description": "Only keep extensions rated at least this (0–5), e.g. \"4\" or \"4.5\". Leave empty for all."
          },
          "updatedWithinDays": {
            "title": "Updated within (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep extensions updated in the last N days. Leave empty for all."
          },
          "firefoxSort": {
            "title": "Firefox sort",
            "enum": [
              "auto",
              "users",
              "rating",
              "updated",
              "created",
              "trending",
              "downloads",
              "relevance"
            ],
            "type": "string",
            "description": "Order of Firefox results. Auto = relevance for search terms, most users for categories and the catalog.",
            "default": "auto"
          },
          "compareWithPreviousRun": {
            "title": "Compare with the previous run",
            "type": "boolean",
            "description": "Track growth: each row gets the users, rating and version from the previous run with the same input, the change in users, whether the version changed, and whether the extension is new since then. Ideal for a daily or weekly schedule. The memory is kept in a key-value store named \"browser-extension-store-scraper-state\" in your account.",
            "default": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of names and descriptions, e.g. \"en\", \"de\", \"fr\", \"es\", \"ja\", \"pt-BR\". Extensions that are not translated stay in their own language.",
            "default": "en"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy (datacenter) is the default and comes with every Apify plan. Runs always start on datacenter IPs (also when you pick residential here); if a store keeps refusing them, the run switches to residential proxies by itself when your account has them. Your own proxy URLs are used as they are.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}