VK Video Scraper — VKVideo Search, Channels and Clips
Pricing
from $0.40 / 1,000 vk video results
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
Maintained by CommunityActor stats
0
Bookmarked
33
Total users
19
Monthly active users
11 hours ago
Last modified
Categories
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
| Route | Accepted input | Scope |
|---|---|---|
| Direct video or clip | VK/VKVideo video<owner>_<id> or clip<owner>_<id> links; supported layer/embed forms | Up to one matching identity per direct input. |
| Channel/community | Bare handles, signed numeric owner IDs, legacy vk.com/videos<owner> pages, or VKVideo /@handle/all and /clips URLs | Public catalog items and the exposed pagination cursor. |
| Keyword search | searchKeywords or a supported URL with a q parameter | VK's current public video-search response, not a guaranteed complete ranking. |
| Playlist/catalog | Supported public VK/VKVideo catalog URLs | Items 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
| Field | Runtime default | Behavior 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. |
resultsPerInput | 50 | Integer, 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. |
includeClips | true | Controls clips in mixed search/catalog results. Explicit direct clips and /clips pages are still honored when false. |
failOnPartialFailure | false | Mark the run failed for invalid/empty/failed inputs when true; already saved rows are not rolled back. |
maxPagesPerInput | 100 | Integer, 1–500, including the first page. Token/owner lookups and retries are additional HTTP requests. |
requestTimeoutSecs | 30 | Integer, 5–300 seconds per API or optional asset request. |
maxRequestRetries | 2 | Integer, 0–5 retries for supported transient failures; not an absolute total-request cap. |
videoQuality | best | best, 2160, 1440, 1080, 720, 480, 360, 240, or 144. Selects among exposed MP4 references; does not create a missing quality. |
shouldDownloadVideos | false | Optional best-effort fetch of an exposed direct MP4; no assured file delivery. |
shouldDownloadCovers | false | Optional best-effort fetch of the largest exposed cover. |
maxDownloadMegabytes | 250 | Integer, 1–2,048 per optional video fetch; covers have an additional 25 MiB ceiling. |
downloadConcurrency | 2 | Integer, 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.
statscontains parsed source integers, not verified live totals. Zero is preserved; unavailable counts are omitted.author.followerscan mean community membership or user followers.verifiedis VK's label, not an ownership check; enrichment is best effort.hashtags/mentionsare title/description text matches, not complete entity metadata.subtitleslists source track language/title/URL/automatic-status, not transcript text. Comment counts do not include comments/replies.mediaExpiresAtparses a selected URL's recognizedexpiresparameter, 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_SUMMARYrecords 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 / plan | USD 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
- VK Influencer Finder — VK creator/community discovery.
- YouTube Scraper — complementary YouTube video research.