{
  "openapi": "3.0.1",
  "info": {
    "title": "Threads Posts & Follower Count Scraper - Likes, Replies, Search",
    "description": "For brand monitoring, influencer research and competitor tracking: Threads posts by account, keyword or URL with likes, replies, reposts, quotes, images and videos, plus exact follower counts and bios. Filter by language, keyword and minimum likes. Monitoring returns only new posts. No login.",
    "version": "0.1",
    "x-build-id": "JlHBbQanqbABqA5P8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~threads-posts-and-followers-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-threads-posts-and-followers-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/neverempty~threads-posts-and-followers-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-threads-posts-and-followers-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/neverempty~threads-posts-and-followers-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-threads-posts-and-followers-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": {
          "usernames": {
            "title": "Threads accounts",
            "type": "array",
            "description": "Usernames to read, one per line: zuck, @zuck or https://www.threads.com/@zuck. Each account gives one profile row (exact follower count, bio, verified badge) and its newest posts. If usernames, searchQueries and postUrls are all empty with monitoring off, the example account @zuck is read.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Words to search Threads for, one per line. Each keyword returns the top posts Threads shows for it (up to about 20). Leave empty to skip search.",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post URLs",
            "type": "array",
            "description": "Threads post links such as https://www.threads.com/@zuck/post/DeZgeQhm6RW (threads.net links work too). Each link returns that post with its current like, reply, repost and quote counts. Leave empty to skip.",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerAccount": {
            "title": "Maximum posts per account",
            "minimum": 0,
            "maximum": 300,
            "type": "integer",
            "description": "How many of the newest posts to return for each account (0 = profile row only, for follower tracking). Threads shows about the newest 150 threads of an account to visitors who are not logged in.",
            "default": 30
          },
          "maxPostsPerQuery": {
            "title": "Maximum posts per keyword",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many posts to return for each search keyword, after the filters below.",
            "default": 20
          },
          "includeProfile": {
            "title": "Return a profile row for each account",
            "type": "boolean",
            "description": "On = one row per account with the exact follower count, full name, bio, bio links, verified badge and profile picture. Off = posts only.",
            "default": true
          },
          "onlyPostsContainingQuery": {
            "title": "Only posts that contain the keyword",
            "type": "boolean",
            "description": "On = keyword results keep only posts whose text contains every word of the keyword, so replies and context posts that do not mention it are left out (free). Off = every post Threads shows for the keyword.",
            "default": true
          },
          "languages": {
            "title": "Languages (optional)",
            "type": "array",
            "description": "Keep only posts in these languages, as two-letter codes such as en, ja, es. The language is detected from the post text; posts too short to tell are left out when this is set. Leave empty for all languages.",
            "items": {
              "type": "string"
            }
          },
          "minLikes": {
            "title": "Minimum likes (optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts with at least this many likes. 0 keeps every post. Posts whose author hides like counts are left out when this is above 0.",
            "default": 0
          },
          "postedAfter": {
            "title": "Posted on or after (optional)",
            "type": "string",
            "description": "Only posts created on or after this date (UTC), for example 2026-10-01 or 2026-10-01T12:00:00Z. Leave empty for no date limit."
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only posts not returned before",
            "type": "boolean",
            "description": "Off = every run returns the newest posts. On = the Actor remembers which posts it returned for each account and keyword, and later runs return only new ones. Profile rows and post URLs are returned on every run (so follower counts can be tracked over time). In monitoring mode each account, keyword or post URL read costs a small check fee, plus the price of each row returned. Do not put the same input in two schedules that can run at the same time.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget what was returned for these inputs",
            "type": "boolean",
            "description": "Clears what was remembered for the accounts and keywords in this input, so the next monitoring run starts over. Turn it off again after one run.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}