{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Scraper With Repost Insights Data",
    "description": "TikTok Scraper With Repost Insights Data extracts TikTok videos and repost insights, including captions, creators, views, likes, comments, shares, repost counts, hashtags, timestamps, and engagement metrics. Ideal for content research, trend tracking, competitor analysis, and audience insights.",
    "version": "0.1",
    "x-build-id": "bTZZ5FBn5ZxiUPbwM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~tiktok-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-tiktok-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/simpleapi~tiktok-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-tiktok-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/simpleapi~tiktok-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-tiktok-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": {
          "profileUrls": {
            "title": "👤 TikTok Profile URLs or Usernames",
            "type": "array",
            "description": "📋 Add TikTok profile URLs (e.g., https://www.tiktok.com/@username) or just usernames. Supports bulk input. Videos and/or reposts are scraped per profile depending on the toggles below. Leave empty if you only want to run a search.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "🔍 Search Query",
            "type": "string",
            "description": "🔎 Enter a search query for hashtag or keyword search. Leave empty if you only want to scrape profiles. Examples: 'Ronaldo', '#travel', 'cooking tips'",
            "default": ""
          },
          "searchType": {
            "title": "🏷️ Search Type",
            "enum": [
              "keyword",
              "hashtag"
            ],
            "type": "string",
            "description": "📌 Choose search type: 🔑 'keyword' (general TikTok search) or #️⃣ 'hashtag' (hashtag-specific search). Default: keyword",
            "default": "keyword"
          },
          "maxResults": {
            "title": "📊 Maximum Results",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "🎯 Maximum number of results to collect per profile/search query. Range: 1-1000. Applies separately to videos and to reposts for each profile.",
            "default": 100
          },
          "includeVideos": {
            "title": "📺 Include Profile Videos",
            "type": "boolean",
            "description": "Collect each profile's own uploaded videos. On by default. Turning this off still allows repost-vs-own-video comparisons from a PREVIOUS run's data, but the repost_summary row's own-video fields will be null for this run."
          },
          "includeReposts": {
            "title": "🔄 Include Reposts",
            "type": "boolean",
            "description": "Collect each profile's reposted videos. On by default. This is the actor's core data - required for repostAnalytics and repost_summary."
          },
          "startUrls": {
            "title": "🗂️ Legacy: Profile URLs (startUrls)",
            "type": "array",
            "description": "Base-actor-compatible alias for profileUrls, kept so an existing base input JSON keeps working unmodified. Values here are merged with profileUrls, not replaced.",
            "items": {
              "type": "string"
            }
          },
          "profileScrapeSections": {
            "title": "🗂️ Legacy: Profile Scrape Sections",
            "type": "array",
            "description": "Base-actor-compatible alias for includeVideos/includeReposts. Values here ADD a section (e.g. ['repost'] guarantees reposts run) - use the toggles above to fully disable a section.",
            "items": {
              "type": "string",
              "enum": [
                "videos",
                "repost"
              ]
            }
          },
          "repostAnalyticsEnabled": {
            "title": "📈 Enable Repost Analytics",
            "type": "boolean",
            "description": "Attach a repostAnalytics object (engagementRate, likeViewRatio, aboveProfileAverage) to every repost row. On by default.",
            "default": true
          },
          "includeRepostSummary": {
            "title": "🧮 Include Repost Summary Row",
            "type": "boolean",
            "description": "Push one extra 'repost_summary' row per profile: repost cadence (avg days between reposts) and repost-vs-own-video engagement delta. On by default.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Proxy settings. By default, no proxy is used (direct connection); the actor automatically switches connection methods if a request doesn't return the expected content."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}