VK Scraper — Profiles, Walls, Posts & Comments avatar

VK Scraper — Profiles, Walls, Posts & Comments

Pricing

from $3.00 / 1,000 owner results

Go to Apify Store
VK Scraper — Profiles, Walls, Posts & Comments

VK Scraper — Profiles, Walls, Posts & Comments

Scrape public VK profiles, communities, walls, posts, comments, replies, engagement, reposts, and attachment metadata from known handles or URLs—without a VK token or login.

Pricing

from $3.00 / 1,000 owner results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

67

Total users

16

Monthly active users

3 days ago

Last modified

Features

Limited permissions

Share

VK Scraper - Profiles, Communities, Posts, Comments and Monitoring

Collect public VK profiles, communities, wall posts, post details, comments, audience counters, attachments, and visible media summaries in one structured dataset.

  • Extract public user and community identity, descriptions, status, verification, profile images, and visible counters
  • Paginate public walls and preserve post text, dates, authors, views, likes, comments, reposts, and reactions
  • Retrieve individual wall posts and public top-level comments by URL or wallOWNER_POST identifier
  • Preserve available attachments and enrich profiles with visible subscriptions, follower samples, covers, and media summaries
  • Monitor public walls and save only new or changed posts on scheduled runs
  • Process multiple screen names, profile URLs, community URLs, owner IDs, and post URLs in one run
  • No VK account, access token, cookies, browser, or user-supplied proxy is required; requests use the built-in Apify Residential Proxy
  • Export results to JSON, CSV, Excel, XML, RSS, or access them through the Apify API

What can you do with this Actor?

Mode / actionInputOutputBest for
wallsPublic user or community screen names and URLsPaginated public post rowsContent research, publishing analysis, and monitoring
ownersPublic screen names, profile URLs, community URLs, or owner IDsNormalized owner rowsProfile and community intelligence
postsPublic wall post URLs or wallOWNER_POST identifiersComplete public post rowsPost-level content, media, and engagement analysis
commentsPublic wall post URLs or identifiersPublic top-level comment rowsAudience feedback and discussion research
profileMediaPublic user or community targetsowner rows enriched with visible media summariesPublic content inventory and profile auditing
autoMixed public profile, community, and wall-post URLs in startUrlsowner or post rows selected from each URLBatch processing mixed known targets
monitorPublic owner targets plus a stable monitorKeyOnly new or new-and-changed post rowsScheduled wall monitoring

Choose one mode per run. Multiple public targets can be processed together. Wall and post modes can also add public top-level comments to the same Results dataset.

Quick start

  1. Open the Actor and click Try for free.
  2. Keep Walls selected or choose another workflow.
  3. Enter public screen names, profile/community URLs, owner IDs, or wall-post URLs and set the result limit.
  4. Click Start.
  5. Preview the single Results table or download it in your preferred format.

The default input collects recent posts from Pavel Durov's public wall. If you switch to Posts or Comments with the sample unchanged, the Actor uses the sample wall post instead.

Input examples

Public wall

{
"mode": "walls",
"targets": [
"https://vk.ru/durov"
],
"maxItems": 100,
"includeComments": false,
"country": "US"
}

Owner details

{
"mode": "owners",
"targets": [
"https://vk.ru/durov",
"https://vk.ru/team"
],
"country": "US"
}

Post details

{
"mode": "posts",
"targets": [
"https://vk.ru/wall-27895931_12611704"
],
"country": "US"
}

Public comments

{
"mode": "comments",
"targets": [
"https://vk.ru/wall-27895931_12611704"
],
"maxCommentsPerPost": 100,
"country": "US"
}

Monitor new wall posts

{
"mode": "monitor",
"targets": [
"https://vk.ru/durov"
],
"maxItems": 100,
"monitorKey": "durov-daily",
"country": "US"
}

Profile media summary

{
"mode": "profileMedia",
"targets": [
"https://vk.ru/durov"
],
"country": "US"
}

Auto-detect mixed public URLs

{
"mode": "auto",
"startUrls": [
"https://vk.ru/durov",
"https://vk.ru/wall-27895931_12611704"
],
"country": "US"
}

maxItems limits primary rows per target. In Comments mode, the lower of maxItems and maxCommentsPerPost applies. When comments are added to a wall or post result, maxCommentsPerPost limits comments for each retained post.

Complete output examples

Every result row contains exactly 66 top-level fields. The same complete key set makes mixed result types predictable in JSON exports and keeps every field visible in the single Results view.

Complete owner row — 66 top-level fields

{
"recordType": "owner",
"sourceMode": "owners",
"sourceTarget": "example-target",
"sourceUrl": "https://example.com/public-result",
"sourceEndpoints": [],
"ownerId": "123456",
"ownerType": null,
"screenName": null,
"firstName": null,
"lastName": null,
"name": "Example public record",
"description": "Example public content",
"status": "Example public content",
"profileUrl": "https://example.com/public-result",
"birthDate": null,
"city": {},
"country": {},
"sex": 0,
"verified": false,
"isClosed": false,
"online": false,
"followersCount": 0,
"followingCount": 0,
"friendsCount": 0,
"photosCount": 0,
"videosCount": 0,
"clipsCount": 0,
"articlesCount": 0,
"giftsCount": 0,
"site": "https://example.com/public-result",
"occupation": {},
"counters": {},
"profilePhotoUrl": "https://cdn.example.com/image.jpg",
"cover": {},
"subscriptions": {},
"followerSample": [],
"mediaOverview": {},
"postId": "example-id",
"canonicalUrl": "https://example.com/public-result",
"text": "Example public content",
"textHtml": "Example public content",
"publishedAt": "2026-08-13T12:00:00Z",
"editedAt": "2026-08-13T12:00:00Z",
"authorId": "123456",
"authorName": "Example public record",
"authorUrl": "https://example.com/public-result",
"postType": null,
"viewsCount": 0,
"likesCount": 0,
"commentsCount": 0,
"repostsCount": 0,
"reactions": {},
"attachments": [],
"copyHistory": [],
"commentId": "123456",
"parentCommentId": "123456",
"replyToUser": "123456",
"dateLabel": null,
"attributes": {},
"temporaryMediaUrlsIncluded": false,
"isPartial": false,
"monitorStatus": null,
"changedFields": [],
"previousCapturedAt": "2026-08-13T12:00:00Z",
"capturedAt": "2026-08-13T12:00:00Z",
"raw": {}
}

Complete post row — 66 top-level fields

{
"recordType": "post",
"sourceMode": "walls",
"sourceTarget": "example-target",
"sourceUrl": "https://example.com/public-result",
"sourceEndpoints": [],
"ownerId": "123456",
"ownerType": null,
"screenName": null,
"firstName": null,
"lastName": null,
"name": "Example public record",
"description": "Example public content",
"status": "Example public content",
"profileUrl": "https://example.com/public-result",
"birthDate": null,
"city": {},
"country": {},
"sex": 0,
"verified": false,
"isClosed": false,
"online": false,
"followersCount": 0,
"followingCount": 0,
"friendsCount": 0,
"photosCount": 0,
"videosCount": 0,
"clipsCount": 0,
"articlesCount": 0,
"giftsCount": 0,
"site": "https://example.com/public-result",
"occupation": {},
"counters": {},
"profilePhotoUrl": "https://cdn.example.com/image.jpg",
"cover": {},
"subscriptions": {},
"followerSample": [],
"mediaOverview": {},
"postId": "example-id",
"canonicalUrl": "https://example.com/public-result",
"text": "Example public content",
"textHtml": "Example public content",
"publishedAt": "2026-08-13T12:00:00Z",
"editedAt": "2026-08-13T12:00:00Z",
"authorId": "123456",
"authorName": "Example public record",
"authorUrl": "https://example.com/public-result",
"postType": null,
"viewsCount": 0,
"likesCount": 0,
"commentsCount": 0,
"repostsCount": 0,
"reactions": {},
"attachments": [],
"copyHistory": [],
"commentId": "123456",
"parentCommentId": "123456",
"replyToUser": "123456",
"dateLabel": null,
"attributes": {},
"temporaryMediaUrlsIncluded": false,
"isPartial": false,
"monitorStatus": null,
"changedFields": [],
"previousCapturedAt": "2026-08-13T12:00:00Z",
"capturedAt": "2026-08-13T12:00:00Z",
"raw": {}
}

Complete comment row — 66 top-level fields

{
"recordType": "comment",
"sourceMode": "comments",
"sourceTarget": "example-target",
"sourceUrl": "https://example.com/public-result",
"sourceEndpoints": [],
"ownerId": "123456",
"ownerType": null,
"screenName": null,
"firstName": null,
"lastName": null,
"name": "Example public record",
"description": "Example public content",
"status": "Example public content",
"profileUrl": "https://example.com/public-result",
"birthDate": null,
"city": {},
"country": {},
"sex": 0,
"verified": false,
"isClosed": false,
"online": false,
"followersCount": 0,
"followingCount": 0,
"friendsCount": 0,
"photosCount": 0,
"videosCount": 0,
"clipsCount": 0,
"articlesCount": 0,
"giftsCount": 0,
"site": "https://example.com/public-result",
"occupation": {},
"counters": {},
"profilePhotoUrl": "https://cdn.example.com/image.jpg",
"cover": {},
"subscriptions": {},
"followerSample": [],
"mediaOverview": {},
"postId": "example-id",
"canonicalUrl": "https://example.com/public-result",
"text": "Example public content",
"textHtml": "Example public content",
"publishedAt": "2026-08-13T12:00:00Z",
"editedAt": "2026-08-13T12:00:00Z",
"authorId": "123456",
"authorName": "Example public record",
"authorUrl": "https://example.com/public-result",
"postType": null,
"viewsCount": 0,
"likesCount": 0,
"commentsCount": 0,
"repostsCount": 0,
"reactions": {},
"attachments": [],
"copyHistory": [],
"commentId": "123456",
"parentCommentId": "123456",
"replyToUser": "123456",
"dateLabel": null,
"attributes": {},
"temporaryMediaUrlsIncluded": false,
"isPartial": false,
"monitorStatus": null,
"changedFields": [],
"previousCapturedAt": "2026-08-13T12:00:00Z",
"capturedAt": "2026-08-13T12:00:00Z",
"raw": {}
}

What data can you extract?

CategoryFields
Source and capturerecordType, sourceMode, sourceTarget, sourceUrl, sourceEndpoints, capturedAt
Owner identityownerId, ownerType, screenName, firstName, lastName, name, profileUrl
Public profile datadescription, status, birthDate, city, country, sex, verified, isClosed, online, site, occupation
Audience and content countsfollowersCount, followingCount, friendsCount, photosCount, videosCount, clipsCount, articlesCount, giftsCount, counters
Profile media and relationshipsprofilePhotoUrl, cover, subscriptions, followerSample, mediaOverview
Posts and engagementpostId, canonicalUrl, text, textHtml, publishedAt, editedAt, authorId, authorName, authorUrl, postType, viewsCount, likesCount, commentsCount, repostsCount, reactions, attachments, copyHistory
CommentscommentId, parentCommentId, replyToUser, dateLabel, attributes
Monitoring and diagnosticstemporaryMediaUrlsIncluded, isPartial, monitorStatus, changedFields, previousCapturedAt, raw

Nested fields such as city, country, occupation, counters, cover, subscriptions, followerSample, mediaOverview, reactions, attachments, copyHistory, attributes, and optional raw retain VK's public source structure. Their nested keys are source-controlled and can change; the 66 top-level keys above are fixed by the Actor.

Input parameters

ParameterTypeRequiredDefaultDescription
modestringNo"walls"auto, owners, walls, posts, comments, profileMedia, or monitor.
targetsstring[]Either target fieldMode samplePublic VK URLs, screen names, numeric owner IDs, or wallOWNER_POST identifiers.
startUrlsarrayEither target field[]Public VK URLs as strings or {"url":"https://vk.ru/durov"} objects. In Auto, profile and community links return owner details.
maxItemsintegerNo100Maximum primary rows per target, from 1 to 10,000.
maxPagesintegerNo20Maximum wall pages per owner or comment pages per post, from 1 to 500. A wall page typically contains about 10 posts. Comment requests advance about 20 comments at a time.
maxCommentsPerPostintegerNo100Maximum top-level comments per post, from 0 to 10,000; 0 skips them.
includeCommentsbooleanNofalseFetch public top-level comments for wall posts with extra requests.
includeAttachmentsbooleanNotruePreserve public attachment objects on post rows.
includeTemporaryMediaUrlsbooleanNotrueKeep direct VK CDN links and temporary signed links in media fields.
publishedAfterstringNo""Optional ISO lower bound for posts. Comments are collected only for posts that pass the date filters.
publishedBeforestringNo""Optional ISO upper bound. A date such as 2026-10-10 includes that entire UTC day. Use a timestamp for an exact cutoff.
maxConcurrencyintegerNo3Concurrent public targets, from 1 to 10.
requestTimeoutSecsintegerNo60Per-request timeout in seconds, from 15 to 120.
countrystringNo"US"Two-letter ISO country used for the internal residential proxy region.
includeRawbooleanNofalseInclude the redacted public source object; increases dataset size.
monitorModestringNo"off"off, onlyNew, or newAndChanged. Selecting Monitor with Off uses Only New.
monitorKeystringWith monitoring"default"Stable comparison-state namespace for recurring runs.
maxSessionRotationsintegerNo3Fresh residential sessions tried after blocks, from 1 to 6.

Pay-per-event result types

EventCharged when
owner-resultOne owner row is accepted by the Dataset.
post-resultOne post row is accepted by the Dataset.
comment-resultOne comment row is accepted by the Dataset.

Failed inputs appear in RUN_SUMMARY and carry no custom result charge. Valid targets in the same run continue. The Actor checks the available charge budget before starting VK requests and before collecting optional comments. Actual event prices appear on the Actor's Pricing tab.

Use cases

Profile and community intelligence

Collect public identity, descriptions, audience counters, profile imagery, visible subscriptions, follower samples, and media summaries.

Content and engagement analysis

Export wall posts with text, timestamps, authors, reactions, views, likes, comments, reposts, attachments, and repost chains.

Public comment research

Collect top-level public comments for feedback analysis, community research, and moderation dashboards outside VK.

Monitoring and data pipelines

Schedule recurring runs and send new rows through webhooks to Google Sheets, Airtable, Make, Zapier, n8n, Airbyte, or a data warehouse.

Performance and cost

Comments add HTTP requests for each retained post. A smaller maxItems or maxCommentsPerPost keeps the run focused on the rows you need. RUN_SUMMARY reports request counts, results and charge limits. Collection stops after five consecutive unavailable or empty sources. The summary reports the number of unchecked targets as skippedAfterEmptySources.

API usage

Replace YOUR_USERNAME with the publishing Apify username after publication:

curl -X POST \
"https://api.apify.com/v2/acts/YOUR_USERNAME~vk-public-data-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "walls",
"targets": ["https://vk.ru/durov"],
"maxItems": 100,
"country": "US"
}'

The request body is the same JSON used in Apify Console. Read results from the run's default Dataset or use the output link that opens view=overview.

Best for / not for

Best for: public profile and community details, known wall targets, post enrichment, public top-level comments, media summaries, and scheduled monitoring.

Not for: keyword search, private or login-only content, complete nested reply trees, authenticated API methods, account actions, or permanent media hosting.

Limits and good to know

VK keyword search, private profiles and communities, nested reply expansion, login-only content, and authenticated API methods are intentionally excluded. Public page payloads and endpoints can differ by owner type and region.

A missing public value appears as null or an empty array. Posts without a public timestamp are excluded when a date filter is set. Invalid targets are skipped before requests and counted under failureCategories.invalidInput in RUN_SUMMARY. If all attempted targets fail, the run writes its summary before exiting. When VK's post page lacks structured data, the Actor checks the public preview and up to three initial wall pages for the exact post.

Frequently asked questions

What input should I provide?

Use a public VK screen name, profile or community URL, numeric owner ID, or a wall post link or identifier that matches the selected mode. Use targets or startUrls when adapting a task from a standalone VK Actor that used inputList.

How many results can I extract?

maxItems accepts 1-10,000 per target, maxPages accepts 1-500, and maxCommentsPerPost accepts 0-10,000 per post. Public availability and VK pagination can return fewer rows.

Can I process multiple inputs?

Yes. Add multiple public targets or URLs; target failures are isolated and successful targets continue.

Can I schedule recurring runs?

Yes. Use an Apify schedule with mode: "monitor" and a stable monitorKey. If the same monitor is already running, the overlap skips VK requests and result events and reports RUN_SUMMARY.monitorBusy: true.

Does this Actor open a browser?

No. Runtime extraction uses direct HTTP only and contains no Playwright, Selenium, Chromium, or browser installation.

Do I need an account or cookies?

No. The supported modes use public pages and anonymous endpoints. Cookies or authorization values from research captures are never embedded in the release.

Do I need to configure a proxy?

The Actor configures Apify Residential Proxy automatically. Use Country / Region to select the request location.

Why are some fields empty?

The single Results view covers every result type. Fields that do not apply to a row remain empty, while the complete key set is preserved in JSON.

Responsible use

Collect only public VK data you are permitted to process. Respect applicable law, privacy rights, platform terms, rate limits, and intellectual-property rights. This Actor is not affiliated with or endorsed by VK.

Support

For a reproducible issue, include the Apify run ID, mode, a non-sensitive public target, expected result, and actual result. Never send account credentials, cookies, access tokens, proxy passwords, or private content.