{
  "openapi": "3.0.1",
  "info": {
    "title": "Tiktok Profile Scraper",
    "description": "TikTok Profile Scraper extracts public TikTok profile data including bio, followers, following, likes, verification, profile URL, and recent videos. Use it for creator research, influencer discovery, competitor monitoring, lead generation, and analytics.",
    "version": "0.1",
    "x-build-id": "g7WYNUQzejwzAA6B4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/coregent~tiktok-profile-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-coregent-tiktok-profile-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/coregent~tiktok-profile-scraper/runs": {
      "post": {
        "operationId": "runs-sync-coregent-tiktok-profile-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/coregent~tiktok-profile-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-coregent-tiktok-profile-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": {
          "profiles": {
            "title": "Profiles",
            "type": "array",
            "description": "TikTok profile URLs or usernames. Accepts a full URL, an @handle, or a bare username. Example: https://www.tiktok.com/@examplecreator, @anothercreator, thirdcreator",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "searchKeywords": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Keywords to search for TikTok user profiles. The scraper will find matching profiles and extract their data. Example: fitness coach, beauty brand",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "resultsPerKeyword": {
            "title": "Results Per Keyword",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of profiles to scrape per search keyword.",
            "default": 10
          },
          "maxTotalProfiles": {
            "title": "Max Total Profiles",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Safety cap on the total number of profiles scraped in one run, across direct input and all keywords. Directly supplied profiles are scraped first. Profiles that fail also count against this cap, since the work was still done.",
            "default": 100
          },
          "strictKeywordMatch": {
            "title": "Only Creators Matching the Keyword",
            "type": "boolean",
            "description": "Drop creators that have no trace of your keyword in their username, display name, or bio. TikTok's search returns genuine matches first and then pads deeper pages with unrelated popular accounts — searching \"tesla\" for 100 results returns creators with no Tesla connection at all. Matching is per word, so \"fitness coach\" still keeps a creator matching only \"coach\". Filtered creators are dropped before their profile is fetched, so they cost you nothing. Turn off to see everything TikTok returns.",
            "default": true
          },
          "minFollowerCount": {
            "title": "Min Followers",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep creators with at least this many followers. 0 = no minimum. Applied to keyword-discovered creators before their profile is fetched, so filtered-out creators cost you nothing and do not count against Max Total Profiles.",
            "default": 0
          },
          "maxFollowerCount": {
            "title": "Max Followers",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep creators with at most this many followers. 0 = no maximum. Useful for finding micro-influencers, e.g. 10000–100000.",
            "default": 0
          },
          "onlyBusinessAccounts": {
            "title": "Only Business-Like Accounts",
            "type": "boolean",
            "description": "Only return creators that look like businesses or professional creators (an email, external link, or business category in the bio). Note: this can only be judged after the profile is fetched, so it does not reduce your bill the way the follower filters do.",
            "default": false
          },
          "includeRecentVideos": {
            "title": "Include Recent Video Snapshot",
            "type": "boolean",
            "description": "Fetch each creator's most recent videos — id, caption, date, URL, views, likes, comments, shares, and duration. Billed as a separate recent-videos event per profile, and only when videos are actually returned: creators with no public posts cost nothing extra. Adds one API call per profile. For full video-level data across a hashtag or keyword, use the TikTok Video Scraper.",
            "default": false
          },
          "maxRecentVideos": {
            "title": "Max Recent Videos per Profile",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Upper limit on recent videos returned per creator — you may get fewer. TikTok serves one page and decides its size (measured at 10 on 2026-07-17, and it moves), so values above that return whatever the page holds. We fetch one page only: a second would double the API cost per profile without returning more creators. Only applies when the recent video snapshot is enabled.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}