VK Scraper — Profiles, Walls, Posts & Comments
Pricing
from $3.00 / 1,000 owner results
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
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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_POSTidentifier - 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 / action | Input | Output | Best for |
|---|---|---|---|
walls | Public user or community screen names and URLs | Paginated public post rows | Content research, publishing analysis, and monitoring |
owners | Public screen names, profile URLs, community URLs, or owner IDs | Normalized owner rows | Profile and community intelligence |
posts | Public wall post URLs or wallOWNER_POST identifiers | Complete public post rows | Post-level content, media, and engagement analysis |
comments | Public wall post URLs or identifiers | Public top-level comment rows | Audience feedback and discussion research |
profileMedia | Public user or community targets | owner rows enriched with visible media summaries | Public content inventory and profile auditing |
auto | Mixed public profile, community, and wall-post URLs in startUrls | owner or post rows selected from each URL | Batch processing mixed known targets |
monitor | Public owner targets plus a stable monitorKey | Only new or new-and-changed post rows | Scheduled wall monitoring |
Choose one mode per run. Multiple public targets can be processed together; walls can optionally add public top-level comments to the same Results dataset.
Quick start
- Open the Actor and click Try for free.
- Keep Walls selected or choose another workflow.
- Enter public screen names, profile/community URLs, owner IDs, or wall-post URLs and set the result limit.
- Click Start.
- Preview the single Results table or download it in your preferred format.
The default input collects recent public wall posts from durov and is ready to run.
Input examples
Public wall
{"mode": "walls","targets": ["durov"],"maxItems": 100,"includeComments": false,"country": "US"}
Owner details
{"mode": "owners","targets": ["durov","team"],"country": "US"}
Post details
{"mode": "posts","targets": ["https://vk.ru/wall1_456"],"country": "US"}
Public comments
{"mode": "comments","targets": ["wall1_456"],"maxCommentsPerPost": 100,"country": "US"}
Monitor new wall posts
{"mode": "monitor","targets": ["durov"],"maxItems": 100,"monitorKey": "durov-daily","country": "US"}
Profile media summary
{"mode": "profileMedia","targets": ["durov"],"country": "US"}
Auto-detect mixed public URLs
{"mode": "auto","startUrls": ["https://vk.ru/durov","https://vk.ru/wall1_456"],"country": "US"}
maxItems limits retained rows per target. maxCommentsPerPost applies separately to each post when comment extraction is enabled.
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?
| Category | Fields |
|---|---|
| Source and capture | recordType, sourceMode, sourceTarget, sourceUrl, sourceEndpoints, capturedAt |
| Owner identity | ownerId, ownerType, screenName, firstName, lastName, name, profileUrl |
| Public profile data | description, status, birthDate, city, country, sex, verified, isClosed, online, site, occupation |
| Audience and content counts | followersCount, followingCount, friendsCount, photosCount, videosCount, clipsCount, articlesCount, giftsCount, counters |
| Profile media and relationships | profilePhotoUrl, cover, subscriptions, followerSample, mediaOverview |
| Posts and engagement | postId, canonicalUrl, text, textHtml, publishedAt, editedAt, authorId, authorName, authorUrl, postType, viewsCount, likesCount, commentsCount, repostsCount, reactions, attachments, copyHistory |
| Comments | commentId, parentCommentId, replyToUser, dateLabel, attributes |
| Monitoring and diagnostics | temporaryMediaUrlsIncluded, 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
mode | string | No | "walls" | auto, owners, walls, posts, comments, profileMedia, or monitor. |
targets | string[] | In all target modes | ["durov"] | Public screen names, profile/community URLs, wall-post URLs, or wallOWNER_POST identifiers. |
startUrls | string[] | In auto | [] | Mixed public profile, community, or wall-post URLs. |
maxItems | integer | No | 100 | Maximum retained rows per target, from 1 to 10,000. |
maxPages | integer | No | 20 | Maximum public wall pages per owner, from 1 to 500. |
maxCommentsPerPost | integer | No | 100 | Maximum top-level comments per post, from 0 to 10,000; 0 skips them. |
includeComments | boolean | No | false | Fetch public top-level comments for wall posts with extra requests. |
includeAttachments | boolean | No | true | Preserve public attachment objects on post rows. |
includeTemporaryMediaUrls | boolean | No | true | Preserve observed public media URLs even when their CDN lifetime may be limited. |
publishedAfter | string | No | "" | Optional ISO date/timestamp lower bound applied after extraction. |
publishedBefore | string | No | "" | Optional ISO date/timestamp upper bound applied after extraction. |
maxConcurrency | integer | No | 3 | Concurrent public targets, from 1 to 10. |
requestTimeoutSecs | integer | No | 60 | Per-request timeout in seconds, from 15 to 120. |
country | string | No | "US" | Two-letter ISO country used for the internal residential proxy region. |
includeRaw | boolean | No | false | Include the redacted public source object; increases dataset size. |
monitorMode | string | No | "off" | off, onlyNew, or newAndChanged. |
monitorKey | string | With monitoring | "default" | Stable comparison-state namespace for recurring runs. |
maxSessionRotations | integer | No | 3 | Fresh residential sessions tried after blocks, from 1 to 6. |
Pay-per-event result types
| Event | Charged when |
|---|---|
owner-result | One owner row is accepted by the Dataset. |
post-result | One post row is accepted by the Dataset. |
comment-result | One comment row is accepted by the Dataset. |
The Actor does not emit a paid error event. Failed targets are counted by category in RUN_SUMMARY; successful targets continue. Actual event prices are shown 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
Direct HTTP generally uses substantially less memory and bandwidth than launching a browser, but source response size, retries, optional enrichment, raw objects, and pagination determine actual cost. Start with a small limit, inspect the Dataset and RUN_SUMMARY, then scale. Lower concurrency is usually more reliable on stricter public sites.
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-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "walls","targets": ["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 is returned as null or an empty array. One failed input does not create a frightening error row in Results. If every input fails, the run fails after writing diagnostic counts to RUN_SUMMARY.
Frequently asked questions
What input should I provide?
Use a public screen name, profile/community URL, numeric owner ID, full wall-post URL, or wallOWNER_POST identifier that matches the selected mode.
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 Apify schedules with mode: "monitor", a stable monitorKey, and webhooks for downstream notifications.
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?
No. On Apify, the Actor creates a Residential Proxy configuration internally and does not expose proxy settings in Input. Local developers may privately point the documented test-only environment variable at a proxy file; that variable is not an Actor input and is ignored on the platform.
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.
Local development
For local read-only smoke tests only, VK_TEST_PROXY_FILE may point to a private file containing one login:password@host:port proxy per line. The file is never read on Apify and must not be committed.