{
  "openapi": "3.0.1",
  "info": {
    "title": "VK Posts Scraper",
    "description": "Scrape public VK wall posts and token-backed keyword search. Use for social monitoring, CIS research, and OSINT. Not for VK profiles, videos, member lists, or private content. Returns one record per post with text, author, engagement, media, URL. $0.005/post + $0.00005 start.",
    "version": "1.0",
    "x-build-id": "ZKjyUd0IF02cORBIe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~vk-posts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-vk-posts-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-posts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-vk-posts-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-posts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-vk-posts-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 targets",
            "type": "array",
            "description": "VK walls or posts to scrape. Accepts handles, URLs, owner IDs, or wall post URLs such as 'durov', 'https://vk.com/team', '-22822305', or 'https://vk.com/wall-1_123456'. Defaults to ['durov'] when no input is supplied. NOT a keyword search field; use searchQuery for token-backed keyword search.",
            "default": [
              "durov"
            ],
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search query (token only)",
            "type": "string",
            "description": "Free-text keyword to search across public VK posts. Example: 'machine learning'. Defaults to blank and is ignored unless vkAccessToken is supplied, because VK newsfeed search is token-only. NOT a VK wall URL or handle.",
            "default": ""
          },
          "maxPosts": {
            "title": "Max posts (total)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on total posts returned across all targets and search. Example: 50 returns at most 50 billable post rows. Defaults to 100 and the runtime clamps the value to 1-1000. NOT a page count; one returned VK post equals one billable event.",
            "default": 100
          },
          "maxPostsPerTarget": {
            "title": "Max posts per target",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Cap on posts taken from each individual VK wall before moving to the next target. Example: 25 spreads a 100-post budget over several communities. Defaults to 50 and is clamped to maxPosts and 500. NOT a global run cap; use maxPosts for that.",
            "default": 50
          },
          "vkAccessToken": {
            "title": "VK access token (optional)",
            "type": "string",
            "description": "Optional VK API service or user access token. Example: a service token created in the VK app dashboard at dev.vk.com. Defaults to blank, which uses tokenless public-wall scraping and disables keyword search. 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": "Residential proxy country code used to reach VK. Example: 'RU'. Defaults to RU because VK commonly throttles datacenter and non-CIS IPs. NOT a content-language filter; it only controls the outbound proxy region.",
            "default": "RU"
          },
          "saveHtmlSnapshot": {
            "title": "Save HTML snapshot",
            "type": "boolean",
            "description": "Saves rendered VK wall HTML to the key-value store for selector troubleshooting. Example: true writes DEBUG_DOM_<slug> records. Defaults to false for normal runs. NOT needed for API-token runs or routine scraping.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Advanced Apify proxy override. Example: keep the default Residential proxy unless you know your target needs another group. Defaults to Apify Residential in proxyCountry. NOT required for normal runs; changing this can reduce 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}