VK Wall Posts Scraper | Парсер ВКонтакте: 20 Posts in 9s avatar

VK Wall Posts Scraper | Парсер ВКонтакте: 20 Posts in 9s

Pricing

from $1.00 / 1,000 posts

Go to Apify Store
VK Wall Posts Scraper | Парсер ВКонтакте: 20 Posts in 9s

VK Wall Posts Scraper | Парсер ВКонтакте: 20 Posts in 9s

Scrape public VK (VKontakte) wall posts from communities, public pages and public profiles: text, date, likes, shares, views, photos, videos and links, with the community name and member count. Date filter. No login, no token, no browser. Pay per post.

Pricing

from $1.00 / 1,000 posts

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

9 hours ago

Last modified

Share

200 VK posts in 14 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors. This actor ranks #1 for "vk wall" in Apify Store search.

Why choose this actor?

  • Any public VK wall, newest posts first. Give communities, public pages or public profiles and get one row per post: the full text, the date, likes, shares, views, photos, videos, clips, links and articles, and on every row the community's name, type, exact member count and total posts. Our proof run read 200 posts from 4 walls in 14 seconds. No VK account, no access token, no cookies.
  • Only the posts you want, only the posts you pay for. Set "Posted within the last N days" and the actor stops reading a wall at the first older post, so older posts are neither read nor charged. A daily schedule with 1 day gives you each day's new posts.
  • Nothing charged for walls you cannot get. Names that do not exist, closed or private communities, closed profiles, deleted pages, empty walls and refused pages cost nothing, and the run summary says why for each one.

Run it on Apify

Part of The Mine Works Social media and video family: Threads Scraper, Reddit Scraper, Threads Search Scraper, Instagram Profile Scraper, Instagram Followers & Following, Reddit Search Scraper.

Try it in one minute

Paste this input and press Start. It returns the 10 newest posts of Habr's VK page:

{
"communities": ["habr"],
"maxPostsPerCommunity": 10
}

You can name a wall in any of these ways, and mix them in one run:

  • A link on vk.com, vk.ru or m.vk.com: https://vk.com/rbc, vk.ru/habr. A link to one of the community's posts works too: its wall is read.
  • A screen name: rbc or @rbc.
  • A numeric community id: 25232578, -25232578, club25232578 or public25232578.
  • A personal page: https://vk.com/durov or id1.

The same wall given twice is read once.

Apify's free plan includes $5 of credit every month, which covers about 2,400 posts at this actor's Free plan price.

Copy to your AI assistant

themineworks/vk-wall-posts-scraper on Apify. Returns public VK (VKontakte) wall posts from communities, public pages and public profiles, newest first: text, date, likes, reposts, views, attachments (photos, videos, clips, links, articles), pinned and repost flags, plus the community name, type, member count and total posts on every row. Call ApifyClient("TOKEN").actor("themineworks/vk-wall-posts-scraper").call(run_input={"communities": ["rbc", "https://vk.com/habr"], "maxPostsPerCommunity": 50, "postedWithinDays": 7}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: communities (VK links, screen names, numeric ids or personal pages). Optional: maxPostsPerCommunity (default 50, 1 to 5,000), postedWithinDays (1 to 3,650; empty means no date filter). Views above 999 are rounded by VK; check views_is_rounded. Skip rows that have "_type": "info". Full spec: GET https://api.apify.com/v2/acts/themineworks~vk-wall-posts-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations

Key features

  • Up to 29 fields per post: post id and link, community name, screen name, id, type, link, member count and total posts, date and its precision, text, likes, reposts, views and whether they were rounded, attachments, pinned and repost flags, the original author, link and text of a repost, co-authors of a joint post, the author of a member post, and the post's place on the wall.
  • Every kind of public wall: public pages, groups, events and public personal pages.
  • Attachments by type: photos, videos, clips, links, articles, documents and others, each with its type, url and a title where VK shows one. In our proof run: 141 photos, 26 videos, 11 links, 10 clips, 4 articles and 2 documents across 200 posts.
  • Up to 200 walls per run and 5,000 posts per wall, 20 posts a page, three walls at a time.
  • Date filter that stops early: postedWithinDays ends a wall at the first post older than your window; an old pinned post does not stop it.
  • Plain HTTP, no browser, 256 MB of memory. A run summary (status per wall, member count, total posts, pages read, attempts, robots.txt state, charges) is saved as the OUTPUT record.

How to use it

Basic: one wall

{
"communities": ["https://vk.com/rbc"],
"maxPostsPerCommunity": 50
}

Several walls at once

{
"communities": ["rbc", "https://vk.com/habr", "lentach", "https://vk.com/durov"],
"maxPostsPerCommunity": 50
}

This is the input of our proof run: 200 posts, 50 from each wall, in 14 seconds.

Daily media monitoring

Media monitoring and PR teams follow what news outlets, brands and public figures post. Keep only the last day and schedule the run every morning (Apify Console, Schedules, Add schedule):

{
"communities": ["rbc", "lentach", "habr"],
"maxPostsPerCommunity": 200,
"postedWithinDays": 1
}

Each wall is read until its posts get older than one day, so you pay only for the day's posts.

Competitor content benchmark

Marketers compare posting rhythm, formats and engagement across communities. Pull the last month of several walls and compare likes, reposts and views by attachment type and by community:

{
"communities": ["habr", "https://vk.com/rbc"],
"maxPostsPerCommunity": 1000,
"postedWithinDays": 30
}

Divide engagement by community_members to compare walls of different sizes.

Research dataset of public posts

Researchers build a corpus of public posts from a list of communities over a date range. Give the list and a window, then export the dataset as CSV or JSON:

{
"communities": ["public25232578", "club20629724"],
"maxPostsPerCommunity": 5000,
"postedWithinDays": 365
}

date_precision tells you how exact each date is, which matters when you bucket posts by hour.

Input parameters

ParameterTypeDefaultWhat it does
communitiesarray of stringsrequired (Console prefill rbc)One wall per line: a vk.com, vk.ru or m.vk.com link (post links work too), a screen name, a numeric community id (25232578, -25232578, club25232578, public25232578) or a personal page (a link or id123). Up to 200 per run; the same wall given twice is read once. startUrls, urls, groups and targets are accepted too.
maxPostsPerCommunityinteger50 (Console prefill 20)Most recent posts per wall, newest first, 1 to 5,000. A pinned post counts as one of them. VK shows 20 posts a page, so 20 is one page and 100 is five.
postedWithinDaysintegernoneOnly posts from the last N days (1 to 3,650). Reading a wall stops at the first post older than that, so older posts are neither returned nor charged. An old pinned post does not stop it.

What data do you get?

One row per post. Fields with no value are left out of the row instead of being sent as null.

The post

  • post_id (a minus sign means a community wall), post_url, position (1 is the top of the wall), is_pinned
  • date (UTC) and date_precision (minute, hour or day, see the FAQ)
  • text (the full post text, with line breaks and emoji)

Engagement

  • likes and reposts (exact), views and views_is_rounded (VK shows views above 999 rounded, as 14K)

Attachments

  • attachments: a list of type (photo, video, clip, link, article, doc and others), url, and a title where VK shows one

Reposts, joint posts and member posts

  • is_repost, repost_of_name, repost_of_post_url, repost_text (a shared post: who wrote the original, its link and its text)
  • co_authors and wall_copy_post_id (a post published jointly by several communities: their names, and the post's id on this wall; post_id is the original)
  • author_name, author_id (only for a post written by someone other than the wall owner, such as a member post on an open group wall)

The wall

  • community_name, community_screen_name, community_id, community_url
  • community_type: page (public page), group, event or user (a personal page)
  • community_members (exact member count, or followers for a personal page), community_posts_total (posts on the wall in total, as VK shows it)

Run context

  • input (the line you gave), scraped_at

Each run also ends with one row that has "_type": "info" and a short message. It is never billed; filter it out by _type.

Stable fields for automations

These fields were present in every one of the 200 posts of our proof run on 1 Oct 2026 (3 public pages and 1 personal page), and their names will not change:

FieldWhat it holds
post_idVK post id, for example -20629724_1687837
post_urlLink to the post on vk.com
community_nameName of the wall's owner
community_screen_nameScreen name, for example habr
community_idNumeric id of the community or person
community_typepage, group, event or user
community_membersMembers or followers, exact
community_posts_totalPosts on the wall in total
dateWhen the post was published (ISO 8601, UTC)
date_precisionminute, hour or day
likesReactions, exact
repostsShares, exact
viewsViews, rounded by VK above 999
is_repostWhether the post shares another post
scraped_atWhen the row was read (ISO 8601)

text was in 193 of the 200 posts (5 of the other 7 were photos or a clip without a caption) and attachments in 172.

Output examples

Real rows from our proof run on 1 Oct 2026, trimmed: long texts are cut with "..." and attachment links shortened.

A public page post with a photo, posted today, so the date is to the minute:

{
"post_id": "-20629724_1687837",
"post_url": "https://vk.com/wall-20629724_1687837",
"community_name": "Хабр",
"community_screen_name": "habr",
"community_id": 20629724,
"community_type": "page",
"community_members": 611043,
"community_url": "https://vk.com/habr",
"community_posts_total": 147754,
"date": "2026-10-01T13:00:00.000Z",
"date_precision": "minute",
"text": "Пишем трассировщик лучей на Brainfuck\n\nВ Brainfuck всего восемь операций и одна лента ячеек, где в каждой помещается число от нуля до 255. ...",
"likes": 5,
"reposts": 5,
"views": 3200,
"views_is_rounded": true,
"attachments": [
{ "type": "photo", "url": "https://sun1-26.vkuserphoto.ru/impg/G2Ho3CHl3ApLrAsE8Ei-nlqRU4XrUlMRrfnGyQ/UhTKlZO4E6k.jpg?size=604x341..." }
],
"is_pinned": false,
"is_repost": false,
"position": 2,
"input": "https://vk.com/habr",
"scraped_at": "2026-10-01T13:54:52.610Z"
}

A post with three photos, from a page with 1.7 million members:

{
"post_id": "-29534144_25081157",
"post_url": "https://vk.com/wall-29534144_25081157",
"community_name": "Лентач",
"community_screen_name": "lentach",
"community_type": "page",
"community_members": 1761433,
"community_posts_total": 79402,
"date": "2026-09-30T13:54:00.000Z",
"date_precision": "minute",
"text": "7-килограммового чихуахуа взяли на службу в Нацгвардию Мексики.\n\nПёсель по кличке Командо теперь тренируется наравне с лабрадорами и овчарками",
"likes": 364,
"reposts": 437,
"views": 56000,
"views_is_rounded": true,
"attachments": [
{ "type": "photo", "url": "https://sun9-15.vkuserphoto.ru/impg/F_Vci2Y5cU12hbGBe40rMfxArPE-NoZIHh2CZA/HGOu2sxsDHA.jpg?size=604x402..." },
{ "type": "photo", "url": "https://sun1-14.vkuserphoto.ru/impg/5Z_UyYa92JhDEUBB0g1V2RdQq8h_whF4KGrmLg/JpsTFQZJp2w.jpg?size=604x402..." },
{ "type": "photo", "url": "https://sun1-15.vkuserphoto.ru/impg/R5FwGb-aty5svB2hEJ3xS40yyis7G6XA8p8zmA/Nm7bK7AsATQ.jpg?size=604x403..." }
],
"position": 11,
"input": "lentach"
}

A clip, with its title:

{
"post_id": "-25232578_18862106",
"post_url": "https://vk.com/wall-25232578_18862106",
"community_name": "РБК",
"community_screen_name": "rbc",
"community_members": 841115,
"date": "2026-09-30T21:45:00.000Z",
"date_precision": "minute",
"text": "Как не купить испорченное вино в магазине",
"likes": 20,
"reposts": 3,
"views": 2400,
"views_is_rounded": true,
"attachments": [
{ "type": "clip", "url": "https://vk.com/clip-25232578_456337701", "title": "Clip by @rbc" }
],
"position": 21,
"input": "rbc"
}

A joint post by two communities, read from one of them. post_id is the original post and wall_copy_post_id its id on this wall:

{
"post_id": "-31891058_56199",
"community_name": "РБК",
"community_screen_name": "rbc",
"date_precision": "minute",
"text": "С 1 октября 2026 года ряд семей сможет получить семейную ипотеку только по ставкам до 12% годовых вместо нынешних 6%. ...",
"co_authors": ["РБК Недвижимость", "РБК"],
"wall_copy_post_id": "-25232578_18857274",
"is_repost": false,
"position": 50,
"input": "rbc"
}

A post from an earlier year on a personal page: VK shows only the day, so date is noon Moscow time and date_precision is day:

{
"post_id": "1_1674764",
"post_url": "https://vk.com/wall1_1674764",
"community_name": "Pavel Durov",
"community_screen_name": "durov",
"community_id": 1,
"community_type": "user",
"community_members": 4515509,
"community_posts_total": 1020,
"date": "2017-04-01T09:00:00.000Z",
"date_precision": "day",
"text": "К 1 апреля в Трижды Краснознаменный завезли новые стикеры.",
"likes": 20403,
"reposts": 160,
"views": 2500000,
"views_is_rounded": true,
"attachments": [
{ "type": "photo", "url": "https://sun9-54.vkuserphoto.ru/impg/c836333/v836333001/30a33/HO2a_wZlzd4.jpg?size=604x604..." }
],
"position": 50,
"input": "https://vk.com/durov"
}

The info row that ends every run (never billed):

{
"_type": "info",
"delivered": 200,
"message": "200 posts delivered. This row is informational: it is never billed.",
"scraped_at": "2026-10-01T13:54:58.840Z"
}

The OUTPUT record gives every wall a status: ok, not_found, private, deactivated, robots_disallowed, no_posts, none_in_date_window, blocked, duplicate, unsupported or skipped (the run was stopping), with its member count, total posts, pages read and refused, and attempts.

Pricing

You pay per post delivered to your dataset, plus a flat $0.005 per run whatever memory you choose. The community details on every row, the date filter, attachments and proxies are included.

EventFree planStarter (Bronze)Scale (Silver)Business (Gold) and above
Post (post-scraped), per post$0.002$0.0017$0.0014$0.001
Same, per 1,000 posts$2.00$1.70$1.40$1.00
Run start (run-start), once per run$0.005$0.005$0.005$0.005

The run start is our own flat event, charged once when the run starts. It is not Apify's per GB start fee, so it stays $0.005 at any memory size. No other pricing change is scheduled.

Never charged:

  • communities or pages that do not exist, closed or private communities, closed profiles, and deleted or blocked pages;
  • names VK's robots.txt asks crawlers not to open;
  • empty walls, and pages VK refused;
  • posts outside your date window;
  • the same post or the same wall given twice;
  • the info row at the end of the dataset, and the OUTPUT run summary.

To cap what a run can cost, set a maximum total charge in the run options. The Pricing tab always shows the rate for your own plan; if this table and the Pricing tab ever disagree, the Pricing tab is right.

FAQ

What does this actor read on VK?

VK (VKontakte) is Russia's largest social network. The actor reads public walls the way VK shows them to a visitor who is not signed in, in two steps. First the community's own page, for example https://vk.ru/rbc, which carries the numeric id, the kind of wall, the exact member count and whether it is closed or deleted; a name VK does not know is answered right there and costs nothing. Then the wall itself, from the view VK's mobile site loads when you scroll (https://m.vk.ru/wall-25232578?al=1, then ?offset=20&al=1 and onwards), 20 posts a page, following the wall's own "show more" link.

How much does it cost to scrape 1,000 VK posts?

1,000 times your plan's price per post, plus $0.005 for the run: $2.00 on the Free plan, down to $1.00 on Business. Posts outside your date window, empty walls and pages that do not exist are not charged.

Do I need a VK account, cookies, an access token or a proxy?

No. The actor never signs in and never uses a token. It reads public walls through Apify's datacenter proxies, which are included in the price. In our proof run on 1 Oct 2026 all 18 requests (robots.txt, 4 community pages, 12 wall pages) were answered on the first try, with no captcha and no login wall. A refused page is tried up to 4 times.

How exact are the dates?

VK shows each post's time as a label in Moscow time, and the actor turns it into UTC. For posts from this year that is to the minute (date_precision: "minute"). For the last few hours VK says "two hours ago", so date is correct to the hour ("hour"). For posts from earlier years VK shows only the day, so date is noon Moscow time on that day ("day"). In our proof run: 134 posts to the minute, 16 to the hour and 50 to the day (older posts on a personal page).

Why are views rounded but likes exact?

That is what VK shows a visitor who is not signed in: views above 999 as 14K, likes and shares as full numbers. views is then 14000 and views_is_rounded is true.

Does it return comments?

No. VK does not show comments or comment counts to visitors who are not signed in on the wall view the actor reads, so the actor does not return them rather than guess.

How are pinned posts and ads handled?

Pinned posts are recognised because they come first on a wall and out of date order; a pinned post that is also the newest post cannot be told apart and shows is_pinned: false. No advertising marker could be found on this view in testing, so posts are not flagged as ads.

Can I scrape any community?

Public pages, groups, events and public personal pages all work. Closed or private communities and closed profiles show nothing to a visitor who is not signed in; they are reported as private and cost nothing.

Does it follow robots.txt?

Yes. It reads robots.txt for vk.ru and m.vk.ru at the start of every run and checks every address, and every redirect, against it. VK's desktop site sends visitors of a public page's wall to an address robots.txt closes to crawlers (/wall*?own=1), so the actor never uses the desktop wall. A few screen names collide with a robots.txt rule (names that start with app and contain _, under Disallow: /app*_); the actor skips such a name, reports it as robots_disallowed, charges nothing, and asks for the numeric id (club12345) instead. We checked both files again on 1 Oct 2026.

How many posts can I get, and how long does it take?

Up to 5,000 posts per wall and 200 walls per run. Our proof run read 200 posts from 4 walls (12 wall pages) in 14 seconds. A run stops cleanly before its timeout (one hour by default) and keeps everything delivered so far; raise the timeout for very large runs. VK changes its site from time to time; if it refuses a page, the run summary says so and nothing is charged for it.

Which formats can I export, and can I schedule it?

JSON, CSV, Excel, XML, HTML table and RSS from the dataset page in Apify Console, or through the Apify API. To schedule, save your input as a task and add a schedule in Apify Console under Schedules. With postedWithinDays set to 1, a daily schedule gives you each day's new posts. Each scheduled run is billed like a manual one.

Can I use it from Claude, ChatGPT or another AI agent?

Yes. Add Apify's MCP server to your client, for example in Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=themineworks/vk-wall-posts-scraper"

Then ask things like "What did rbc and lentach post on VK in the last 24 hours? Summarise the top stories." The "Copy to your AI assistant" block above gives an agent everything it needs to call the actor directly.

The actor collects only publicly visible posts, never signs in, and follows VK's robots.txt. You are responsible for how you use the data, including VK's terms and data protection laws such as GDPR and CCPA, for example for posts on personal pages. This actor is an independent tool and is not affiliated with VK or VKontakte; VK is a trademark of its owner.

Integrations

  • Google Sheets: send each run's posts to a sheet with Apify's Google Sheets integration.
  • Make, Zapier and n8n: start runs and receive the rows in your workflows.
  • Webhooks: get a call when a run finishes, for example to post a daily digest to Slack or Telegram.
  • API: start runs and read datasets from any language with the Apify API or the Python and JavaScript clients.
  • MCP clients: Claude, ChatGPT and other agents through Apify's MCP server.

More from The Mine Works

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

E-commerce and marketplaces

Company and business data

Food and local services

Developer and AI tools

More tools

Support

Found a problem or need a field? Open an issue on the actor's Issues tab and we will answer there. For a new source or a custom build, email dmineworks@gmail.com.

VK Wall Posts Scraper turns public VK communities, pages and profiles into one row per post, with text, date, engagement, attachments and the community's size, without a login.