{
  "openapi": "3.0.1",
  "info": {
    "title": "Snapchat Scraper — Profiles, Spotlight, Stories & Lenses",
    "description": "Scrape public Snapchat profiles in bulk: subscribers, bio, website, category, verified badge, stories, highlights, Spotlight videos with views, shares, comments and engagement rate, and AR lenses. Find creators by keyword or related accounts. No login. Not affiliated with Snap Inc.",
    "version": "1.0",
    "x-build-id": "Y209oxZHgz94vsvDr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~snapchat-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-snapchat-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/logiover~snapchat-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-snapchat-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/logiover~snapchat-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-snapchat-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "usernames": {
            "title": "Usernames or links",
            "type": "array",
            "description": "Snapchat usernames (kyliejenner, @khaby.lame) or links: https://www.snapchat.com/add/nike, https://www.snapchat.com/@nike, story.snapchat.com/@nike, and Spotlight video links (the video's creator is scraped). One profile row per account. Usernames that have no public Snapchat page are listed in the run's status message and SUMMARY.",
            "items": {
              "type": "string"
            }
          },
          "searchKeywords": {
            "title": "Search keywords (creator discovery)",
            "type": "array",
            "description": "Find creators by niche, brand or topic — e.g. makeup, fitness, car reviews, #funny. For each keyword the actor reads Snapchat search: the creators it suggests to subscribe to (with exact subscriber counts) and the creators of the top Spotlight videos — about 20–45 accounts per keyword. Use many keywords (or the two expansions below) for thousands of profiles.",
            "items": {
              "type": "string"
            }
          },
          "expandTopics": {
            "title": "Also search related topics",
            "type": "boolean",
            "description": "Snapchat suggests ~6 related hashtag topics per keyword (makeup → makeuptutorial, makeupartist …). Turn on to search each of them too (one level deep) — roughly 5–7× more creators per keyword.",
            "default": false
          },
          "expandRelatedAccounts": {
            "title": "Follow related accounts",
            "type": "boolean",
            "description": "Every public profile lists up to 3 similar accounts (\"Related\"). Turn on to scrape them too, breadth-first, up to the depth below — the way to grow a seed list of competitors or influencers into a full niche map.",
            "default": false
          },
          "maxRelatedDepth": {
            "title": "Related-account depth",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many hops to follow from each seed when 'Follow related accounts' is on. 1 = the seeds' related accounts only; each extra level multiplies the candidates by up to ~3.",
            "default": 2
          },
          "maxProfiles": {
            "title": "Max profiles",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Exact number of profile rows to save at most (empty = 1,000; API callers may also send it as maxItems) — usernames from your list count too, so raise it for long lists. The run stops the moment it is reached (Spotlight video rows, if turned on, come on top). Each row is a paid result: for big runs set the run's \"Maximum cost per run\" to at least rows × price; if it covers fewer, the run saves exactly what it covers and ends successfully."
          },
          "minSubscribers": {
            "title": "Minimum subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Only save profiles with at least this many subscribers (0 = no filter). Profiles whose count is hidden and could not be looked up are skipped when a minimum is set. Filtered profiles still lead to their related accounts.",
            "default": 0
          },
          "maxItemsPerSection": {
            "title": "Max items per section",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap for each list on a profile row: story snaps, highlights, Spotlight videos, lenses (counts and Spotlight statistics always cover everything Snapchat shows). 0 = counts and statistics only, for lean rows.",
            "default": 50
          },
          "includeSpotlight": {
            "title": "Spotlight videos",
            "type": "boolean",
            "description": "Spotlight videos shown on the profile with views, shares, comments, boosts, caption, hashtags, sound, duration, video/thumbnail/transcript URLs and Snapchat's AI title and description — plus per-profile totals, average and median views and engagement rate.",
            "default": true
          },
          "includeSpotlightComments": {
            "title": "Spotlight top comments",
            "type": "boolean",
            "description": "Add the top comments Snapchat shows under each Spotlight video (text, author name, likes, replies, date).",
            "default": false
          },
          "spotlightRows": {
            "title": "One extra row per Spotlight video",
            "type": "boolean",
            "description": "Also save every Spotlight video as its own row (rowType = spotlight) with the creator's username and subscriber count — easiest for spreadsheets and content analysis. These rows do not count toward Max profiles.",
            "default": false
          },
          "includeStory": {
            "title": "Story snaps",
            "type": "boolean",
            "description": "The public story currently live on the profile: each snap's media type, media URL, thumbnail and time.",
            "default": true
          },
          "includeHighlights": {
            "title": "Highlights",
            "type": "boolean",
            "description": "Saved story highlights: title, link, thumbnail, number of snaps and date range.",
            "default": true
          },
          "includeHighlightSnaps": {
            "title": "Snaps inside highlights",
            "type": "boolean",
            "description": "Also list each highlight's snaps (media URL, thumbnail, time). Large: celebrity profiles hold hundreds.",
            "default": false
          },
          "includeLenses": {
            "title": "Lenses",
            "type": "boolean",
            "description": "AR lenses published by the account: name, lens link, preview image and video, icon, last update.",
            "default": true
          },
          "lookupHiddenSubscriberCounts": {
            "title": "Look up hidden subscriber counts",
            "type": "boolean",
            "description": "Many brands and publishers hide the count on their profile page. When on, the actor looks the account up in Snapchat search (one extra request) and fills the exact count — measured 9 of 10 hidden counts recovered. Creators found by keyword already have it at no extra cost.",
            "default": true
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Pages fetched in parallel. Leave empty for automatic: 30 on 1 GB, 50 on 2 GB, 80 on 4 GB, 100 above — page parsing is CPU work and Apify gives 1 CPU core per 4 GB of memory, so more memory = faster runs."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify datacenter proxy works (default). Residential is not needed.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}