{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Scraper ✅ NO COOKIES",
    "description": "Scrape TikTok profiles, hashtags, search results and video URLs in one run. Add any mix of inputs, filter by date and likes, and add comments, followers and author details. No cookies, no login, no browser. Pay per result; failed lookups are free.",
    "version": "1.0",
    "x-build-id": "9wBgFHVztzcEtiItO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/atomus~tiktok-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-atomus-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/atomus~tiktok-scraper/runs": {
      "post": {
        "operationId": "runs-sync-atomus-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/atomus~tiktok-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-atomus-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": {
          "profiles": {
            "title": "👤 Profiles",
            "type": "array",
            "description": "TikTok usernames, @handles, or profile URLs. Returns the profile and (below) its videos.",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "#️⃣ Hashtags",
            "type": "array",
            "description": "Hashtag names without the #, e.g. \"fyp\", or /tag/ URLs. Returns videos posted under each hashtag.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "🔍 Search queries",
            "type": "array",
            "description": "Keywords to search. Returns matching videos and (optionally) profiles.",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "🔗 Video URLs or IDs",
            "type": "array",
            "description": "TikTok video URLs, short share links (vm.tiktok.com/...), or bare numeric IDs. Returns full video detail.",
            "items": {
              "type": "string"
            }
          },
          "resultsPerPage": {
            "title": "💯 Results per profile / hashtag / search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many videos to return for each profile, hashtag, or search query.",
            "default": 50
          },
          "profileSorting": {
            "title": "↕️ Profile video sorting",
            "enum": [
              "latest",
              "popular",
              "oldest"
            ],
            "type": "string",
            "description": "Order a profile's videos: newest first, most-liked first, or oldest first.",
            "default": "latest"
          },
          "includeReposts": {
            "title": "🔁 Include reposts",
            "type": "boolean",
            "description": "Also include videos the profile reposted, not just its own posts.",
            "default": false
          },
          "excludePinnedPosts": {
            "title": "📌 Exclude pinned posts",
            "type": "boolean",
            "description": "Drop pinned videos from profile results.",
            "default": false
          },
          "maxFollowersPerProfile": {
            "title": "🧑‍🤝‍🧑 Followers per profile ($)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Also scrape this many followers of each profile. Billed as follower per follower returned.",
            "default": 0
          },
          "maxFollowingPerProfile": {
            "title": "🧑‍🤝‍🧑 Following per profile ($)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Also scrape this many accounts each profile follows. Billed as follower per account returned.",
            "default": 0
          },
          "searchSection": {
            "title": "🎯 Search section",
            "enum": [
              "all",
              "video",
              "user"
            ],
            "type": "string",
            "description": "What a search query returns: videos, profiles, or both.",
            "default": "all"
          },
          "maxProfilesPerQuery": {
            "title": "👥 Profiles per search query",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "How many profiles to return per search query (when the search section includes profiles).",
            "default": 10
          },
          "onlyPostsNewerThan": {
            "title": "📅 Only videos posted after",
            "type": "string",
            "description": "Keep only videos published on or after this date (YYYY-MM-DD)."
          },
          "onlyPostsOlderThan": {
            "title": "📅 Only videos posted before",
            "type": "string",
            "description": "Keep only videos published on or before this date (YYYY-MM-DD)."
          },
          "minLikes": {
            "title": "⭐ Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos with at least this many likes."
          },
          "maxLikes": {
            "title": "⭐ Maximum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only videos with at most this many likes."
          },
          "commentsPerPost": {
            "title": "💬 Comments per video ($)",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Also scrape this many comments from every video returned. Billed as comment per comment.",
            "default": 0
          },
          "maxRepliesPerComment": {
            "title": "💬 Replies per comment ($)",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "When scraping comments, also fetch this many replies per comment. Billed as comment per reply.",
            "default": 0
          },
          "shouldDownloadVideos": {
            "title": "⬇️ Include a TEMPORARY download URL (free — link expires in hours)",
            "type": "boolean",
            "description": "Adds a no-watermark `temporaryDownloadUrl` to each video. ⚠️ IMPORTANT: it is a TikTok CDN link signed with a short expiry — it stops working (403) after a few HOURS. Download the actual file right away; do NOT store the URL for later. Free: reads a link already in the response, no extra request.",
            "default": false
          },
          "region": {
            "title": "🌍 Region hint",
            "type": "string",
            "description": "Optional 2-letter region hint (e.g. US, GB, BR) passed to TikTok for region-aware results."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}