VK Clips Scraper avatar

VK Clips Scraper

Pricing

from $1.70 / 1,000 vk clips

Go to Apify Store
VK Clips Scraper

VK Clips Scraper

Collect public VK Clips from recommendations, keywords, or Clip URLs. Save structured metadata, engagement counts, thumbnails, audio details, and temporary media links when VK provides them.

Pricing

from $1.70 / 1,000 vk clips

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

🎬 Build a public VK Clips dataset

For social media researchers, trend analysts, content teams, and developers, this Actor collects public VK Clips from recommendations, keyword searches, or Clip URLs. It saves structured rows with clip links, titles or captions, publication details, creator context, engagement counts, thumbnails, audio data, and temporary MP4 or HLS links when VK provides them. Use the data to review trends, compare public engagement, or feed a dataset into your workflow. It also gives you VK Clips download links when VK returns temporary source links.

📦 Public VK Clip records

Each saved row represents one accepted public VK Clip. The row includes a stable clip ID, canonical URL, available title or caption, publication time, duration, dimensions, owner details, engagement counts, thumbnail data, temporary media links, audio-track data, and the first keyword that found it when keyword discovery is used.

If the same source clip appears again through another keyword or submitted URL, the Actor keeps the first eligible occurrence and ignores later matches. The saved row describes that first match only. Private, deleted, restricted, or otherwise unavailable public content is not collected.

🚀 Find clips your way

Choose one discovery method for each run:

  • Recommendations collects current public clips from VK's recommendation feed.
  • Keywords searches public clips for one or more terms in one keyword run.
  • Clip URLs refreshes current public metadata for submitted public Clip URLs. Unavailable clips are skipped so other submitted URLs can continue.

Set engagement minimums when you want to keep clips above selected public view, like, comment, or repost counts. Set Maximum clips to a positive number when you want a bounded run. Leave it empty to return all available results until the source is exhausted.

⚙️ Input

Input fields

FieldTypeWhat it does
discoveryMethodstringChooses recommendations, keywords, or clipUrls.
keywordsarray of stringsEnter one or more words or phrases for public VK Clip search. Use a separate run for a different search setup.
clipUrlsarray of objectsEnter one or more public VK Clip URLs. Each object contains a url value. The Actor refreshes current public metadata for each URL.
clipUrls[].urlURL stringPublic VK Clip URL to refresh.
maxItemsinteger, optionalSets the maximum number of accepted clips saved by the run. Leave it empty to return all available results until the source is exhausted.
filtersobject, optionalHolds the minimum public engagement counts to apply. Leave a filter field empty to skip that filter.
filters.minViewsinteger, optionalKeeps clips with at least this many public views.
filters.minLikesinteger, optionalKeeps clips with at least this many public likes.
filters.minCommentsinteger, optionalKeeps clips with at least this many public comments.
filters.minRepostsinteger, optionalKeeps clips with at least this many public reposts.

keywords is used with discoveryMethod set to keywords. clipUrls is used with discoveryMethod set to clipUrls. The selected method determines which method-specific field is shown.

Example input

This is the smallest public input from a successful current-beta run:

{
"discoveryMethod": "recommendations",
"maxItems": 100
}

🧾 Output

Run output

FieldTypeWhat it does
datasetItemsstringOpens saved public VK Clips in the default dataset.

Dataset rows

Each dataset row uses one shape. Optional fields appear when VK provides them. The required top-level fields are clipId, clipUrl, and owner.

FieldTypeWhat it does
clipIdstringStable identifier of the public VK Clip.
clipUrlURL stringCanonical public URL of the VK Clip.
titlestring, optionalPublic title of the clip when VK provides one.
descriptionstring, optionalPublic description or caption of the clip when VK provides one.
publishedAtISO date-time string, optionalDate and time when the clip was published, when VK provides it.
durationSecondsinteger, optionalLength of the clip in seconds when VK provides it.
dimensionsobject, optionalSource dimensions of the clip in pixels.
dimensions.widthintegerSource width in pixels.
dimensions.heightintegerSource height in pixels.
ownerobjectPublic creator or community that owns the clip. It always includes id, type, and name.
owner.idstringStable identifier of the public creator or community.
owner.typestringOwner type: user or community.
owner.namestringPublic name of the creator or community.
owner.handlestring, optionalPublic handle when VK provides one.
owner.profileUrlURL string, optionalPublic profile URL when VK provides one.
owner.avatarUrlURL string, optionalPublic avatar image URL when VK provides one.
owner.followersCountinteger, optionalPublic follower count of the creator when VK provides it.
owner.membersCountinteger, optionalPublic member count of the community when VK provides it.
engagementobject, optionalPublic engagement counts for the clip when VK provides them.
engagement.viewsinteger, optionalPublic view count.
engagement.likesinteger, optionalPublic like count.
engagement.commentsinteger, optionalPublic comment count.
engagement.repostsinteger, optionalPublic repost count.
thumbnailobject, optionalOne public thumbnail or preview image when available. It includes url.
thumbnail.urlURL stringDirect public URL of the clip thumbnail or preview image.
thumbnail.widthinteger, optionalThumbnail width in pixels when VK provides it.
thumbnail.heightinteger, optionalThumbnail height in pixels when VK provides it.
thumbnailVariantsarray of objects, optionalPublic thumbnail sizes exposed by VK.
thumbnailVariants[].urlURL stringDirect public URL of a thumbnail size.
thumbnailVariants[].widthinteger, optionalWidth of that thumbnail in pixels.
thumbnailVariants[].heightinteger, optionalHeight of that thumbnail in pixels.
mediaobject, optionalTemporary public MP4 and HLS links returned by VK.
media.mp4array of objects, optionalTemporary public MP4 links in the qualities returned by VK.
media.mp4[].urlURL stringDirect temporary public MP4 URL for a quality.
media.mp4[].qualitystring, optionalQuality label returned by VK.
media.hlsarray of objects, optionalTemporary public HLS links in the qualities returned by VK.
media.hls[].urlURL stringDirect temporary public HLS URL for a quality.
media.hls[].qualitystring, optionalQuality label returned by VK.
audioTrackobject, optionalAssociated public audio-track information when VK exposes it.
audioTrack.idstring, optionalStable identifier of the associated audio track when VK provides it.
audioTrack.titlestring, optionalPublic title of the associated audio track.
audioTrack.artiststring, optionalPublic artist name of the associated audio track.
matchedKeywordstring, optionalThe keyword that first produced this clip during keyword discovery.

Example dataset row

This is a shortened genuine row from the successful current-beta recommendation run. The thumbnailVariants and media arrays are shown as "..." to keep the example short. All other shown values are from that public dataset row.

{
"clipId": "-230258621_456239058",
"clipUrl": "https://vk.com/clip-230258621_456239058",
"owner": {
"id": "-230258621",
"type": "community",
"name": "Dasha Shulgina",
"handle": "shulginadashuk",
"profileUrl": "https://vk.com/shulginadashuk",
"avatarUrl": "https://sun1-94.userapi.com/s/v1/ig2/szOKSZI2Q-XbHqT0SNWrXtzRoe_jU9ZAapYarzNZhK-c3D2suRZV4eVgpwV1bPzrWkhy6Rtxhdy4yu0BIKpQxsCA.jpg?quality=95&crop=49,110,768,768&as=32x32,48x48,72x72,108x108,160x160,240x240,360x360,480x480,540x540,640x640,720x720&ava=1&u=eEDo7cdelW-p3nOaPNTj0vcN8Q1jYb3zpWaWxZaau_Y&cs=100x100"
},
"title": "Clip by @shulginadashuk",
"publishedAt": "2026-03-23T19:41:33.000Z",
"durationSeconds": 59,
"dimensions": {
"width": 480,
"height": 852
},
"engagement": {
"views": 689794,
"likes": 15610,
"comments": 71,
"reposts": 197
},
"thumbnail": {
"url": "https://sun9-68.userapi.com/impg/h7z71GXjT1uf2FqRw4FIOBtbk0My_SQ5dK8zrA/YfM3THXc-Tc.jpg?size=130x96&quality=95&keep_aspect_ratio=1&background=000000&sign=ddc5a22711efa81c76f44c4ab40502fc&c_uniq_tag=JMZjmg6Ir4gFdoRUh1OIyhQCHTOPy1NNLl89IrJSeYE&type=video_thumb",
"width": 130,
"height": 96
},
"thumbnailVariants": "...",
"media": {
"mp4": "...",
"hls": "..."
},
"audioTrack": {
"id": "456239042",
"title": "Original sound"
}
}

💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each accepted public VK Clip saved to the default dataset. See the Pricing tab for the current tier price. The event is based on saved clips, not a fixed run size.

🔌 Integrations

Open the saved dataset in Apify or read its rows through the Apify API. Use the structured fields and source links in your own review or data workflow. The MP4 and HLS links remain temporary links supplied by VK when available.

❓ FAQ

Can I collect private or deleted VK Clips?

No. The Actor collects public VK Clips that the source makes available without bypassing access controls. Private, deleted, restricted, and login-only content is outside its scope.

What happens when a Clip matches more than one keyword or URL?

The first eligible occurrence is saved. Later matches for the same source clip are ignored, and the saved row describes the first match only. In keyword mode, matchedKeyword shows the keyword that first produced it.

Can one run use recommendations, keywords, and Clip URLs together?

No. Choose one discovery method for a run. Use separate runs for different discovery setups.

No. The Actor does not permanently host or mirror video files. It keeps temporary public MP4 and HLS links when VK exposes them.

What happens when I leave Maximum clips empty?

The run returns all available results until the source is exhausted, subject to the selected discovery method and filters.

How do engagement filters work?

Set a minimum for any combination of views, likes, comments, and reposts. A clip must meet each minimum you set to be accepted.

📝 Changelog

v0.0 (18-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré