Snapchat Public Explore Search Scraper
Pricing
from $2.99 / 1,000 search results
Snapchat Public Explore Search Scraper
Use bounded Playwright sessions on public Snapchat Explore search pages to extract normalized lens, Spotlight, user, place, and topic result cards.
Pricing
from $2.99 / 1,000 search results
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
11
Monthly active users
12 days ago
Last modified
Categories
Features
Share
Search a public Snapchat Explore page and return the lens, Spotlight, user, place, and topic cards it renders for a query. The Actor uses anonymous Chromium, waits for lazy-loaded sections, scrolls through bounded passes, and normalizes the visible card links and text with local type filtering and deduplication.
Get started
- Open the Actor Store page and select Try for free or open the Input tab.
- Enter a public Explore search phrase in
query, for examplecoffee. - Keep
contentTypesat its default to accept every supported card type, or remove the types you do not need. KeepmaxItemsandmaxPagessmall for the first run. - Start the Actor, open the dataset, and export the saved cards as JSON, CSV, or Excel. Open Run summary (
OUTPUT_SUMMARY) to check the outcome and counts.
Input
query is required. All other fields are optional and the defaults below are ready to use. Unsupported field names and out-of-range values are rejected before the browser starts.
| Field | Type | Required? | Default | Meaning |
|---|---|---|---|---|
query | string | Required | coffee | Non-blank public Snapchat Explore search phrase, 1–120 characters. |
contentTypes | string array | Optional | ["lens","spotlight","user","place","topic"] | Card types to retain: lens, spotlight, user, place, or topic. An empty array accepts all supported types; up to 5 values. |
maxItems | integer | Optional | 25 | Maximum unique result records saved, 1–100. |
maxPages | integer | Optional | 2 | Maximum page extraction and scroll passes, 1–10. Each pass re-reads the same Explore page after scrolling. |
pageScrollDelayMs | integer | Optional | 700 | Wait after navigation and after each scroll for lazy-loaded cards, 200–6,000 ms. |
requestDelayMs | integer | Optional | 500 | Wait between scroll passes, 0–5,000 ms. |
locale | string | Optional | en-US | Browser locale and Accept-Language prefix, up to 35 characters. |
headless | boolean | Optional | true | Run Chromium without a visible browser window. |
maxResponseBytes | integer | Optional | 5000000 | Maximum rendered page HTML retained for one browser attempt, 100,000–10,000,000 bytes. |
timeoutSecs | integer | Optional | 45 | Maximum navigation wait per browser attempt, 5–60 seconds. |
maxRequestRetries | integer | Optional | 1 | Bounded browser retries for the public search page, 0–2. |
proxyConfiguration | object | Optional | {"useApifyProxy":false} | Optional Apify Proxy settings used as a transparent browser transport. Direct public access is the default. |
Full default input:
{"query": "coffee","contentTypes": ["lens","spotlight","user","place","topic"],"maxItems": 25,"maxPages": 2,"pageScrollDelayMs": 700,"requestDelayMs": 500,"locale": "en-US","headless": true,"maxResponseBytes": 5000000,"timeoutSecs": 45,"maxRequestRetries": 1,"proxyConfiguration": {"useApifyProxy": false}}
The Actor reads the public Explore page at the Snapchat web host. contentTypes is a local post-extraction filter, not a Snapchat search parameter, and maxPages controls scroll passes over that page rather than separate URLs. No login, private API, CAPTCHA solving, or access-control bypass is used.
Output
The dataset contains one row per saved Explore card. recordType identifies the card type, and optional fields are omitted when the rendered card does not expose them. Values are not inferred, and no diagnostic or placeholder rows are written.
| Field | Type | Availability | Meaning |
|---|---|---|---|
recordId | string | Always | Stable identifier derived from the result type and target URL or identifier. |
recordType | string enum | Always | Card type: lens, spotlight, user, place, or topic. |
legacyRecordType | string | When published | Backward-compatible copy of the card type. |
position | integer | Always | One-based position after deduplication and the maxItems limit. |
sourceWebsite | string | Always | Official Snapchat source website. |
sourceUrl | string | Always | Public Explore page that supplied the card. |
query | string | Always | Search phrase used for the Explore page. |
title | string | Always | Card title as displayed on the public page. |
url | string | Always | Public target URL exposed by the card. |
description | string | When published | Card description or subtitle text. |
imageUrl | string | When published | Public preview-image URL reference. |
username | string | When published | Public username associated with a user, lens, or Spotlight card. |
topic | string | When published | Topic label associated with the card. |
placeName | string | When published | Place name shown on a place card. |
externalId | string | When published | Source identifier parsed from the card URL, such as a lens UUID. |
tags | string array | When published | Public tags or labels shown with the card. |
scrapedAt | string | Always | Time the card was saved, in ISO UTC. |
The example below is a real saved row from the 2026-10-25 run, limited to fields declared in the dataset schema. That run requested two results with all card types enabled; both saved rows were lenses.
{"recordId": "snapchat_search_9be875a9422764f16d8d487c","recordType": "lens","legacyRecordType": "lens","position": 1,"sourceWebsite": "https://www.snapchat.com/","sourceUrl": "https://www.snapchat.com/explore/coffee","query": "coffee","title": "CoffeeNaif.F |📸🍂","url": "https://www.snapchat.com/unlock/?type=SNAPCODE&uuid=3601b99c9e2d47ac892869814cf86ec5","description": "CoffeeNaif.F |📸🍂","imageUrl": "https://community-lens.storage.googleapis.com/preview-media/thumbnail/dfef1f8c-eccc-4213-b5bb-16422a0f5dda.jpg","externalId": "3601b99c9e2d47ac892869814cf86ec5","scrapedAt": "2026-10-25T21:42:05.115Z"}
Run summary
Run summary is stored separately from the dataset in the run's key-value store under OUTPUT_SUMMARY; OUTPUT is a compatibility alias with the same core fields. SOURCE_METADATA records the public-source policy and transport details.
| Field | Meaning |
|---|---|
actor | Actor slug that produced the run artifact. |
recordType | Artifact discriminator; runSummary. |
status | Actor process status: SUCCEEDED or FAILED. A clean empty result is SUCCEEDED. |
runStatus | Canonical run status; matches status. |
dataStatus | Completeness of the saved cards: COMPLETE, PARTIAL, NO_RESULTS, or FAILED. |
query | Search phrase used for the Explore page. |
itemCount | Number of cards saved to the dataset. |
publicRecords | Number of public card records saved. |
diagnosticCount | Number of operational issues recorded for the run. |
attemptCount | Browser extraction attempts, including retries. |
pageCount | Explore page scroll passes completed. |
candidateCount | Card candidates parsed before type filtering and deduplication. |
deduplicated | Unique result identities after deduplication, before the final cap. |
uniqueIdentities | Unique result identities saved. |
duplicateCount | Duplicate cards removed. |
incompleteRecordCount | Cards skipped because required public fields were missing. |
requestErrorCount | Browser requests that produced an error. |
failedRequestCount | Browser requests that remained failed after retries. |
publicJsonResponseCount | Public JSON responses observed by the browser. |
renderedMediaElementCount | Largest observed count of rendered media elements. |
visitedUrls | Public Snapchat URLs visited. |
limits | Input bounds and proxy settings used for the run. |
directHttp | Whether direct HTTP transport was used; always false. |
sourceTransport | Browser transport used, chromium-rendered-public-page. |
proxyUsed | Whether Apify Proxy was used. |
customUserAgentUsed | Whether a custom user agent was used; always false. |
stealthPatchesUsed | Whether stealth patches were used; always false. |
source | Human-readable public source description. |
provenance | Stable extraction-implementation label. |
accessPolicy | Public-data and access-policy disclosure. |
datasetWriteFailureCount | Dataset writes that failed after collection. |
optionalOutputFailureCount | Optional artifact writes that failed after the dataset was saved. |
startedAt | Run start time in ISO UTC. |
completedAt | Run completion time in ISO UTC. |
scrapedAt | Time the summary was written, in ISO UTC. |
| Status | Data status | Meaning |
|---|---|---|
SUCCEEDED | COMPLETE | Cards were saved without an extraction problem. |
SUCCEEDED | PARTIAL | Some cards were saved, but a request or extraction problem occurred. Saved rows remain available. |
SUCCEEDED | NO_RESULTS | The page completed cleanly and returned no eligible cards. |
FAILED | FAILED | A fatal error occurred before any usable card was saved. |
Example OUTPUT_SUMMARY from the saved run. One browser request failed, so the two saved lens rows are reported as PARTIAL rather than COMPLETE.
{"actor": "snapchat-search-scraper","recordType": "runSummary","status": "SUCCEEDED","runStatus": "SUCCEEDED","dataStatus": "PARTIAL","query": "coffee","itemCount": 2,"publicRecords": 2,"diagnosticCount": 0,"attemptCount": 2,"pageCount": 1,"candidateCount": 175,"deduplicated": 2,"uniqueIdentities": 2,"duplicateCount": 0,"incompleteRecordCount": 0,"requestErrorCount": 1,"failedRequestCount": 1,"publicJsonResponseCount": 0,"renderedMediaElementCount": 164,"visitedUrls": ["https://www.snapchat.com/explore/coffee"],"limits": {"maxItems": 2,"maxPages": 1,"pageScrollDelayMs": 200,"requestDelayMs": 0,"locale": "en-US","headless": true,"maxResponseBytes": 5000000,"timeoutSecs": 45,"includeDiagnostics": false,"maxRequestRetries": 1,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}},"directHttp": false,"sourceTransport": "chromium-rendered-public-page","proxyUsed": true,"customUserAgentUsed": false,"stealthPatchesUsed": false,"source": "Snapchat public Explore search pages","provenance": "snapchat_explore_search_v2","accessPolicy": "Visible public Snapchat Explore results only; no login, private API, CAPTCHA solving, or access-control bypass. Apify Proxy is supported only as a transparent browser transport.","startedAt": "2026-10-25T21:41:57.032Z","completedAt": "2026-10-25T21:42:05.117Z","scrapedAt": "2026-10-25T21:42:05.117Z"}
Coverage and limitations
The Actor reads the public web Explore page for one query. It does not call the Snapchat app search API, sign in, access viewer-private data, solve CAPTCHAs, or bypass access controls. Explore is a rendered, lazy-loaded page, so the saved cards depend on what Chromium can see after navigation and up to 10 scroll passes. maxPages does not paginate through separate result URLs; it repeats extraction on the same page after scrolling.
contentTypes filters parsed cards locally. An empty array accepts all supported types, and requesting a type that the page does not render simply produces fewer or no rows. Cards that lack a title, target URL, or other required public fields are skipped rather than guessed. maxItems caps the saved rows after deduplication.
In the saved run, 175 candidates produced two lens rows with maxItems set to 2, and one browser request failed, which is why the run reports dataStatus: "PARTIAL". Public Explore layouts, card ordering, and available result types can change between runs; blocked, empty, or partial responses are reported in OUTPUT_SUMMARY and logs rather than written as fabricated rows. Apify Proxy is supported only as a transparent browser transport.
Usage and support
Run cost depends on Apify browser compute, scroll passes, retries, and optional proxy usage. Start with maxItems around 10 and maxPages: 1, inspect the dataset and OUTPUT_SUMMARY, then increase the scroll passes if you need more cards. A larger pageScrollDelayMs gives lazy-loaded sections more time but increases run duration. See the Actor's Pricing tab for current account rates.
Use the Actor Issues page to report a problem. Include the run ID, the input used, and the OUTPUT_SUMMARY; do not include tokens, cookies, or private data. This Actor is not affiliated with, endorsed by, or sponsored by Snapchat. Use it only for public data and in accordance with Snapchat's terms, robots guidance, and applicable law. Public results can contain personal information; do not use the output for unauthorized profiling or contact.