VK Posts Scraper avatar

VK Posts Scraper

Pricing

from $2.50 / 1,000 post scrapeds

Go to Apify Store
VK Posts Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

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:

FieldDescription
postId, ownerIdVK identifiers (ownerId is negative for communities)
postUrlCanonical link, e.g. https://vk.com/wall-1_123456
typepost or repost
isPinnedWhether the post is pinned to the wall
textPost body text
dateISO 8601 timestamp (e.g. 2024-01-15T09:30:00.000Z)
timestampUnix seconds
authorName, authorScreenName, authorUrl, authorId, authorTypeAuthor identity (user or community)
likes, reposts, comments, viewsEngagement counts
attachmentsArray of { type, url, title? } — photos, videos, links, docs, audio, polls
repostOfThe original post when type is repost
sourceThe 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

FieldRequiredDescription
targetsone of theseList of handles, URLs, owner ids, or post URLs (auto-detected)
searchQueryone of theseKeyword search across VK posts (requires vkAccessToken)
maxPostsnoTotal cap across all targets (default 100, runtime max 1000)
maxPostsPerTargetnoPer-wall cap (default 50, runtime max 500)
vkAccessTokennoOptional VK API token to unlock the official-API path + keyword search
proxyCountrynoResidential proxy country (default RU)

Minimal input

{ "targets": ["durov"], "maxPosts": 50 }
{
"searchQuery": "machine learning",
"vkAccessToken": "<your VK service token>",
"maxPosts": 100
}

How it works — two paths

  1. 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.
  2. 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 PARTIAL with skipped targets recorded. If every usable route is blocked and zero posts are collected, the run honestly fails as UPSTREAM_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 skipped summary 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, or CONFIG_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.

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.