{
  "openapi": "3.0.1",
  "info": {
    "title": "TikTok Boolean Search Scraper | Videos & Hashtags",
    "description": "Find TikTok videos and photo posts with AND, OR, NOT, exact phrases, hashtags, date ranges, and engagement filters. Deduplicate results, discover creators and sounds, and export structured data without login or cookies.",
    "version": "0.0",
    "x-build-id": "yLWB2gMiAajv2MRYf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraping_solutions~tiktok-boolean-search-scraper-videos-hashtags/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraping_solutions-tiktok-boolean-search-scraper-videos-hashtags",
        "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/scraping_solutions~tiktok-boolean-search-scraper-videos-hashtags/runs": {
      "post": {
        "operationId": "runs-sync-scraping_solutions-tiktok-boolean-search-scraper-videos-hashtags",
        "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/scraping_solutions~tiktok-boolean-search-scraper-videos-hashtags/run-sync": {
      "post": {
        "operationId": "run-sync-scraping_solutions-tiktok-boolean-search-scraper-videos-hashtags",
        "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": [
          "searchQuery",
          "resultsLimit"
        ],
        "properties": {
          "searchQuery": {
            "title": "Keywords, hashtags, or Boolean query",
            "type": "string",
            "description": "Examples: #skincare; digital marketing; (#skincare OR \"skin routine\") AND serum AND NOT giveaway. Terms use whole-word boundaries, so IA does not match tía, viaje, or diario. More AND, NOT, phrase, date, or engagement restrictions can require additional paid search pages while producing fewer matches. [Validate the query before running](https://flujodato.com/en/boolean-search-validator?platform=tiktok).",
            "default": "(#skincare OR \"skin routine\") AND (serum OR sunscreen) AND NOT giveaway"
          },
          "resultsLimit": {
            "title": "Maximum matching results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of unique TikTok posts saved after all filters, not a guaranteed count. TikTok search returns a ranked subset and can end before this limit. Successful non-empty search pages are charged separately, including pages whose candidates are all rejected.",
            "default": 100
          },
          "contentType": {
            "title": "Content type",
            "enum": [
              "videos_and_photos",
              "videos_only",
              "photos_only"
            ],
            "type": "string",
            "description": "Search both videos and photo posts, or limit discovery to one format. Explicit hashtag feeds can contain both formats and are filtered after discovery.",
            "default": "videos_and_photos"
          },
          "searchCoverage": {
            "title": "Search coverage",
            "enum": [
              "efficient",
              "comprehensive"
            ],
            "type": "string",
            "description": "Efficient uses one combined TikTok query per Boolean branch and normally scans up to 3x the requested result count. Comprehensive adds individual keyword, photo, and hashtag discovery fallbacks and normally scans up to 6x, while every saved result still requires exact Boolean validation. With date filters, the page allowance becomes the exploration guardrail. More scanned pages can increase cost.",
            "default": "efficient"
          },
          "oldestPostDate": {
            "title": "Only content posted after",
            "type": "string",
            "description": "Optional inclusive start date in YYYY-MM-DD format. TikTok search cannot jump directly to an old date, so narrow historical ranges may return fewer matches.",
            "default": ""
          },
          "newestPostDate": {
            "title": "Only content posted before",
            "type": "string",
            "description": "Optional inclusive end date in YYYY-MM-DD format. Using the same date in both fields requests one calendar day.",
            "default": ""
          },
          "minimumViews": {
            "title": "Minimum views",
            "minimum": 0,
            "type": "integer",
            "description": "Save only posts with at least this many reported plays. Use 0 to disable the filter.",
            "default": 0
          },
          "minimumLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Save only posts with at least this many likes. Use 0 to disable the filter.",
            "default": 0
          },
          "minimumComments": {
            "title": "Minimum comments",
            "minimum": 0,
            "type": "integer",
            "description": "Save only posts with at least this many comments. Use 0 to disable the filter.",
            "default": 0
          },
          "minimumShares": {
            "title": "Minimum shares",
            "minimum": 0,
            "type": "integer",
            "description": "Save only posts with at least this many shares. Use 0 to disable the filter.",
            "default": 0
          },
          "minimumSaves": {
            "title": "Minimum saves",
            "minimum": 0,
            "type": "integer",
            "description": "Save only posts with at least this many saves. Use 0 to disable the filter.",
            "default": 0
          },
          "strictBooleanSyntax": {
            "title": "Require explicit Boolean operators",
            "type": "boolean",
            "description": "Reject implicit expressions such as 'bank NOT jobs'. Leave disabled to normalize them to 'bank AND NOT jobs' with a warning.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}