VK Profile Posts Scraper – Public Wall Export avatar

VK Profile Posts Scraper – Public Wall Export

Pricing

from $1.00 / 1,000 results

Go to Apify Store
VK Profile Posts Scraper – Public Wall Export

VK Profile Posts Scraper – Public Wall Export

Collect public VK profile posts by screen name. Export text, authors, dates, engagement counts, media references, and profile details with wall pagination.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Collect public posts from known VK user walls, with the source profile's details attached to each result. VK Profile Posts Scraper returns post text, authors, dates, engagement counts, media references, and available repost context.

Use it to research a creator's public content, compare posts across a known account list, or build a dataset for repeated analysis. A page budget controls how far to collect from each profile, while every post remains a separate row.

At a glanceDetails
📥 InputPlain VK profile screen names, such as durov
📤 OutputOne row per collected post, with source-profile context
📄 PaginationConfigurable pages per profile; wall offsets advance by 10
📎 MediaAvailable attachment metadata, URLs, previews, and supplied repost details
🔐 Login requiredNo VK credentials or cookies

What the VK profile posts scraper collects 📰

Each collected wall post can include:

  • Composite post ID, numeric ID, wall owner ID, and permalink
  • Text, author name and ID, profile link, and avatar
  • Publication timestamp, UTC date, and visible date text
  • Like, comment, repost, and view counts
  • Photo, video, document, link, poll, or other attachment metadata when exposed
  • Supplied repost history and available copyright or geographic context
  • Pinned, advertising, favorite, and action indicators
  • Public source-profile details

The source profile's identity, biography, follower count, links, and other available details repeat on each post. This keeps the account context available when individual posts are filtered or exported.

How to scrape VK profile posts 🚀

  1. Add plain profile screen names such as durov.
  2. Choose pagesPerProfile for the wall-page budget.
  3. Start the Actor and review the collected posts and any failed rows.
  4. Export the dataset or pass selected post URLs to another workflow.
{
"inputList": [
"durov"
],
"pagesPerProfile": 2
}

Duplicate screen names are processed once case-insensitively. Repeated post IDs are removed across pages of the same wall.

VK profile post fields and output 📦

Field groupIncluded data
Post identityInput, status, composite ID, numeric post ID, wall owner, and URL
Content and authorText, author identity, avatar, dates, and timestamp
EngagementLikes, comments, reposts, and views
Media and contextAttachments, supplied repost history, copyright, geography, and post indicators
Source profileProfile ID, name, biography, website, audience counts, images, and available background or connected-account fields

Complete illustrative output item with all 125 fields. The post, profile, and values below are fictional examples, not a live result:

{
"input": "sample.creator",
"status": "success",
"url": "https://vk.ru/wall123456789_125",
"id": "123456789_125",
"post_id": 125,
"owner_id": 123456789,
"author_id": 123456789,
"text": "A few notes from today's architecture photography walk.",
"date": "2026-09-08T11:00:00Z",
"timestamp": 1788865200,
"date_text": "8 сен 2026 в 14:00",
"author.id": 123456789,
"author.name": "Alex Morgan",
"author.url": "https://vk.ru/sample.creator",
"author.avatar_url": "https://example.com/avatar-400.jpg",
"likes_count": 84,
"comments_count": 12,
"reposts_count": 7,
"views_count": 2400,
"attachments.path": [
"/0/type",
"/0/id",
"/0/owner_id",
"/0/album_id",
"/0/text",
"/0/timestamp",
"/0/url",
"/0/width",
"/0/height",
"/0/thumbnails/0/url",
"/0/thumbnails/0/width",
"/0/thumbnails/0/height",
"/0/thumbnails/0/type"
],
"attachments.value": [
"photo",
987654321,
123456789,
-7,
"Workshop studio",
1788865200,
"https://example.com/workshop-photo.jpg",
1280,
853,
"https://example.com/workshop-photo.jpg",
1280,
853,
"x"
],
"reposted_posts.path": [],
"reposted_posts.value": [],
"post_type": "post",
"signer_id": 0,
"is_pinned": false,
"is_ad": false,
"is_favorite": false,
"can_like": false,
"can_comment": false,
"can_repost": false,
"copyright.path": [],
"copyright.value": [],
"geo.path": [],
"geo.value": [],
"profile.avatar_url": "https://example.com/avatar-400.jpg",
"profile.profile_url": "https://vk.ru/sample.creator",
"profile.id": 123456789,
"profile.username": "sample.creator",
"profile.name": "Alex Morgan",
"profile.first_name": "Alex",
"profile.last_name": "Morgan",
"profile.profile_status": "Sharing photography notes",
"profile.about": "Photographer and workshop organizer.",
"profile.birth_date": "",
"profile.city.id": 1,
"profile.city.name": "Moscow",
"profile.country.id": 1,
"profile.country.name": "Russia",
"profile.website": "https://example.com/portfolio",
"profile.followers_count": 4200,
"profile.friends_count": 280,
"profile.subscriptions_count": 46,
"profile.posts_count": 125,
"profile.photos_count": 340,
"profile.videos_count": 18,
"profile.clips_count": 7,
"profile.is_verified": false,
"profile.is_private": false,
"profile.can_access_closed": true,
"profile.occupation.id": 0,
"profile.occupation.name": "Independent photographer",
"profile.occupation.type": "work",
"profile.career.path": [
"/0/company",
"/0/position",
"/0/from"
],
"profile.career.value": [
"Example Studio",
"Photographer",
2021
],
"profile.schools.path": [],
"profile.schools.value": [],
"profile.universities.path": [
"/0/name",
"/0/graduation"
],
"profile.universities.value": [
"Example Institute of Design",
2020
],
"profile.contacts.mobile_phone": "",
"profile.contacts.home_phone": "",
"profile.nickname": "",
"profile.maiden_name": "",
"profile.sex": 0,
"profile.sex_name": "",
"profile.home_town": "",
"profile.activities": "Photography workshops",
"profile.interests": "Architecture, photography",
"profile.music": "",
"profile.movies": "",
"profile.tv": "",
"profile.books": "",
"profile.games": "",
"profile.quotes": "",
"profile.avatar_thumbnails.size": [
"100",
"400_orig"
],
"profile.avatar_thumbnails.url": [
"https://example.com/avatar-100.jpg",
"https://example.com/avatar-400.jpg"
],
"profile.cover_url": "https://example.com/cover.jpg",
"profile.cover_images.url": [
"https://example.com/cover.jpg"
],
"profile.cover_images.width": [
1590
],
"profile.cover_images.height": [
400
],
"profile.audios_count": 0,
"profile.albums_count": 8,
"profile.gifts_count": 0,
"profile.articles_count": 4,
"profile.mutual_friends_count": 0,
"profile.online": false,
"profile.online_mobile": false,
"profile.last_seen_at": 1788868800,
"profile.last_seen_date": "2026-09-08T12:00:00Z",
"profile.last_seen_platform": 7,
"profile.is_trending": false,
"profile.is_deactivated": false,
"profile.deactivated_reason": "",
"profile.is_memorial": false,
"profile.is_service": false,
"profile.is_nft": false,
"profile.is_no_index": false,
"profile.friend_status": 0,
"profile.can_message": false,
"profile.can_send_friend_request": false,
"profile.can_post": false,
"profile.can_see_all_posts": true,
"profile.can_see_audio": false,
"profile.military.path": [],
"profile.military.value": [],
"profile.relatives.path": [],
"profile.relatives.value": [],
"profile.personal.path": [],
"profile.personal.value": [],
"profile.connections.skype": "",
"profile.connections.facebook": "",
"profile.connections.facebook_name": "",
"profile.connections.twitter": "",
"profile.connections.instagram": "sample.creator",
"profile.connections.livejournal": ""
}

Each post occupies one row in one table. JSON uses the same literal keys as the columns, including author.name and profile.name. The source profile is repeated within each post row rather than saved as a separate result.

Variable attachment fields use matching attachments.path and attachments.value lists. For example, /0/type identifies the first attachment's type; the corresponding value is at the same list position. Reposted content, copyright, and geography use the same paired-list pattern. Variable profile sections, such as profile.career.path and profile.career.value, use the same pattern. Profile avatar and cover-image fields use aligned lists within each image group.

Successful results preserve empty strings, empty lists, 0, and false when values are omitted. Missing counts should not automatically be interpreted as confirmed zero engagement or audience. Failed results retain input, set status to failed, and use null for the other fields.

Input requirements and wall coverage ⚙️

ParameterTypeDefaultRules
inputListarray of stringsRequiredAt least one VK profile screen name
pagesPerProfileinteger1Minimum 1; no fixed upper limit

Screen names must contain 1–64 letters, digits, underscores, or periods. Surrounding whitespace is trimmed. Accepted: durov. Rejected: @durov, https://vk.ru/durov, or a name containing spaces.

The name must resolve to a user profile rather than a community. Private or restricted profiles may return limited public data or fail. Use Community Posts Scraper for groups and public pages.

Wall pages use offsets that advance by 10. Collection continues while a page contains posts, within the requested page budget and any reported wall total. An empty page ends that wall's pagination. A page containing only previously seen posts adds no duplicates but can still lead to another request.

An empty wall before any posts have been collected produces a failed row. An empty page after successful collection adds no failure. Page budgets do not guarantee exactly 10 saved posts per page or a complete historical archive.

VK profile post use cases 🎯

Creator-content research

Collect public wall posts from a known account list and retain each author's profile context for review.

Post-format comparisons

Compare text, attachments, dates, and public engagement across selected profiles without losing the source account.

Repeated content collection

Schedule runs and compare composite post IDs in your database to identify newly observed posts or changed public counts.

Discussion follow-up

Select relevant wall-post URLs and use Post Comments Scraper to collect the public discussion around them.

Pricing and billable post rows 💰

Check the Actor's Pricing tab for the current charging model and rate.

Under dataset-item pricing, each saved post or failed row can count as a result. An unavailable profile, an empty wall, or a page that remains unavailable after retries can produce a failed row. Automatic retries do not independently create additional rows.

Source-profile details, attachments, and repost history remain in each post row. Increasing pagesPerProfile can increase the number collected, but it sets a page budget rather than an exact result count.

VK profile posts API and integrations 🔌

Use the ID shown in the Actor's API tab for $ACTOR_ID and your Apify token for $APIFY_TOKEN:

curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"inputList":["durov"],"pagesPerProfile":2}'

Call the Actor through REST, Apify client libraries, schedules, or webhooks. Send its default dataset to a spreadsheet, Make, Zapier, a content database, or your own reporting workflow. Composite post IDs are useful for comparing repeated runs.

Reliability and public wall limits ⚠️

The Actor processes up to five requests concurrently and retries temporary request failures. An invalid screen name, wrong target type, or unavailable page produces a failed row while other profiles continue.

A later-page failure leaves previously saved posts in the dataset and adds a failed row for the same input. Duplicate suppression applies within a wall's pagination; repeated runs need their own ID-based comparison.

VK may restrict wall history, omit counts or attachments, and change public page layouts. Supplied repost history is included to a maximum of three levels; original source posts are not separately crawled. Media URLs may expire, and the Actor does not download binary files.

Frequently asked questions ❓

Enter plain profile screen names. For https://vk.ru/durov, submit durov.

Will two pages always produce 20 posts?

No. Wall offsets advance by 10, but short responses, duplicates, restrictions, and the end of available content can reduce the number saved.

Are profile details a separate result?

No. The source profile's public details are included on every post row, so the exported post keeps its account context.

Does it collect all historical wall posts?

It collects the pages available within your budget. Public restrictions, source totals, and empty pages can end collection before a complete history is available.

Does it return comments or download media?

It returns the available comment count and media references. Use Post Comments Scraper for individual comments; binary media files are not downloaded.

What happens when a wall is empty?

If no posts have been collected, an empty wall produces a failed row. An empty page after successful collection simply ends pagination.

For a reproducible issue, share the run ID, a public profile screen name, the page budget, and the expected behavior through the Actor's support channel.

Use public wall content in accordance with applicable privacy, copyright, contractual, and platform requirements.