{
  "openapi": "3.0.1",
  "info": {
    "title": "Threads Scraper: Keyword Search & Profiles (No Login)",
    "description": "Scrape Threads posts by keyword or profile without a login. Keeps only posts that contain your keyword, in your language, above a like count. No duplicate rows, limits honored, text attachments and numeric user ids included. Pay per post; duplicates and failed pages are free.",
    "version": "0.1",
    "x-build-id": "ZejgNYuWghfwcrnOn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/wheaten_steelpan~threads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-wheaten_steelpan-threads-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/wheaten_steelpan~threads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-wheaten_steelpan-threads-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/wheaten_steelpan~threads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-wheaten_steelpan-threads-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": {
          "keywords": {
            "title": "Search keywords",
            "type": "array",
            "description": "One Threads search per keyword and result tab, e.g. espresso, #booktok or a brand name. Logged out, Threads shows about 15–35 posts per keyword and tab, so add several related keywords for more posts. Each post is one row.",
            "items": {
              "type": "string"
            }
          },
          "searchTabs": {
            "title": "Result tabs",
            "type": "array",
            "description": "Threads gives each keyword two result lists that rarely share posts. Both are searched by default. In tests the default list held mostly posts from the last day, and the recent list older posts.",
            "items": {
              "type": "string",
              "enum": [
                "default",
                "recent"
              ],
              "enumTitles": [
                "Default results",
                "Recent results"
              ]
            },
            "default": [
              "default",
              "recent"
            ]
          },
          "requireKeywordInText": {
            "title": "Keep only posts that contain the keyword",
            "type": "boolean",
            "description": "Threads search also returns posts that don't mention the keyword. When on, a post is kept only if every word of the keyword appears in its text, text attachment, topic, quoted post or link title (ignoring case and accents; \"espresso\" also matches \"espressos\"). Dropped posts are free.",
            "default": true
          },
          "profiles": {
            "title": "Profiles",
            "type": "array",
            "description": "Usernames or profile links, e.g. zuck, @zuck or https://www.threads.com/@zuck. Returns the profile's posts, newest first. A few large accounts (news outlets, celebrities) are only shown to logged-in visitors; they are reported as login-required and cost nothing.",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post links",
            "type": "array",
            "description": "Links to single posts, e.g. https://www.threads.com/@zuck/post/DeZtp-TkQHh (threads.net and share links work too). Returns that post as one row. The filters below don't apply to post links. Deleted posts and wrong links are reported as not-found and cost nothing.",
            "items": {
              "type": "string"
            }
          },
          "includeReplies": {
            "title": "Include replies",
            "type": "boolean",
            "description": "Also return the replies shown on each post's page and the author's own follow-up posts, one row each (charged like any post). Logged out, Threads shows only the first replies, usually 3–12 per post.",
            "default": false
          },
          "language": {
            "title": "Language",
            "enum": [
              "any",
              "sq",
              "am",
              "ar",
              "hy",
              "az",
              "bn",
              "eu",
              "be",
              "bg",
              "ca",
              "zh",
              "hr",
              "cs",
              "da",
              "nl",
              "en",
              "et",
              "tl",
              "fi",
              "fr",
              "ka",
              "de",
              "el",
              "gu",
              "he",
              "hi",
              "hu",
              "is",
              "it",
              "ja",
              "kn",
              "ko",
              "ku",
              "lo",
              "lv",
              "lt",
              "ms",
              "ml",
              "mr",
              "no",
              "or",
              "fa",
              "pl",
              "pt",
              "pa",
              "ro",
              "ru",
              "sr",
              "sk",
              "sl",
              "es",
              "sv",
              "ta",
              "te",
              "th",
              "tr",
              "uk",
              "ur",
              "vi",
              "yo"
            ],
            "type": "string",
            "description": "Keep only posts written in this language, detected from the post text. Posts too short to tell (a single word or emoji) are dropped when a language is set. Dropped posts are free.",
            "default": "any"
          },
          "minLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Drop posts with fewer likes. 0 keeps every post.",
            "default": 0
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Drop posts older than this date, or than a time ago such as 7 days. For profiles it also stops paging once posts are older."
          },
          "onlyNewSinceLastRun": {
            "title": "Only posts not returned by an earlier run",
            "type": "boolean",
            "description": "For scheduled runs: skips posts an earlier run of this Actor already returned for any of this run's keywords or profiles. Skipped posts are free. The record is kept for 30 days in a key-value store named threads-scraper-seen in your account.",
            "default": false
          },
          "maxPostsPerInput": {
            "title": "Max posts per keyword tab or profile",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop each keyword tab or profile after this many posts. Keyword searches end sooner (about 15–35 posts per tab logged out); profiles page back until this limit.",
            "default": 100
          },
          "maxItems": {
            "title": "Max posts in total",
            "minimum": 1,
            "type": "integer",
            "description": "Stop the whole run after this many posts. Leave empty for no limit beyond the per-input one and your maximum charge."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}