VK Wall Posts Scraper | Парсер ВКонтакте: 20 Posts in 9s
Pricing
from $1.00 / 1,000 posts
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
9 hours ago
Last modified
Categories
Share
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.
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:
rbcor@rbc. - A numeric community id:
25232578,-25232578,club25232578orpublic25232578. - A personal page:
https://vk.com/durovorid1.
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,urland atitlewhere 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:
postedWithinDaysends 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
OUTPUTrecord.
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
| Parameter | Type | Default | What it does |
|---|---|---|---|
communities | array of strings | required (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. |
maxPostsPerCommunity | integer | 50 (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. |
postedWithinDays | integer | none | Only 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_pinneddate(UTC) anddate_precision(minute,hourorday, see the FAQ)text(the full post text, with line breaks and emoji)
Engagement
likesandreposts(exact),viewsandviews_is_rounded(VK shows views above 999 rounded, as14K)
Attachments
attachments: a list oftype(photo,video,clip,link,article,docand others),url, and atitlewhere 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_authorsandwall_copy_post_id(a post published jointly by several communities: their names, and the post's id on this wall;post_idis 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_urlcommunity_type:page(public page),group,eventoruser(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:
| Field | What it holds |
|---|---|
post_id | VK post id, for example -20629724_1687837 |
post_url | Link to the post on vk.com |
community_name | Name of the wall's owner |
community_screen_name | Screen name, for example habr |
community_id | Numeric id of the community or person |
community_type | page, group, event or user |
community_members | Members or followers, exact |
community_posts_total | Posts on the wall in total |
date | When the post was published (ISO 8601, UTC) |
date_precision | minute, hour or day |
likes | Reactions, exact |
reposts | Shares, exact |
views | Views, rounded by VK above 999 |
is_repost | Whether the post shares another post |
scraped_at | When 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.
| Event | Free plan | Starter (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
OUTPUTrun 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.
Is it legal to scrape VK?
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
- Threads Scraper
- Reddit Scraper
- Threads Search Scraper
- Instagram Profile Scraper
- Instagram Followers & Following
- Reddit Search Scraper
- Twitter / X Scraper
- Xiaohongshu (RED) Scraper
- YouTube Transcript
- Telegram Channel Scraper
- Telegram Channel Finder
- Pinterest Profile Scraper
Leads and business directories
Marketing, SEO and reviews
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.

