VK Video Scraper — VKVideo Search, Channels and Clips avatar

VK Video Scraper — VKVideo Search, Channels and Clips

Pricing

from $0.40 / 1,000 vk video results

Go to Apify Store
VK Video Scraper — VKVideo Search, Channels and Clips

VK Video Scraper — VKVideo Search, Channels and Clips

Extract public VK / VKVideo video and clip metadata from URLs, channels, keywords, and supported playlists. Get engagement, owners, covers, subtitle-track and media references when exposed; access limits apply.

Pricing

from $0.40 / 1,000 vk video results

Rating

0.0

(0)

Developer

Coor Yu

Coor Yu

Maintained by Community

Actor stats

0

Bookmarked

33

Total users

19

Monthly active users

11 hours ago

Last modified

Share

VK Video Scraper: VKVideo Search, Channels and Clips

Extract public VK / VKontakte / VKVideo video and clip metadata from URLs, channels, search, and supported catalogs/playlists. Get titles, descriptions, source engagement, owners, covers, subtitle-track and media references when exposed.

The HTTP runtime uses VK's anonymous web-client token flow, without a user-supplied VK login/API key, browser, or proxy. Apify authentication is separate. Private, deleted, login-only, regional, and other restrictions can prevent access.

Media URLs are not downloaded files. MP4/HLS/DASH links may expire, be IP-bound, or be inaccessible. No playable/durable file is guaranteed. The Actor does not bypass access controls, convert protected streams, or unlock restricted content.

Supported routes

RouteAccepted inputScope
Direct video or clipVK/VKVideo video<owner>_<id> or clip<owner>_<id> links; supported layer/embed formsUp to one matching identity per direct input.
Channel/communityBare handles, signed numeric owner IDs, legacy vk.com/videos<owner> pages, or VKVideo /@handle/all and /clips URLsPublic catalog items and the exposed pagination cursor.
Keyword searchsearchKeywords or a supported URL with a q parameterVK's current public video-search response, not a guaranteed complete ranking.
Playlist/catalogSupported public VK/VKVideo catalog URLsItems exposed by the catalog response and its selected continuation cursor.

Pagination follows the first usable section/block cursor, not every catalog section or nested playlist. Catalogs and search rankings change; complete coverage is not guaranteed.

Quick start

Use a small, metadata-only sample first. This is illustrative input, not a claim of current search availability.

{
"searchKeywords": ["котики"],
"resultsPerInput": 5,
"includeClips": true,
"shouldDownloadVideos": false,
"shouldDownloadCovers": false
}

For mixed inputs, startUrls accepts objects such as {"url":"https://vkvideo.ru/@club228512875/all"} or a direct video<owner>_<id> URL. Dedicated source lists can be combined in the same run.

Input fields

FieldRuntime defaultBehavior and limits
startUrls[]Mixed supported URLs; schema uses URL objects, runtime also accepts strings.
channels[]Handles, owner IDs, or channel/community URLs. Negative IDs identify communities.
searchKeywords[]Non-empty search terms; case-insensitive duplicate search seeds are removed.
videoUrls[]Direct video/clip references. At least one valid source across the four input lists is needed.
resultsPerInput50Integer, 0–5,000 per non-direct source; UI prefill is 5. 0 removes the item-count target but not pagination, runtime, budget, or Free-plan limits.
includeClipstrueControls clips in mixed search/catalog results. Explicit direct clips and /clips pages are still honored when false.
failOnPartialFailurefalseMark the run failed for invalid/empty/failed inputs when true; already saved rows are not rolled back.
maxPagesPerInput100Integer, 1–500, including the first page. Token/owner lookups and retries are additional HTTP requests.
requestTimeoutSecs30Integer, 5–300 seconds per API or optional asset request.
maxRequestRetries2Integer, 0–5 retries for supported transient failures; not an absolute total-request cap.
videoQualitybestbest, 2160, 1440, 1080, 720, 480, 360, 240, or 144. Selects among exposed MP4 references; does not create a missing quality.
shouldDownloadVideosfalseOptional best-effort fetch of an exposed direct MP4; no assured file delivery.
shouldDownloadCoversfalseOptional best-effort fetch of the largest exposed cover.
maxDownloadMegabytes250Integer, 1–2,048 per optional video fetch; covers have an additional 25 MiB ceiling.
downloadConcurrency2Integer, 1–10 concurrent asset workers; source inputs themselves run sequentially.

MP4 selection uses the highest listed quality at/below the request, or the lowest if none is low enough. Without MP4, videoDownloadUrl can be HLS/DASH. availableQualities lists recognized MP4 resolutions only.

Output and source semantics

One row is saved per unique composite videoId (owner_id_video_id). Normalized duplicate seeds/video IDs are removed; first-source sourceType/sourceInput is retained, not all provenance.

Fields include identity/page URL, title/description, optional publication time, duration, dimensions, type, author, stats, cover/media references, subtitles, and UTC ISO scrapedAt. createTimeISO interprets source Unix seconds; duration is a numeric seconds field. Missing titles use Untitled VK video; missing descriptions become empty strings. Other unavailable fields are usually omitted.

  • stats contains parsed source integers, not verified live totals. Zero is preserved; unavailable counts are omitted.
  • author.followers can mean community membership or user followers. verified is VK's label, not an ownership check; enrichment is best effort.
  • hashtags/mentions are title/description text matches, not complete entity metadata.
  • subtitles lists source track language/title/URL/automatic-status, not transcript text. Comment counts do not include comments/replies.
  • mediaExpiresAt parses a selected URL's recognized expires parameter, not verified availability. A missing expiry does not mean permanent access.

Optional asset-fetch limitations

The video option attempts exposed direct MP4 only; HLS/DASH is not converted. Oversized files, permanent errors, empty responses, and HTML/JSON error documents are skipped. storedVideoKey/storedCoverKey appear only after successful storage. Neither a file nor permanent retention is promised.

Failures normally preserve metadata and are counted in RUN_SUMMARY. Fetches occur before dataset writes and add usage costs. Files are memory-buffered; size caps do not prevent every memory failure, especially concurrently. Keep both options false for metadata only, and fetch solely media you are authorized to obtain.

Limits and run status

  • Apify Free plan: first 50 normalized seeds are eligible, with a global 50-row cap. Processing stops at the cap; earlier feeds can consume it. Rows still have event fees.
  • Paid plans: no developer 50-row cap; input/page bounds, source access, runtime, and budgets still apply.
  • Pagination stops on exhaustion, repeated cursor, page cap, or item target. Later pagination errors may preserve earlier items as warnings; strict mode does not ensure full coverage.
  • Zero saved rows fails. Otherwise invalid/empty/failed sources cause warnings unless strict mode marks the run failed after rows may be stored/billed; there is no rollback.
  • RUN_SUMMARY records inputs, rows, duplicates, failures and asset statistics. Its output count follows attempted batch writes; inspect actual dataset/billing under SDK charge limits.

Current pricing

Event / planUSD price
apify-default-dataset-item — FREE$0.00225 per saved row
Same event — BRONZE$0.00045 per saved row
Same event — SILVER / GOLD / PLATINUM / DIAMOND$0.00040 per saved row
apify-actor-start — all tiers$0.0005 per startup event

Startup scales per GB of allocated memory, minimum one event (including the current default 256 MB). It is not a universal fixed fee and can apply on empty/failed runs.

Actor.pushData writes result rows with no additional configured request, custom video, or asset event. Rows can be billed without MP4 or after asset failure. The running user separately pays Apify compute, transfer, and storage, including on empty/failed runs; asset fetches add usage. No downstream Actor or paid data API is called. Event fees are not total costs. Check the Pricing tab.

API example

Use your own Apify authentication; the example does not supply a VK account token:

curl -X POST "https://api.apify.com/v2/acts/funny_ground~vk-video-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchKeywords":["котики"],"resultsPerInput":5,"shouldDownloadVideos":false}'

FAQs

Does an MP4 URL mean a video file was downloaded? No. Metadata-only runs store no video file. Even an explicitly enabled optional fetch can fail; access restrictions still apply.

Can I collect all videos from a channel or playlist? Not guaranteed. Only exposed catalog responses and the selected pagination path are followed, with page, plan, runtime, and budget limits.

Does strict mode refund or remove earlier rows? No. It changes the final failure status, not already stored/billed rows or platform usage.

Use collected public data lawfully and follow VK's terms, copyright rules, and privacy obligations.

Complementary Actors