# VK Post Details Scraper – Text, Media & Engagement (`scrapingmonkey/vk-post-details-scraper`) Actor

Extract public VK post details from URLs. Get text, authors, dates, engagement counts, attachment metadata, and supplied repost history in one row per post.

- **URL**: https://apify.com/scrapingmonkey/vk-post-details-scraper.md
- **Developed by:** [ScrapingMonkey](https://apify.com/scrapingmonkey) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

Extract a public VK wall post from its URL, including the text, author, publication time, engagement counts, and available attachments. **VK Post Details Scraper** keeps each post and its supplied repost context in one result row.

Use it to enrich a list of known posts, compare public content performance, or preserve the text and media references needed for research. Both VK.ru and VK.com post links are supported.

| At a glance | Details |
|---|---|
| 📥 Input | Full VK post URLs |
| 📤 Output | Text, author, dates, counts, media references, and available repost details |
| 🧩 Format | One row per unique processed post |
| 🔐 Login required | No VK credentials or cookies |
| 💾 Delivery | One table with matching JSON fields |

### What the VK post details scraper extracts 📝

Available post data includes:

- Composite post ID, numeric post ID, owner ID, and permalink
- Text, author identity, author URL, and avatar
- Publication timestamp, UTC date, and visible date text
- Likes, comments, reposts, and views
- Available photo, video, document, link, poll, or other attachment metadata
- Supplied repost history with its text, author, and attachments
- Pinned, advertising, favorite, and action indicators
- Published copyright and geographic context

Attachment details depend on what the public page supplies. Media URLs and previews are returned as data; the Actor does not download the files.

### How to scrape VK post details 🚀

1. Add the full URL of each public VK wall post.
2. Start the Actor.
3. Review success and failed rows in the dataset.
4. Export the records or join them to a content-analysis workflow.

```json
{
  "inputList": [
    "https://vk.ru/wall-22822305_1721576"
  ]
}
```

Accepted links pointing to the same post are processed once. A link targeting a particular comment still identifies the parent post for this Actor.

### VK post fields and output 📦

| Field group | Included data |
|---|---|
| Post identity | Composite ID, numeric post ID, owner ID, permalink, input, and status |
| Content and author | Text, publication date, timestamp, visible date text, and author details |
| Engagement | Like, comment, repost, and view counts |
| Media and reposts | Available attachment metadata and supplied repost history |
| Additional context | Post type, signer, pinned or advertising indicators, copyright, and geography |

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

```json
{
  "input": "https://vk.ru/wall-12345678_250",
  "status": "success",
  "url": "https://vk.ru/wall-12345678_250",
  "id": "-12345678_250",
  "post_id": 250,
  "owner_id": -12345678,
  "author_id": -12345678,
  "text": "Our next photography workshop takes place this Saturday. See the schedule on our website.",
  "date": "2026-09-08T11:00:00Z",
  "timestamp": 1788865200,
  "date_text": "8 сен 2026 в 14:00",
  "author.id": -12345678,
  "author.name": "Example Photography Workshop",
  "author.url": "https://vk.ru/sample.workshop",
  "author.avatar_url": "https://example.com/community-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,
    -12345678,
    -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": [
    "/name",
    "/link"
  ],
  "copyright.value": [
    "Example Photography Workshop",
    "https://example.com/workshops"
  ],
  "geo.path": [],
  "geo.value": []
}
```

Each post occupies one row in one table. JSON uses the same literal keys, including `author.name`. Variable attachment fields are stored as matching `attachments.path` and `attachments.value` lists. For example, `/0/type` identifies the first attachment's type; its value is at the same position in the value list.

Reposted content, copyright, and geography use the same paired-list pattern. An attachment or supplied repost remains part of the original row. Empty collections yield empty lists; other omitted values can remain empty strings, `0`, or `false`. Failed results retain `input`, set `status` to `failed`, and use `null` for all post-data fields.

### Input requirements and post coverage ⚙️

| Parameter | Type | Required | Rules |
|---|---|---|---|
| `inputList` | array of strings | Yes | At least one full VK post URL |

The Actor accepts HTTP or HTTPS links on `vk.ru` or `vk.com`, including their subdomains. Direct links use `/wallOWNER_ID_POST_ID`, with a negative owner ID for a community wall.

Feed or profile URLs containing `w=wallOWNER_ID_POST_ID` or `wall=OWNER_ID_POST_ID` are also accepted, including a supplied reply suffix. Bare IDs and ordinary profile URLs without a post reference are invalid.

There is no pagination setting because each input targets one post. Supplied repost history is included to a maximum of three levels; it is not a separate crawl of the original authors' walls.

### VK post data use cases 🎯

#### Known-post enrichment

Add text, author details, publication dates, and engagement counts to posts already selected from another workflow.

#### Content-performance research

Compare the public counts and post formats of a defined content sample, accounting for collection time and omitted values.

#### Media-reference catalogs

Organize available photo, video, document, or link references alongside the post that published them.

#### Repost-context analysis

Examine the supplied copy-history text and authors to understand the source context carried by a public repost.

### Pricing and billable post rows 💰

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

Under dataset-item pricing, each saved success or failed row can count as one result. Accepted URLs resolving to the same post are normally processed once, and request retries do not independently add rows.

Attachments and supplied repost history remain within the post row rather than creating additional dataset items.

### VK post details API and integrations 🔌

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

```bash
curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"inputList":["https://vk.ru/wall-22822305_1721576"]}'
```

Call the Actor through REST, Apify client libraries, schedules, or webhooks. Export its default dataset to a spreadsheet, Make, Zapier, a content database, or your own analytics workflow.

### Reliability and public post limits ⚠️

The Actor processes up to five requests concurrently and retries temporary request failures. Invalid URLs, unavailable posts, or pages that remain blocked produce failed rows while other inputs continue.

Public counts can change and may be abbreviated or absent. An omitted numeric value can become zero, while a missing action indicator can become false. Where a numeric publication time is unavailable, a recognized visible date can be converted to a timestamp; the original date text is preserved.

VK can restrict or remove content, alter page layouts, or stop serving media URLs. Attachment and repost coverage depends on what the post page exposes. An inability to save the dataset can stop a run.

### Frequently asked questions ❓

#### Does it accept VK.com links?

Yes. VK.com and VK.ru links are accepted, and the Actor resolves the post reference to a VK.ru permalink.

#### Can I submit a feed link with a selected post?

Yes, if its `w` or `wall` query parameter identifies the wall post. An ordinary profile or feed URL without that reference is insufficient.

#### Does it download attached photos and videos?

No. It returns available attachment metadata, URLs, and previews.

#### Does it return comments?

It returns the available comment count. Use Post Comments Scraper for individual comments and replies exposed in comment pages.

#### Does repost history include every source post?

Only the copy history supplied with the collected post is included, to a maximum of three levels. The Actor does not independently retrieve every source post.

### Support, responsible use, and related actors 🛟

For a reproducible issue, share the run ID, a public post URL, and the expected field or behavior through the Actor's support channel.

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

# Actor input Schema

## `inputList` (type: `array`):

Enter a full VK post URL per item. Direct /wall links, feed or profile links containing w=wall..., and comment links pointing to that post are accepted.

## Actor input object example

```json
{
  "inputList": [
    "https://vk.ru/wall-22822305_1721576"
  ]
}
```

# Actor output Schema

## `posts` (type: `string`):

One success or failed Dataset row per VK post URL.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "inputList": [
        "https://vk.ru/wall-22822305_1721576"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapingmonkey/vk-post-details-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "inputList": ["https://vk.ru/wall-22822305_1721576"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapingmonkey/vk-post-details-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "inputList": [
    "https://vk.ru/wall-22822305_1721576"
  ]
}' |
apify call scrapingmonkey/vk-post-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapingmonkey/vk-post-details-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/0fTJUdgoW14grcXUc/builds/JJjb68fX4foeaqJeo/openapi.json
