{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Lookalike Search",
    "description": "🔮 TikTok influencer & creator search: find lookalike creators + 📊 stats + emails from 300M+ accounts.",
    "version": "1.0",
    "x-build-id": "5IBDaN4fNKQuch3b0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dataovercoffee~tiktok-lookalike-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dataovercoffee-tiktok-lookalike-search",
        "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/dataovercoffee~tiktok-lookalike-search/runs": {
      "post": {
        "operationId": "runs-sync-dataovercoffee-tiktok-lookalike-search",
        "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/dataovercoffee~tiktok-lookalike-search/run-sync": {
      "post": {
        "operationId": "run-sync-dataovercoffee-tiktok-lookalike-search",
        "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",
        "required": [
          "seed_usernames"
        ],
        "properties": {
          "seed_usernames": {
            "title": "Seed creators (usernames)",
            "type": "array",
            "description": "TikTok usernames to find lookalikes for. Provide 1-25 handles (e.g. ahormozi) — a profile URL like https://www.tiktok.com/@ahormozi works too (short vm.tiktok.com share links can't be resolved). More seeds = more precise results; creators common to several seeds rank highest.",
            "items": {
              "type": "string"
            }
          },
          "limit": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of lookalike creators to return. The actual count is capped at whichever is lower: this value, or what your \"Maximum cost per run\" allows.",
            "default": 10
          },
          "min_followers": {
            "title": "Min followers",
            "minimum": 1000,
            "type": "integer",
            "description": "Only include creators with at least this many followers."
          },
          "max_followers": {
            "title": "Max followers",
            "minimum": 1000,
            "type": "integer",
            "description": "Only include creators with at most this many followers."
          },
          "min_heart_count": {
            "title": "Min total likes",
            "type": "integer",
            "description": "Only include creators with at least this many total likes (hearts) across all their videos."
          },
          "max_heart_count": {
            "title": "Max total likes",
            "type": "integer",
            "description": "Only include creators with at most this many total likes."
          },
          "min_video_count": {
            "title": "Min videos",
            "type": "integer",
            "description": "Only include creators with at least this many videos."
          },
          "max_video_count": {
            "title": "Max videos",
            "type": "integer",
            "description": "Only include creators with at most this many videos."
          },
          "min_avg_play_count": {
            "title": "Min avg views",
            "type": "integer",
            "description": "Minimum average views per recent video."
          },
          "max_avg_play_count": {
            "title": "Max avg views",
            "type": "integer",
            "description": "Maximum average views per recent video."
          },
          "min_avg_like_count": {
            "title": "Min avg likes",
            "type": "integer",
            "description": "Minimum average likes per recent video."
          },
          "max_avg_like_count": {
            "title": "Max avg likes",
            "type": "integer",
            "description": "Maximum average likes per recent video."
          },
          "min_avg_comment_count": {
            "title": "Min avg comments",
            "type": "integer",
            "description": "Minimum average comments per recent video."
          },
          "max_avg_comment_count": {
            "title": "Max avg comments",
            "type": "integer",
            "description": "Maximum average comments per recent video."
          },
          "genders": {
            "title": "Creator gender",
            "type": "array",
            "description": "Only include creators of these genders. Leave empty for every gender.",
            "items": {
              "type": "string",
              "enum": [
                "female",
                "male"
              ],
              "enumTitles": [
                "Female",
                "Male"
              ]
            }
          },
          "only_verified": {
            "title": "Verified accounts only",
            "type": "boolean",
            "description": "Only include creators with the verified badge.",
            "default": false
          },
          "only_with_email": {
            "title": "Has a contact email only",
            "type": "boolean",
            "description": "Only include creators with a known contact email (from their bio/signature or links in their bio). Best for direct outreach.",
            "default": false
          },
          "primary_languages": {
            "title": "Primary languages",
            "type": "array",
            "description": "Only include creators whose profile language is one of these. Leave empty for every language. Pick languages your SEED creators already post in — results are the creators most similar to your seeds, so seeding English creators and then asking for German leaves very little to match and you may get few or no results. Creators whose language isn't known are left out when you set this.",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "es",
                "id",
                "ar",
                "fr",
                "ru",
                "pt",
                "vi",
                "th",
                "de",
                "tr",
                "it",
                "ja",
                "pl",
                "ro",
                "uk",
                "nl",
                "ms",
                "km",
                "ko",
                "zh",
                "hu",
                "my",
                "sv",
                "el",
                "az",
                "he",
                "cs",
                "bg",
                "hr",
                "nb",
                "da",
                "fi",
                "hi",
                "bn",
                "sk",
                "uz",
                "kk",
                "lt",
                "gu",
                "fa",
                "sq",
                "ur",
                "mr",
                "sl",
                "ca",
                "kn",
                "et",
                "lv",
                "ta",
                "te",
                "si",
                "jv",
                "pa",
                "sw",
                "is",
                "ka",
                "ml",
                "mn",
                "ga",
                "be",
                "ceb",
                "sr",
                "af",
                "ne",
                "or",
                "tl",
                "yi"
              ],
              "enumTitles": [
                "English",
                "Spanish",
                "Indonesian",
                "Arabic",
                "French",
                "Russian",
                "Portuguese",
                "Vietnamese",
                "Thai",
                "German",
                "Turkish",
                "Italian",
                "Japanese",
                "Polish",
                "Romanian",
                "Ukrainian",
                "Dutch",
                "Malay",
                "Khmer",
                "Korean",
                "Chinese",
                "Hungarian",
                "Burmese",
                "Swedish",
                "Greek",
                "Azerbaijani",
                "Hebrew",
                "Czech",
                "Bulgarian",
                "Croatian",
                "Norwegian",
                "Danish",
                "Finnish",
                "Hindi",
                "Bengali",
                "Slovak",
                "Uzbek",
                "Kazakh",
                "Lithuanian",
                "Gujarati",
                "Persian",
                "Albanian",
                "Urdu",
                "Marathi",
                "Slovenian",
                "Catalan",
                "Kannada",
                "Estonian",
                "Latvian",
                "Tamil",
                "Telugu",
                "Sinhala",
                "Javanese",
                "Punjabi",
                "Swahili",
                "Icelandic",
                "Georgian",
                "Malayalam",
                "Mongolian",
                "Irish",
                "Belarusian",
                "Cebuano",
                "Serbian",
                "Afrikaans",
                "Nepali",
                "Odia",
                "Filipino",
                "Yiddish"
              ]
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Only return creators in these countries. Supports the United States and the United Kingdom. SEED CREATORS FROM THAT REGION TOO — this filter makes the geography explicit, it does not go and find creators your seeds don't resemble, so seeding French creators and asking for US only will return very little. Leave empty to search every country; creators whose country isn't known are left out when you set this.",
            "items": {
              "type": "string",
              "enum": [
                "US",
                "GB"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom"
              ]
            }
          },
          "only_monetized": {
            "title": "Only creators monetizing",
            "type": "boolean",
            "description": "Makes money.",
            "default": false
          },
          "only_not_monetized": {
            "title": "Only creators NOT yet monetizing",
            "type": "boolean",
            "description": "Doesn't make money yet.",
            "default": false
          },
          "only_with_sponsorships": {
            "title": "Only creators with sponsorship history",
            "type": "boolean",
            "description": "Has done sponsored posts.",
            "default": false
          },
          "only_without_sponsorships": {
            "title": "Only creators with NO sponsorship history",
            "type": "boolean",
            "description": "Hasn't done sponsored posts.",
            "default": false
          },
          "only_commerce_users": {
            "title": "Commerce accounts only",
            "type": "boolean",
            "description": "Only include creators flagged as commerce (business) accounts.",
            "default": false
          },
          "only_sellers": {
            "title": "TikTok Shop sellers only",
            "type": "boolean",
            "description": "Only include accounts that run their own TikTok Shop. To find creators who sell other brands' products, use the sales filters below.",
            "default": false
          },
          "min_gmv_usd": {
            "title": "Min TikTok Shop sales (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include creators whose videos drove at least this much in TikTok Shop sales over the sales period, whether or not they run a shop."
          },
          "max_gmv_usd": {
            "title": "Max TikTok Shop sales (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include creators whose videos drove at most this much in TikTok Shop sales over the sales period."
          },
          "min_gpm_usd": {
            "title": "Min TikTok Shop sales per 1,000 views (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include creators whose videos drove at least this much in TikTok Shop sales per 1,000 views over the sales period."
          },
          "max_gpm_usd": {
            "title": "Max TikTok Shop sales per 1,000 views (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include creators whose videos drove at most this much in TikTok Shop sales per 1,000 views over the sales period."
          },
          "gmv_period": {
            "title": "Sales period",
            "enum": [
              "7"
            ],
            "type": "string",
            "description": "The number of days the sales filters cover.",
            "default": "7"
          },
          "exclude_usernames": {
            "title": "Exclude creators (usernames)",
            "type": "array",
            "description": "TikTok usernames to exclude from results — paste the 'unique_id' column from a previous run's output to skip creators you already have. Profile URLs work too. Up to 500,000.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}