VK Posts Scraper
Pricing
from $2.50 / 1,000 post scrapeds
VK Posts Scraper
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.
Pricing
from $2.50 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Scrape public posts from VK (VKontakte) community walls, user walls, and token-backed keyword search. Give it a handle, a profile/community URL, an owner id, or a single-post URL, and get back one clean JSON record per post: text, author, date, likes, reposts, comments, views, attachments, and the canonical post URL. Built MCP-ready for AI agents and automation pipelines.
What you can do with it
- Social-media monitoring — track what a brand, community, or public figure posts on VK.
- Market & audience research — measure engagement (likes/reposts/comments/views) across CIS communities.
- OSINT & investigation — pull a public wall's history into structured data.
- Content & trend analysis — feed VK posts into dashboards, LLMs, or a data warehouse.
When to use this actor
Use it when you need posts from a public VK wall or a VK keyword search as structured rows. It is not for VK videos, profiles, member lists, private content, or login-only pages — those are separate jobs. For a single post or keyword search, pass a VK access token.
Output
One record per post:
| Field | Description |
|---|---|
postId, ownerId | VK identifiers (ownerId is negative for communities) |
postUrl | Canonical link, e.g. https://vk.com/wall-1_123456 |
type | post or repost |
isPinned | Whether the post is pinned to the wall |
text | Post body text |
date | ISO 8601 timestamp (e.g. 2024-01-15T09:30:00.000Z) |
timestamp | Unix seconds |
authorName, authorScreenName, authorUrl, authorId, authorType | Author identity (user or community) |
likes, reposts, comments, views | Engagement counts |
attachments | Array of { type, url, title? } — photos, videos, links, docs, audio, polls |
repostOf | The original post when type is repost |
source | The input target this post came from |
Example record
{"postId": 456239017,"ownerId": 1,"postUrl": "https://vk.com/wall1_456239017","type": "post","isPinned": false,"text": "Hello world","date": "2024-01-15T09:30:00.000Z","timestamp": 1705311000,"authorName": "Pavel Durov","authorScreenName": "durov","authorUrl": "https://vk.com/durov","authorType": "user","likes": 48213,"reposts": 1207,"comments": 9032,"views": 2841992,"attachments": [{ "type": "photo", "url": "https://sun9-...userapi.com/..." }],"repostOf": null,"source": "durov"}
Pricing
Pay per event + usage: at the default 2 GB memory, $0.005 per post + a $0.00005 actor-start fee. A 50-post run has at most $0.25 in post event charges at the default memory. The maxPosts cap is a hard post-event ceiling, and skipped targets are never billed as posts. Apify compute and proxy usage are passed through separately. If you override run memory, Apify scales event counts by allocated GB.
Input
| Field | Required | Description |
|---|---|---|
targets | one of these | List of handles, URLs, owner ids, or post URLs (auto-detected) |
searchQuery | one of these | Keyword search across VK posts (requires vkAccessToken) |
maxPosts | no | Total cap across all targets (default 100, runtime max 1000) |
maxPostsPerTarget | no | Per-wall cap (default 50, runtime max 500) |
vkAccessToken | no | Optional VK API token to unlock the official-API path + keyword search |
proxyCountry | no | Residential proxy country (default RU) |
Minimal input
{ "targets": ["durov"], "maxPosts": 50 }
With a VK token (richer data + keyword search)
{"searchQuery": "machine learning","vkAccessToken": "<your VK service token>","maxPosts": 100}
How it works — two paths
- Tokenless (default). VK is a JavaScript-only single-page app, so the actor renders public walls in Camoufox (an anti-detect Firefox) over Apify Residential proxy in a CIS country, then parses the rendered posts. No login, no token.
- Token (recommended for reliability & exact data). If you supply a free VK service access token (create one at a VK app dashboard on dev.vk.com), the actor uses the official VK API (
wall.get,wall.getById,newsfeed.search) for exact engagement counts, exact ISO dates, comment/view counts, deeper pagination, single-post mode, and keyword search.
The output schema is identical for both paths, so you can start tokenless and add a token later without changing your pipeline.
Reliability — please read
VK runs aggressive anti-bot protection (a JS redirect/login challenge tied to IP reputation). This has real consequences for the tokenless mode:
- It works best for low-volume, occasional scraping of public communities and user walls.
- Under heavy or repeated use, VK may flag the proxy pool and serve its login challenge. If at least one post was collected, the run finishes as
PARTIALwith skipped targets recorded. If every usable route is blocked and zero posts are collected, the run honestly fails asUPSTREAM_FAILED. - Some walls (e.g. certain news organisations) require a login even in a real browser; these are reported as skipped, not scraped.
- Tokenless mode returns text, author, likes, reposts, media, and post URLs reliably; exact dates, comment counts, and view counts are not always available without a token.
For dependable, high-volume, exact-field scraping, use a VK access token — the API path is deterministic and not subject to the browser challenge. A free service token takes a few minutes to create.
Other safeguards (both paths):
- Residential CIS proxy by default — VK throttles datacenter and non-CIS IPs.
- Session rotation + exponential backoff on
403/429/5xx. - Targets that are private, closed, deleted, blocked, or challenged are reported in the
skippedsummary rather than crashing the run. - Cost cap: the actor prints the maximum post-event cost up front, validates each row before writing, charges only after a row is persisted, never charges past
maxPosts, and never charges for skipped targets.
Run summary
Every run writes:
OUTPUT— compact terminal outcome (COMPLETE,PARTIAL,VALID_EMPTY,INVALID_INPUT,UPSTREAM_FAILED, orCONFIG_ERROR), item counts, charge counts, warnings, and dataset ID.RUN_SUMMARY— detailed diagnostics with route attempts, skipped targets, validation errors, cost-cap state, storage IDs, and billing counters.
MCP / AI agents
This actor is designed to be called as a tool by Claude, ChatGPT, and other MCP clients via mcp.apify.com. Input is a small set of named fields; output is flat, stable JSON capped per run. Errors return actionable text (what to change, with an example).
Use for AI agents
Scrape posts from a VK (VKontakte) community or user wall, or run a VK keyword search. Returns one record per post with text, author, date, likes, reposts, views, comments, attachments, and post URL. Use for social monitoring, CIS-audience research, and OSINT. Not for VK videos, profiles, or member lists.
Legal
Use this actor only for data that is publicly accessible and in compliance with VK's Terms of Service, applicable laws, and data-protection regulations (including GDPR where relevant). You are responsible for how you collect and use the data. Do not use it to scrape private content or to harass, profile, or harm individuals. This actor does not bypass authentication and does not access login-gated content.