{
  "openapi": "3.0.1",
  "info": {
    "title": "VK Groups Scraper",
    "description": "Scrape public VK (VKontakte) groups by URL, handle, ID, or keyword. Use for CIS social research and community lead mapping. Not for members, posts, private groups, or user profiles. Returns name, URL, members, activity, links, avatar, source. $0.0055/group + $0.00005 start.",
    "version": "1.0",
    "x-build-id": "c9wPUzxzjxJvy1fEc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~vk-groups-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-vk-groups-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/khadinakbar~vk-groups-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-vk-groups-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/khadinakbar~vk-groups-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-vk-groups-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": {
          "targets": {
            "title": "VK group targets",
            "type": "array",
            "description": "Use this when you already know the VK community URL, handle, or numeric group ID. Accepts values such as 'vk', 'https://vk.com/vkvideo', 'club1', 'public1', or '-1'. Defaults to ['vk'] only when no targets or search queries are supplied. Not for VK user profiles, member lists, wall posts, or video URLs.",
            "items": {
              "type": "string"
            },
            "default": [
              "vk"
            ]
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Use this when you want to discover VK communities by keyword. Enter one phrase per line, for example 'gaming' or 'маркетинг'. Defaults to an empty list; with vkAccessToken the Actor uses VK groups.search, otherwise it tries public web search. Not a place for VK URLs; put known communities in targets.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxGroups": {
            "title": "Max groups",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Use this to cap the total number of billable group records saved across targets and searches. Example: 50 returns at most 50 group rows. Defaults to 50 and is clamped to 1-1000 at runtime. Not a page count; each saved VK group is one billable event.",
            "default": 50
          },
          "maxGroupsPerSearch": {
            "title": "Max groups per search",
            "minimum": 1,
            "maximum": 250,
            "type": "integer",
            "description": "Use this to limit how many communities each keyword can add before the Actor moves to the next search query. Example: 25 keeps broad terms from consuming the whole run. Defaults to 25 and is clamped to maxGroups and 250. Not used for direct targets.",
            "default": 25
          },
          "vkAccessToken": {
            "title": "VK access token",
            "type": "string",
            "description": "Use this when you have a VK API service or user access token and want structured API results, especially for keyword search. Paste only the token string, for example one generated from a VK app at dev.vk.com. Defaults to blank, which uses public tokenless browsing where possible. Not your VK password, login cookie, or private account session."
          },
          "proxyCountry": {
            "title": "Proxy country",
            "enum": [
              "RU",
              "BY",
              "KZ",
              "UA",
              "UZ",
              "DE",
              "US"
            ],
            "type": "string",
            "description": "Use this to choose the Residential proxy country used to reach VK. Example: 'RU' is recommended because VK often throttles datacenter and non-CIS routes. Defaults to RU. Not a content-language filter; it only controls network egress.",
            "default": "RU"
          },
          "includeRawData": {
            "title": "Include raw VK data",
            "type": "boolean",
            "description": "Use this when you need the raw VK API group object for debugging or custom downstream parsing. Defaults to false for smaller, cleaner exports. Browser-route rows include only a small raw diagnostic object because VK HTML is too large for normal datasets. Not needed for spreadsheet exports or MCP clients.",
            "default": false
          },
          "saveHtmlSnapshot": {
            "title": "Save HTML snapshot",
            "type": "boolean",
            "description": "Use this when troubleshooting VK public-page markup or a suspected selector drift. Example: true writes DEBUG_GROUP_DOM and DEBUG_GROUP_SEARCH records to the key-value store. Defaults to false for normal runs. Not needed when vkAccessToken is supplied and the API route succeeds.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Use this only when you need to override the default Apify Residential proxy. Example: keep the default Residential proxy unless you have a tested VK route. Defaults to Apify Residential in proxyCountry. Not required for normal runs; weak proxies can lower VK reliability.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}