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
4
Total users
1
Monthly active users
10 days ago
Last modified
Categories
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
| Field | Type | Purpose |
|---|---|---|
targets | array | VK walls or posts to scrape. Accepts handles, URLs, owner IDs, or wall post URLs. Defaults to durov. |
searchQuery | string | Token-backed keyword search across public VK posts. Use together with vkAccessToken. |
maxPosts | integer | Total cap across all targets and search. Clamped to 1-1000. |
maxPostsPerTarget | integer | Per-target cap before moving to the next target. Clamped to 1-500 and bounded by maxPosts. |
vkAccessToken | string | Optional VK access token for the API-backed path and keyword search. |
proxyCountry | string | Residential proxy country code used for outbound requests. Default is RU. |
saveHtmlSnapshot | boolean | Saves rendered VK wall HTML to key-value storage for selector troubleshooting. |
proxyConfiguration | object | Advanced 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.
| Field | Type | Meaning |
|---|---|---|
postId | integer | Numeric VK wall post identifier within the owner wall. |
ownerId | integer | VK wall owner ID. Negative values identify communities; positive values identify users. |
postUrl | string | Canonical desktop VK URL for the post. |
type | string | Record type inferred from VK data, usually post or repost. |
isPinned | boolean | Whether VK marks the post as pinned to the wall. |
text | string | Visible post body text. |
date | string or null | ISO 8601 timestamp when available. |
timestamp | integer or null | Unix seconds when VK exposes them. |
authorId | integer or null | Numeric VK author ID. |
authorName | string or null | Display name of the author. |
authorScreenName | string or null | VK screen name when available. |
authorUrl | string or null | Canonical VK author URL when available. |
authorType | string or null | Author type, such as user or community, when inferred. |
likes | integer | Likes shown for the post. |
reposts | integer | Reposts shown for the post. |
comments | integer or null | Comment count when exposed. |
views | integer or null | View count when exposed. |
attachments | array | Visible media and link attachments. |
repostOf | object or null | Original post metadata when the record is a repost. |
signerId | integer or null | VK signer ID for community posts when exposed. |
source | string | Input 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
OUTPUTandRUN_SUMMARYrecords 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
durovand 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
postUrlas the canonical post link. - Use
sourceto trace which target or search query produced the row. - Use
repostOfto distinguish original posts from reposted content. - Use
commentsandviewsas nullable fields when VK exposes them. - For pagination and scope,
maxPostsis the total run cap andmaxPostsPerTargetlimits how many posts are taken from each target. - For cost guidance, each returned post is one billable
post-scrapedevent.
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.