Snapchat Spotlight Video Downloader avatar

Snapchat Spotlight Video Downloader

Pricing

from $2.40 / 1,000 spotlight video resolveds

Go to Apify Store
Snapchat Spotlight Video Downloader

Snapchat Spotlight Video Downloader

Archive authorized public Snapchat Spotlight videos from supplied URLs. Export exact video metadata, source provenance and optional bounded MP4 files with SHA-256 hashes. No private Stories or discovery.

Pricing

from $2.40 / 1,000 spotlight video resolveds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Archive rights-authorized public Spotlight clips from supplied URLs with this Snapchat Spotlight video downloader. Get exact video metadata, original source provenance and optional MP4 files stored with SHA-256 checksums. It resolves your video, not a recommended replacement.

What it does

Supply canonical public Spotlight video URLs. Each unique successfully processed video becomes one dataset row. By default, its MP4 is also saved in the run's key-value store. Switch saveVideos off for metadata and temporary CDN links only.

This is a direct-link archival tool, not a search engine. It does not discover videos, scan profiles, download private Stories, accept login cookies or bypass account-only access. It cannot guarantee HD or availability after a source post is removed.

Who it is for

  • Creators archiving their own public clips.
  • Agencies preserving client-authorized campaign assets.
  • Media operations teams maintaining provenance manifests for approved content.

Public accessibility does not grant copyright or redistribution rights. Use only content you are authorized to process.

Why use it?

An archival manifest needs more than a temporary download link. Stored-file mode records the file key, byte size and hash alongside the exact source ID and observation time. This makes downstream integrity checks and repeatable ingestion straightforward.

The resolver matches the requested ID against structured public source data. A page that contains other videos but lacks your requested video fails instead of silently substituting a popular clip.

Getting started

  1. Copy a public URL with /spotlight/ID or /@username/spotlight/ID.
  2. Add it to Spotlight video URLs.
  3. Keep Store MP4 files enabled if you need persistent bytes rather than a temporary source link.
  4. Run the Actor.
  5. Export dataset rows and copy MP4 records into your own archival storage as needed.

Example input:

{
"startUrls": [{"url":"https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYdXhoeXl1cGtwAZ_NZdDzAZ_NZdAHAAAAAw"}],
"maxItems": 10,
"saveVideos": true,
"maxVideoSizeMb": 20
}

The example URL was anonymously accessible during testing. Public posts can later expire or be removed; replace it with an authorized current URL if needed.

Inputs

FieldDefaultBehavior
startUrlsRequired1–100 canonical HTTPS Snapchat Spotlight {url} objects
maxItems10Global maximum unique successful videos; integer 1–100
saveVideostrueStore MP4 bytes, or metadata-only when false
maxVideoSizeMb20Per-file limit, integer 1–20 MiB; one MiB is 1,048,576 bytes

All inputs are validated before network work. Request-list entries support URL and optional method=GET only; custom payload, headers, userData and other methods are rejected. Zero/unlimited is unsupported. Repeated IDs count once, even if a username path differs. Source URL query strings are stripped. Processing follows input order and stops at the success limit. Unprocessed URLs beyond that limit are not resolved.

The size limit is still validated in metadata-only mode but no media download is performed. Files over the limit fail; they are not truncated. Share links such as /t/..., profile URLs and Story URLs are unsupported; copy the final canonical Spotlight URL instead.

Output fields

GroupFields
IdentitystoryId, snapId, sourceUrl, provenance, observedAt
Contenttitle, caption, postedAt, thumbnailUrl, mediaUrl
CreatorcreatorUsername, creatorName, creatorUrl
VideodurationMs, width, height
EngagementviewCount, shareCount, commentCount
ArchivevideoFileKey, videoFileUrl, videoSizeBytes, sha256

Missing source values remain null, not fabricated zeros. Source titles may be generic. Engagement is an observed source snapshot, not a historical series. Media/thumbnail URLs can expire; a media URL alone is not a permanent archive. Resolution and quality are exactly what Snapchat serves.

In metadata-only mode all archive fields are null. File URLs are storage record addresses, not promises of anonymous access: access follows your Apify storage permissions. Keep tokens out of exported manifests.

Representative result

A tested public clip returned a 540×960 MP4 of 644,444 bytes, duration 8,130 ms. This abbreviated, anonymized record illustrates its structure; identifiers are examples:

{
"storyId": "EXAMPLE_SPOTLIGHT_ID",
"snapId": "EXAMPLE_SPOTLIGHT_ID",
"sourceUrl": "https://www.snapchat.com/spotlight/EXAMPLE_SPOTLIGHT_ID",
"title": "Example creator caption",
"creatorUsername": "examplecreator",
"durationMs": 8130,
"width": 540,
"height": 960,
"videoFileKey": "video-EXAMPLE_SPOTLIGHT_ID.mp4",
"videoSizeBytes": 644444,
"provenance": "snapchat-public-ssr"
}

The dataset contains the full fields listed above, including SHA-256 when a file is stored. Download MP4 files from the key-value store, not from the JSON dataset export.

How much does it cost to archive Snapchat Spotlight videos?

The REPORT summary has no separate event charge.

The Actor uses pay-per-event pricing: one start event per valid run plus one item event per useful video result. Stored-file and metadata-only modes use the same item event; there is no additional download event. Invalid input fails before the start charge. Failed or duplicate videos do not incur an item charge.

The start fee is $0.005 per run. Per-video item prices are:

Spend tierPrice per video
FREE$0.0046
BRONZE$0.004
SILVER$0.00312
GOLD$0.0024
PLATINUM$0.0024
DIAMOND$0.0024

At BRONZE, 1 video costs an estimated $0.009, 10 videos $0.045, and 100 videos $0.405, including the start fee. Consult the live Pricing tab for current tier prices before running. Higher spend tiers depend on qualifying aggregate monthly Store spend under Apify rules, not this Actor's batch size. Example costs are estimates, not guaranteed invoices. Your own storage/export costs can be separate. Runtime, source availability and configured billing limits can affect completion.

Limits and failure behavior

Requests are sequential and transient network/429/5xx failures have at most two retries. No residential proxy, paid API, login service or browser fallback is enabled. An MP4 must be served from an allowed Snapchat CDN host and pass the MP4 header check. Every redirect is checked before requesting its destination.

HTML downloads are capped at 8 MiB; MP4s are capped at the chosen file limit. At most 100 supplied unique videos can be processed in one run. These are processing bounds, not claims of unlimited upstream coverage.

If a requested target fails, successful earlier results remain available, but the run is marked failed with partial output. Inspect the REPORT key for counts and query-free failed source URLs. Do not treat partial rows as a complete batch.

Budget exhaustion stops further output; inspect actual results and run charges.

Integrations

Export the default dataset to JSON/CSV for a rights ledger or asset manifest. Fetch each videoFileUrl with authorized Apify storage access and stream the MP4 into your own storage outside model context. Verify the bytes against sha256 before accepting them into your archive.

Apify schedules can re-run an explicitly maintained list of URLs. Scheduling does not discover new posts or guarantee continued access. Webhooks can trigger ingestion after success; route failed runs to partial-result review rather than silently ingesting an incomplete batch.

API: cURL

Keep the token in an environment variable:

curl -X POST \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
'https://api.apify.com/v2/acts/automation-lab~snapchat-spotlight-video-downloader/runs' \
-d '{"startUrls":[{"url":"https://www.snapchat.com/spotlight/EXAMPLE_SPOTLIGHT_ID"}],"saveVideos":true}'

This returns run metadata. Retain the run ID, wait for terminal status, and then read its defaultDatasetId and defaultKeyValueStoreId. IDs are not result rows.

API: JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({token: process.env.APIFY_TOKEN});
const run = await client.actor('automation-lab/snapchat-spotlight-video-downloader').call({
startUrls: [{url: process.env.SPOTLIGHT_URL}], saveVideos: true
});
if (run.status !== 'SUCCEEDED') throw new Error('Incomplete batch: ' + run.id);
const page = await client.dataset(run.defaultDatasetId).listItems({limit: 20});
console.log(page.items);

API: Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/snapchat-spotlight-video-downloader').call(
run_input={'startUrls': [{'url': os.environ['SPOTLIGHT_URL']}], 'saveVideos': True}
)
if run['status'] != 'SUCCEEDED':
raise RuntimeError('Incomplete batch: ' + run['id'])
print(client.dataset(run['defaultDatasetId']).list_items(limit=20).items)

MCP setup

Use the scoped hosted endpoint. Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/snapchat-spotlight-video-downloader"

Claude Desktop and Cursor MCP JSON configuration (configure authentication through the client's protected flow):

{"mcpServers":{"apify":{"url":"https://mcp.apify.com?tools=automation-lab/snapchat-spotlight-video-downloader"}}}

VS Code MCP configuration:

{"servers":{"apify":{"type":"http","url":"https://mcp.apify.com?tools=automation-lab/snapchat-spotlight-video-downloader"}}}

Example prompt: “Resolve this authorized Spotlight URL, store its MP4, and return the source ID, file key and hash.” Another: “Resolve these supplied URLs in metadata-only mode, at most five video results; do not discover other posts.”

Discover actual tool names and input schemas with scoped tools/list. Actor selection also exposes run/dataset/key-value-store/abort helpers; it does not expose exactly one tool. Discovery is read-only and is not permission to execute or abort.

After an authorized invocation, start once and follow that same run ID. call-actor waits at most 45 seconds (waitSecs, default 30). For nonterminal status, check the same run with bounded backoff, for example 2/4/8 seconds capped at 10, and a 120-second total deadline. Set client timeout above server wait plus transport margin. Recover the known run after client timeout; never restart just to poll. If the ID is unknown, report uncertainty. At deadline, report pending with the run ID.

On success, read bounded results: pages of 20 source rows, at most 100 rows and 64 KiB serialized UTF-8 content admitted to model context, whichever comes first. Enforce the byte ceiling host-side and disclose omitted/oversized rows; if the client cannot intercept responses, do not claim a hard byte guarantee. Track source offsets, return the continuation offset, and disclose truncation. Keep full files and exports outside model context. Terminal failures mean partial data, not a complete result. No universal token-savings claim is made.

Legality and data handling

This independent tool is not affiliated with or endorsed by Snapchat or Snap Inc. Source names identify compatibility only. Apify standard terms apply. Respect source terms, privacy law, copyright and the rights of depicted people. Avoid sensitive or unauthorized content.

No AI model is called at runtime. The Actor reads existing public source metadata without generating titles or descriptions. No user cookies, credentials or private accounts are requested. It does not include source-provided generated SEO descriptions as its own output.

Public creator names/usernames, captions, engagement and media are intentionally present in result storage. Network processing is ephemeral; no cross-run cache or shared named dataset is used. Apify stores input, logs, datasets and files under its platform retention settings; copy needed files and delete runs/stores according to your retention policy. There is no additional long-term content backup operated by this Actor.

Failed operations send sanitized diagnostic input, exceptions and actor/build/run IDs to our private GlitchTip service for repair; secret fields and URL queries are removed and reports are retained for 30 days. Diagnostics are not a media archive. Do not put credentials in inputs. Logs use counts and IDs, not captions, source media bytes or signed URLs.

Troubleshooting and FAQ

Why is my URL rejected? Use a canonical Spotlight video URL, not a short share link, Story or profile URL. Only HTTPS snapchat.com and www.snapchat.com are accepted.

Why did a visible page fail? A page may show recommendations when the exact post is unavailable. The Actor refuses to replace your requested ID. The post may also have been removed or become unavailable anonymously.

Why is there no MP4? Set saveVideos=true, check the size cap and inspect REPORT. Metadata-only results intentionally have null archive fields.

Is it HD or watermark-free? No such guarantee. The file is exactly the permitted public MP4 Snapchat returns, without enhancement or watermark removal.

How do I report a bug? Open an Apify Store issue with the run link and a public example URL you are authorized to share. Do not post secrets or private content. Include whether file or metadata-only mode failed.

Use Snapchat Spotlight Discovery Scraper for public discovery metadata, rather than supplied-link file archival. Use Snapchat Public Profile Metadata for public profile identity research. These are separate jobs and do not imply private Story access.