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

4

Total users

1

Monthly active users

10 days ago

Last modified

Share

VK Posts Scraper collects public VK wall posts and token-backed keyword search results into one dataset record per post. It accepts VK handles, community or profile URLs, owner IDs, wall post URLs, or a keyword search string with a VK access token. Each record includes post text, author details, engagement counts, media attachments, and the canonical post URL. The actor is usable through Apify MCP for structured VK post retrieval in automation workflows.

Best fit and connected workflows

Use this actor when your workflow starts with a public VK wall, a specific post URL, or a token-backed keyword search across public posts, and you want structured rows for downstream analysis.

It fits well when you need to:

  • monitor public VK communities or public figures for new wall activity
  • collect engagement signals such as likes, reposts, comments, and views
  • extract post-level evidence for research, OSINT, or compliance review
  • send VK post rows into spreadsheets, databases, BI tools, or LLM pipelines

Focused standalone workflow

This Actor is designed as a focused standalone workflow.

Practical scenario

A research analyst starts with the public handle durov and wants a compact export of recent wall posts. The analyst sets a post cap and runs the actor. The dataset returns fields such as postUrl, authorName, text, date, likes, reposts, comments, views, and source. From those fields, the analyst can decide which posts deserve deeper review, then open the canonical VK links or pass the rows into a reporting pipeline.

Input fields

FieldTypePurpose
targetsarrayVK walls or posts to scrape. Accepts handles, URLs, owner IDs, or wall post URLs. Defaults to durov.
searchQuerystringToken-backed keyword search across public VK posts. Use together with vkAccessToken.
maxPostsintegerTotal cap across all targets and search. Clamped to 1-1000.
maxPostsPerTargetintegerPer-target cap before moving to the next target. Clamped to 1-500 and bounded by maxPosts.
vkAccessTokenstringOptional VK access token for the API-backed path and keyword search.
proxyCountrystringResidential proxy country code used for outbound requests. Default is RU.
saveHtmlSnapshotbooleanSaves rendered VK wall HTML to key-value storage for selector troubleshooting.
proxyConfigurationobjectAdvanced Apify proxy override. Default uses Apify Residential in the selected country.

Focused input example

{
"targets": ["durov", "https://vk.com/team"],
"maxPosts": 25,
"proxyCountry": "RU",
"saveHtmlSnapshot": false
}

Keyword search example

{
"searchQuery": "machine learning",
"vkAccessToken": "<your VK service token>",
"maxPosts": 100
}

Output fields

The actor writes one validated dataset item per VK post. Each item follows the schema below.

FieldTypeMeaning
postIdintegerNumeric VK wall post identifier within the owner wall.
ownerIdintegerVK wall owner ID. Negative values identify communities; positive values identify users.
postUrlstringCanonical desktop VK URL for the post.
typestringRecord type inferred from VK data, usually post or repost.
isPinnedbooleanWhether VK marks the post as pinned to the wall.
textstringVisible post body text.
datestring or nullISO 8601 timestamp when available.
timestampinteger or nullUnix seconds when VK exposes them.
authorIdinteger or nullNumeric VK author ID.
authorNamestring or nullDisplay name of the author.
authorScreenNamestring or nullVK screen name when available.
authorUrlstring or nullCanonical VK author URL when available.
authorTypestring or nullAuthor type, such as user or community, when inferred.
likesintegerLikes shown for the post.
repostsintegerReposts shown for the post.
commentsinteger or nullComment count when exposed.
viewsinteger or nullView count when exposed.
attachmentsarrayVisible media and link attachments.
repostOfobject or nullOriginal post metadata when the record is a repost.
signerIdinteger or nullVK signer ID for community posts when exposed.
sourcestringInput target or search query that produced the row.

Illustrative dataset 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,
"authorId": 1,
"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-1.userapi.com/example.jpg",
"title": null
}
],
"repostOf": null,
"signerId": null,
"source": "durov"
}

How it works

The actor uses a JS Playwright Camoufox template and writes validated dataset rows plus key-value store records for execution summary data.

Implementation facts from the live contract:

  • the default route uses Apify Residential proxy in the selected country
  • tokenless scraping is available for public walls
  • VK access token mode is available for API-backed collection and keyword search
  • the actor writes OUTPUT and RUN_SUMMARY records in key-value storage
  • the run summary includes route, validation, billing, and skipped-target diagnostics
  • one validated dataset record corresponds to one returned VK post

Evergreen pricing

This actor uses Pay per event pricing plus Apify platform usage.

  • The primary billable event is Post scraped.
  • There is also a charged actor-start event.
  • Apify compute and proxy usage are billed separately through your Apify platform settings.
  • For current pricing details, open the live Pricing tab in Apify.

Example in words: if a run returns fifty posts, the execution includes fifty post-scraped events plus one actor-start event, and Apify platform usage is billed separately.

Use with AI agents (MCP)

This actor is available as an Apify Actor usable through Apify MCP. It is a tool for retrieving structured VK post records from a defined input set.

Exact Actor identity: khadinakbar/vk-posts-scraper

Tool description: submit structured inputs such as targets, searchQuery, and maxPosts, then read back normalized post records from the dataset.

Collect the latest public posts from durov and return each record with post URL, author, date, engagement counts, attachments, and source. Use the result set for a weekly monitoring brief.

Output interpretation:

  • Use postUrl as the canonical post link.
  • Use source to trace which target or search query produced the row.
  • Use repostOf to distinguish original posts from reposted content.
  • Use comments and views as nullable fields when VK exposes them.
  • For pagination and scope, maxPosts is the total run cap and maxPostsPerTarget limits how many posts are taken from each target.
  • For cost guidance, each returned post is one billable post-scraped event.

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('khadinakbar/vk-posts-scraper').call({
targets: ['durov'],
maxPosts: 10,
proxyCountry: 'RU',
});
const datasetId = run.defaultDatasetId;
const { items } = await client.dataset(datasetId).listItems();
console.log(items);

Best results and outcome guidance

Use a clear target list or a single search query, then set maxPosts to the number of rows you want to review. If you need wall coverage, pass handles, URLs, owner IDs, or wall post URLs in targets. If you need token-backed keyword search across public VK posts, provide searchQuery together with vkAccessToken.

maxPostsPerTarget is useful when you want to distribute a larger run across several communities. saveHtmlSnapshot is available when you want rendered HTML stored for troubleshooting selectors. The proxyCountry field controls the outbound proxy region.

Design note

I found that the live dataset contract includes source on every row, which makes it straightforward to trace each post back to the input target or keyword query that produced it.

FAQ

Can I send wall handles, URLs, and owner IDs together?

Yes. The targets field accepts a mixed list of handles, URLs, owner IDs, and wall post URLs.

When should I use searchQuery?

Use searchQuery when you want token-backed keyword search across public VK posts. Pair it with vkAccessToken.

What is returned for each post?

Each dataset item includes the post URL, identifiers, text, author details, engagement counts, attachments, repost metadata, and the input source.

Can this actor process a single post URL?

Yes. Single-post URLs are accepted in targets, and token-backed API collection is also available.

Where can I review execution diagnostics?

Check the OUTPUT and RUN_SUMMARY records in key-value storage after the execution finishes.

Responsible use

Use this actor only for public VK data that you are entitled to collect and process. Review VK terms, applicable laws, and your own compliance requirements before running large or repeated jobs. When using the output, respect privacy, data-protection, and security obligations that apply to your use case.