Snapchat Public Explore Search Scraper avatar

Snapchat Public Explore Search Scraper

Pricing

from $2.99 / 1,000 search results

Go to Apify Store
Snapchat Public Explore Search Scraper

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

w3crawler

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

11

Monthly active users

12 days ago

Last modified

Categories

Features

Limited permissions

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

  1. Open the Actor Store page and select Try for free or open the Input tab.
  2. Enter a public Explore search phrase in query, for example coffee.
  3. Keep contentTypes at its default to accept every supported card type, or remove the types you do not need. Keep maxItems and maxPages small for the first run.
  4. 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.

FieldTypeRequired?DefaultMeaning
querystringRequiredcoffeeNon-blank public Snapchat Explore search phrase, 1–120 characters.
contentTypesstring arrayOptional["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.
maxItemsintegerOptional25Maximum unique result records saved, 1–100.
maxPagesintegerOptional2Maximum page extraction and scroll passes, 1–10. Each pass re-reads the same Explore page after scrolling.
pageScrollDelayMsintegerOptional700Wait after navigation and after each scroll for lazy-loaded cards, 200–6,000 ms.
requestDelayMsintegerOptional500Wait between scroll passes, 0–5,000 ms.
localestringOptionalen-USBrowser locale and Accept-Language prefix, up to 35 characters.
headlessbooleanOptionaltrueRun Chromium without a visible browser window.
maxResponseBytesintegerOptional5000000Maximum rendered page HTML retained for one browser attempt, 100,000–10,000,000 bytes.
timeoutSecsintegerOptional45Maximum navigation wait per browser attempt, 5–60 seconds.
maxRequestRetriesintegerOptional1Bounded browser retries for the public search page, 0–2.
proxyConfigurationobjectOptional{"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.

FieldTypeAvailabilityMeaning
recordIdstringAlwaysStable identifier derived from the result type and target URL or identifier.
recordTypestring enumAlwaysCard type: lens, spotlight, user, place, or topic.
legacyRecordTypestringWhen publishedBackward-compatible copy of the card type.
positionintegerAlwaysOne-based position after deduplication and the maxItems limit.
sourceWebsitestringAlwaysOfficial Snapchat source website.
sourceUrlstringAlwaysPublic Explore page that supplied the card.
querystringAlwaysSearch phrase used for the Explore page.
titlestringAlwaysCard title as displayed on the public page.
urlstringAlwaysPublic target URL exposed by the card.
descriptionstringWhen publishedCard description or subtitle text.
imageUrlstringWhen publishedPublic preview-image URL reference.
usernamestringWhen publishedPublic username associated with a user, lens, or Spotlight card.
topicstringWhen publishedTopic label associated with the card.
placeNamestringWhen publishedPlace name shown on a place card.
externalIdstringWhen publishedSource identifier parsed from the card URL, such as a lens UUID.
tagsstring arrayWhen publishedPublic tags or labels shown with the card.
scrapedAtstringAlwaysTime 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.

FieldMeaning
actorActor slug that produced the run artifact.
recordTypeArtifact discriminator; runSummary.
statusActor process status: SUCCEEDED or FAILED. A clean empty result is SUCCEEDED.
runStatusCanonical run status; matches status.
dataStatusCompleteness of the saved cards: COMPLETE, PARTIAL, NO_RESULTS, or FAILED.
querySearch phrase used for the Explore page.
itemCountNumber of cards saved to the dataset.
publicRecordsNumber of public card records saved.
diagnosticCountNumber of operational issues recorded for the run.
attemptCountBrowser extraction attempts, including retries.
pageCountExplore page scroll passes completed.
candidateCountCard candidates parsed before type filtering and deduplication.
deduplicatedUnique result identities after deduplication, before the final cap.
uniqueIdentitiesUnique result identities saved.
duplicateCountDuplicate cards removed.
incompleteRecordCountCards skipped because required public fields were missing.
requestErrorCountBrowser requests that produced an error.
failedRequestCountBrowser requests that remained failed after retries.
publicJsonResponseCountPublic JSON responses observed by the browser.
renderedMediaElementCountLargest observed count of rendered media elements.
visitedUrlsPublic Snapchat URLs visited.
limitsInput bounds and proxy settings used for the run.
directHttpWhether direct HTTP transport was used; always false.
sourceTransportBrowser transport used, chromium-rendered-public-page.
proxyUsedWhether Apify Proxy was used.
customUserAgentUsedWhether a custom user agent was used; always false.
stealthPatchesUsedWhether stealth patches were used; always false.
sourceHuman-readable public source description.
provenanceStable extraction-implementation label.
accessPolicyPublic-data and access-policy disclosure.
datasetWriteFailureCountDataset writes that failed after collection.
optionalOutputFailureCountOptional artifact writes that failed after the dataset was saved.
startedAtRun start time in ISO UTC.
completedAtRun completion time in ISO UTC.
scrapedAtTime the summary was written, in ISO UTC.
StatusData statusMeaning
SUCCEEDEDCOMPLETECards were saved without an extraction problem.
SUCCEEDEDPARTIALSome cards were saved, but a request or extraction problem occurred. Saved rows remain available.
SUCCEEDEDNO_RESULTSThe page completed cleanly and returned no eligible cards.
FAILEDFAILEDA 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.