VK Posts Scraper avatar

VK Posts Scraper

Pricing

Pay per event

Go to Apify Store
VK Posts Scraper

VK Posts Scraper

Scrape public VK profile and community posts with text, post URLs, views, likes, reposts, and public attachment links. No login needed.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Extract public VK wall posts from user profiles and communities.

Use this actor when you need structured VK post feeds for monitoring, research, OSINT, media tracking, or recurring reports.

The actor works with public VK pages such as https://vk.com/durov and https://vk.com/telegram.

It does not require login cookies.

It does not scrape private content.

It focuses on public posts and public engagement signals.


What does VK Posts Scraper do?

VK Posts Scraper collects public wall posts from VK profiles and communities.

For each post, it can return:

  • ✅ source VK URL
  • ✅ VK profile or community name
  • ✅ profile or owner ID when exposed
  • ✅ post ID
  • ✅ canonical VK post URL
  • ✅ post text
  • ✅ raw public date label
  • ✅ likes count
  • ✅ reposts count
  • ✅ comments count when exposed by VK
  • ✅ views count
  • ✅ public attachment links and images when visible
  • ✅ scrape timestamp

The output is saved as clean dataset rows.

You can export the data as JSON, CSV, Excel, XML, or RSS from Apify.


Who is it for?

Social media monitoring teams

Track public VK pages for announcements, narratives, campaigns, and engagement trends.

OSINT and risk analysts

Collect public posts from watchlists of VK communities or public figures.

PR and reputation agencies

Monitor public VK channels for brand mentions, campaign updates, and viral posts.

Journalists and researchers

Create structured archives of public VK posts for investigation and citation.

Data teams

Feed VK post data into dashboards, alerting systems, BI tools, or enrichment pipelines.


Why use this VK scraper?

VK pages are difficult to process manually at scale.

Copying posts by hand is slow.

Screenshots are hard to search.

Browser automation is expensive.

This actor uses a lightweight HTTP extraction strategy for public mobile VK pages.

That keeps runs faster and cheaper than a full browser workflow.

It also gives you repeatable structured output.


What VK pages are supported?

The actor supports public VK profile and community URLs.

Examples:

https://vk.com/durov
https://vk.com/telegram
https://vk.com/some_public_community

Private pages are not supported.

Login-only content is not supported.

Deleted, restricted, or region-blocked pages may return no posts.


Data fields

FieldDescription
sourceUrlVK URL used by the actor for extraction
profileIdVK owner ID when public metadata exposes it
profileNamePublic profile or community name
postIdVK wall post ID
postUrlCanonical URL for the post
textPublic post text
publishedAtISO date when VK exposes one
publishedAtRawRaw VK date label as displayed publicly
attachmentsPublic links/images discovered in the post body
likesCountNumber of likes when visible
commentsCountNumber of comments when visible
repostsCountNumber of reposts/shares when visible
viewsCountNumber of views when visible
scrapedAtTimestamp when the actor saved the record

How much does it cost to scrape VK posts?

VK Posts Scraper uses pay-per-event pricing.

You pay a small start fee per run and a per-result fee for each VK post saved.

The default input is intentionally small so first runs stay inexpensive.

For larger monitoring jobs, set maxPostsPerUrl to the amount you need.

For recurring jobs, schedule the actor and keep limits focused on recent posts.


How to scrape VK posts

  1. Open the actor on Apify.
  2. Add one or more public VK URLs to Public VK profile or community URLs.
  3. Set Maximum posts per VK URL.
  4. Choose whether to include attachment links.
  5. Click Start.
  6. Download the dataset or connect it to an integration.

Input example

{
"startUrls": [
{ "url": "https://vk.com/durov" },
{ "url": "https://vk.com/telegram" }
],
"maxPostsPerUrl": 25,
"includeAttachments": true
}

Input fields

startUrls

Public VK profile or community URLs.

Use URLs from vk.com.

The actor normalizes them to public mobile VK pages internally.

maxPostsPerUrl

Maximum number of posts to save from each VK URL.

Use a low number for tests.

Use a higher number for historical collection.

includeAttachments

When enabled, the actor saves lightweight public attachment links and image URLs visible in VK mobile HTML.

Disable this if you only need text and engagement counts.


Output example

{
"sourceUrl": "https://m.vk.com/durov?al=1",
"profileId": "1",
"profileName": "Pavel Durov",
"postId": "1_2442097",
"postUrl": "https://vk.com/wall1_2442097",
"text": "Post text...",
"publishedAtRaw": "8 May 2018",
"likesCount": 242000,
"repostsCount": 14000,
"viewsCount": 15600000,
"attachments": [],
"scrapedAt": "2026-07-10T00:00:00.000Z"
}

Tips for better results

Use public VK URLs only.

Start with a small limit, then increase it after checking the output.

Use multiple start URLs for watchlists.

Schedule recurring runs for monitoring.

Deduplicate by postId in your downstream system if you run the same source repeatedly.

Keep includeAttachments enabled for research archives.

Disable includeAttachments when you only need engagement metrics.


Integrations

You can connect VK Posts Scraper to common Apify integrations.

Google Sheets

Send new VK posts into a spreadsheet for review.

Slack

Notify a channel when a monitored VK page publishes new public posts.

Webhooks

Trigger your own API after each run finishes.

Make or Zapier

Build no-code workflows around VK monitoring.

BI dashboards

Export CSV or JSON into dashboards and reporting systems.


API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/vk-posts-scraper').call({
startUrls: [{ url: 'https://vk.com/durov' }],
maxPostsPerUrl: 25,
includeAttachments: true,
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/vk-posts-scraper').call(run_input={
'startUrls': [{'url': 'https://vk.com/durov'}],
'maxPostsPerUrl': 25,
'includeAttachments': True,
})
print(run['defaultDatasetId'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~vk-posts-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"startUrls":[{"url":"https://vk.com/durov"}],"maxPostsPerUrl":25,"includeAttachments":true}'

MCP usage

Use this actor from MCP-compatible clients through Apify MCP Server.

MCP tool URL:

https://mcp.apify.com/?tools=automation-lab/vk-posts-scraper

Add the Apify MCP server in Claude Code with the required HTTP transport:

$claude mcp add --transport http apify-vk-posts https://mcp.apify.com/?tools=automation-lab/vk-posts-scraper

For Claude Desktop, Cursor, and VS Code, add the same Apify MCP Server URL in the app's MCP/server settings and choose HTTP transport if the client asks for a transport type.

Example MCP JSON configuration:

{
"mcpServers": {
"apify-vk-posts": {
"url": "https://mcp.apify.com/?tools=automation-lab/vk-posts-scraper"
}
}
}

After setup, ask your MCP client to run the automation-lab/vk-posts-scraper tool with the input fields shown above.

Example prompt ideas for MCP

Use prompts like these after connecting the Apify MCP server.

Use the automation-lab/vk-posts-scraper MCP tool to collect the latest 50 public posts from https://vk.com/durov and summarize the main topics.
Run the VK Posts Scraper MCP tool for these VK community URLs, export the dataset, and identify posts with the highest viewsCount.
Use MCP to run VK Posts Scraper for my public VK watchlist and show posts that received more than 10,000 views.

Public-only policy

This actor is designed for public VK pages.

It does not log in.

It does not bypass private access controls.

It does not accept cookies.

It does not scrape private messages.

It does not scrape closed community member-only content.


Legality

You are responsible for using scraped data lawfully.

Only scrape public pages you are allowed to access.

Respect applicable privacy, platform, and data protection laws.

Do not use the actor for harassment, spam, credential collection, or unauthorized surveillance.

For compliance-sensitive use cases, consult your legal team.


FAQ and troubleshooting

Why did a VK URL return zero posts?

The page may be private, deleted, restricted, empty, or not exposing posts in public mobile HTML.

Try opening the URL in an incognito browser without logging in.

If VK asks you to log in, the actor cannot access that content.

Why is commentsCount missing?

VK does not expose every engagement metric for every post in the public mobile HTML.

The actor saves counts only when the public page exposes them.

Why is the date in publishedAtRaw?

VK localizes date labels.

The raw label preserves what VK exposed publicly.

Use scrapedAt and postUrl for audit trails.


Explore related actors from Automation Lab:


Limitations

VK can change its public HTML at any time.

Some metrics may be hidden or localized.

Some content may require login.

Attachment extraction is best-effort and lightweight.

The actor is optimized for public post monitoring, not account takeover, scraping private data, or downloading media libraries.


Changelog

See .actor/CHANGELOG.md for release notes.


Support

If a public VK page is accessible without login but this actor cannot extract it, open an Apify issue with:

  • the VK URL
  • your input JSON
  • run ID
  • expected result
  • actual output

This helps reproduce and fix extraction changes quickly.