{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Profile Email Scraper",
    "description": "TikTok Profile Email Scraper SD - TikTok Profile Email Scraper is a powerful tool that extracts public bio emails, names, bios, avatars and exact follower, following, video and like counts from TikTok profile URLs or usernames - public data only, no login. Verified status via Data source Both.",
    "version": "1.0",
    "x-build-id": "9KOqOrac2s4obbU0N"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neuro-data~tiktok-profile-email-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neuro-data-tiktok-profile-email-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/neuro-data~tiktok-profile-email-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neuro-data-tiktok-profile-email-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/neuro-data~tiktok-profile-email-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neuro-data-tiktok-profile-email-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": {
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "Search terms - a niche, job title or industry. The Actor finds TikTok accounts matching each term, then scrapes every account it finds. Use this when you do not already have a list of accounts. You can combine keywords with the profile URLs below.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location (optional)",
            "type": "string",
            "description": "Added to every keyword search, e.g. `New York`. Leave empty to search everywhere. Only applies to keyword search.",
            "default": ""
          },
          "profileUrls": {
            "title": "TikTok profile URLs",
            "type": "array",
            "description": "Full TikTok profile URLs, e.g. `https://www.tiktok.com/@username`. Bare usernames also work. Use this when you already know which accounts you want.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "usernames": {
            "title": "Usernames / handles",
            "type": "array",
            "description": "TikTok handles without the URL. Combined with the list above.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "customDomains": {
            "title": "Email domains",
            "type": "array",
            "description": "Domains the keyword search asks Google for, e.g. `@gmail.com`. Also filters results to these domains. Empty searches the common free-mail providers and keeps every address found.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyWithEmail": {
            "title": "Only save profiles that have an email",
            "type": "boolean",
            "description": "Skip profiles whose public bio contains no contact address.",
            "default": false
          },
          "maxProfiles": {
            "title": "Max profiles",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many profiles have been saved.",
            "default": 100
          },
          "maxPagesPerKeyword": {
            "title": "Pages per keyword",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many Google results pages to read per search query. Raise it to find more accounts. Keyword search only.",
            "default": 5
          },
          "expandQueries": {
            "title": "Expand queries",
            "type": "boolean",
            "description": "Search each keyword in several phrasings (keyword + \"email\", + \"contact\", ...) to reach accounts a single query misses. Keyword search only.",
            "default": true
          },
          "queryModifiers": {
            "title": "Query modifiers",
            "type": "array",
            "description": "Extra words combined with each keyword when query expansion is on. Leave empty to use the defaults for this platform.",
            "default": [
              "email",
              "contact",
              "business inquiries",
              "collab",
              "booking",
              "dm"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many profiles are fetched in parallel, and how many Google searches run at once. Raise it for speed, lower it if you see blocked rows.",
            "default": 10
          },
          "proxyGroup": {
            "title": "Apify proxy group",
            "enum": [
              "RESIDENTIAL",
              "BUYPROXIES94952",
              "UNBLOCKER"
            ],
            "type": "string",
            "description": "RESIDENTIAL is recommended. Profile pages block datacenter IPs.",
            "default": "RESIDENTIAL"
          },
          "countryCode": {
            "title": "Proxy country (optional)",
            "type": "string",
            "description": "Two-letter country code for the proxy (e.g. US, GB, DE). Empty for any.",
            "default": ""
          },
          "dataSource": {
            "title": "Data source",
            "enum": [
              "auto",
              "both",
              "page"
            ],
            "type": "string",
            "description": "Auto asks a public JSON endpoint first and only falls back to the profile page when that returns nothing - fastest and least likely to be blocked. Both also fetches the page to fill in isVerified, isPrivate and externalUrl (two requests per profile). Page skips the endpoint entirely.",
            "default": "auto"
          },
          "googleEmailSearch": {
            "title": "Also search Google for the email",
            "type": "boolean",
            "description": "Before each profile is fetched, search Google through the GOOGLE_SERP proxy for addresses published next to that handle on TikTok. Finds emails that are indexed outside the bio the profile page renders. The profile itself is still fetched through the residential proxy. Turn it off for a faster, single-request-per-profile run.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}