{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Email Finder & Scraper: Creator Emails by Username",
    "description": "Find TikTok creator and influencer emails by username, niche keyword or a brand's following list. Reads the bio, the bio link website and Linktree pages, checks the mail server (MX); Instagram, YouTube and other socials, followers. Pay only for creators with an email.",
    "version": "0.1",
    "x-build-id": "5YEtzyqi1ilfY5TN6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s_actors~tiktok-email-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s_actors-tiktok-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/s_actors~tiktok-email-scraper/runs": {
      "post": {
        "operationId": "runs-sync-s_actors-tiktok-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/s_actors~tiktok-email-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-s_actors-tiktok-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": "🔎 Niche keywords",
            "type": "array",
            "description": "One per line: a niche or topic such as fitness coach, skincare, real estate agent, vegan recipes (or a tiktok.com/discover/... link). The Actor takes the creators of TikTok's own topic page for the word and, when it runs out, of related words from TikTok's search suggestions, then looks up each creator's email.",
            "items": {
              "type": "string"
            }
          },
          "profiles": {
            "title": "👤 TikTok accounts",
            "type": "array",
            "description": "One per line: usernames (charlidamelio or @charlidamelio), profile links (tiktok.com/@user) or video links (the video's author is checked). Every account you add is checked, the follower filter does not apply.",
            "items": {
              "type": "string"
            }
          },
          "followingOf": {
            "title": "🤝 Accounts they follow (a brand's creators)",
            "type": "array",
            "description": "One per line: a brand or creator (@gymshark). The Actor checks the accounts it follows, newest first: for a brand these are usually its athletes, ambassadors and partner creators.",
            "items": {
              "type": "string"
            }
          },
          "followersOf": {
            "title": "👥 Followers of an account",
            "type": "array",
            "description": "One per line: an account (@username) whose followers to check, newest first. Followers of big accounts are mostly private people without contacts; use the follower filter to keep creators only.",
            "items": {
              "type": "string"
            }
          },
          "maxProfilesPerSource": {
            "title": "🔢 Max accounts per keyword or list",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "How many new accounts each keyword, following list or followers list adds (after the follower filter). One keyword gives ~60-80 creators per TikTok topic page; more come from related words. 0 = as many as TikTok shows (up to 10 000). Accounts you list one by one are always checked.",
            "default": 100
          },
          "useSuggestions": {
            "title": "➕ Go deeper with related words",
            "type": "boolean",
            "description": "When a keyword's topic page runs out before the limit, continue with related words from TikTok's search suggestions (fitness coach → fitness coach female, online fitness coach...), up to 12 words per keyword.",
            "default": true
          },
          "minFollowers": {
            "title": "⬇️ Min followers",
            "minimum": 0,
            "type": "integer",
            "description": "Skip found accounts with fewer followers (keywords and lists only). Example: 1000 for micro-influencers and up."
          },
          "maxFollowers": {
            "title": "⬆️ Max followers",
            "minimum": 0,
            "type": "integer",
            "description": "Skip found accounts with more followers (keywords and lists only). Example: 100000 to skip celebrities, who rarely answer cold email."
          },
          "onlyWithEmail": {
            "title": "📧 Only accounts with an email",
            "type": "boolean",
            "description": "Keep only accounts with an email in the dataset. Off: also list the accounts without one (with their website, Instagram, YouTube and other links), free of charge.",
            "default": true
          },
          "scanWebsites": {
            "title": "🌐 Read the bio link (website, Linktree)",
            "type": "boolean",
            "description": "Open the link in the bio: a website (home page and its contact page) or a link-in-bio page such as Linktree, Beacons, Stan, komi or hoo.be (and the website it links to). Finds emails that are not in the bio, plus Instagram, YouTube and other profiles. Off: only the bio, faster.",
            "default": true
          },
          "checkMailServer": {
            "title": "✅ Check the mail server (MX)",
            "type": "boolean",
            "description": "Check that every email's domain receives mail (MX records over DNS). Emails on domains without a mail server go to invalidEmails and are never the main email.",
            "default": true
          },
          "onlyNewProfiles": {
            "title": "🆕 Only new accounts since the previous run",
            "type": "boolean",
            "description": "Skip accounts that earlier runs with this option already returned (remembered in your key-value store tiktok-email-seen). Schedule a keyword daily or weekly to collect only new creators.",
            "default": false
          },
          "maxConcurrency": {
            "title": "⚡ Parallel accounts",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Accounts checked at the same time. 5 is fast and gentle; more can make TikTok slow down.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Used only when TikTok refuses direct requests: datacenter proxy by default.",
            "default": {
              "useApifyProxy": true
            }
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Log every retry of TikTok requests.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}