{
  "openapi": "3.0.1",
  "info": {
    "title": "Threads Followers Scraper By Influencer Filter",
    "description": "Threads Followers Scraper: Discover followers of selected Threads profiles and filter by influencer criteria such as follower count and engagement. Collect usernames, bios, profile URLs, and available public details for influencer research, audience analysis, and lead generation.",
    "version": "0.1",
    "x-build-id": "CiJZzHIWnmHjR9KHf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~threads-user-followers-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-threads-user-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/api-empire~threads-user-followers-scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-threads-user-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/api-empire~threads-user-followers-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-threads-user-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",
        "required": [
          "urls",
          "sessionId"
        ],
        "properties": {
          "urls": {
            "title": "📝 Profiles to look up (one or many)",
            "type": "array",
            "description": "🎯 Paste Threads links **or** plain usernames — one per line is fine.\n\n✨ **Examples:** `@zuck` · `https://www.threads.com/@creator` · mix & match as you like!\n\n📋 Running a big list? Go ahead — that's what this field is for.",
            "items": {
              "type": "string"
            }
          },
          "sessionId": {
            "title": "🔑✅ Your logged-in session (required)",
            "type": "string",
            "description": "🍪 This tells Threads *you're you* — same as when you browse the app yourself.\n\n👉 Open your browser's cookie settings for **Instagram** or **Threads**, find **`sessionid`**, and paste the whole value here.\n\n🤫 Stored encrypted as a secret — but still treat it like a password.\n\n⚠️ **Required, no exceptions:** Threads does not serve follower lists to logged-out clients (the `/followers` page 404s and the mobile API answers `require_login`), so without this the run stops with an error.\n\n✅ With a valid session, you only get data your account is allowed to see."
          },
          "maxFollowers": {
            "title": "🎚️ How many followers to collect per profile?",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "📊 A **hard cap** on how many followers to collect for **each** profile. Every follower collected within this cap is written to your dataset.\n\n🛑 Handy when you only need a sample — or raise it for a deeper export.\n\n⚠️ Threads limits how much of a *large* account's follower list it serves: accounts with ~1M+ followers return a single sample of ~50 with no way to page further, so asking for more than that returns what exists, not an error.",
            "default": 200
          },
          "minFollowerCount": {
            "title": "⭐ Influencer bar (minimum follower count)",
            "minimum": 0,
            "type": "integer",
            "description": "⭐ The bar for counting as an **influencer**: a follower qualifies when their own follower count is at least this value.\n\n✅ **This does not delete anyone.** Every follower the run collects is saved to your dataset either way — qualifying ones are flagged `isInfluencer: true` and sorted to the top. Set `dropNonMatching` if you really do want the others removed.\n\n💡 **Pick a realistic number.** Threads follower lists are mostly small accounts — in live samples of @zuck, @mosseri and a mid-sized creator the *median* follower had 7–69 followers, and the most-followed account in a 50-row sample had ~1,200–3,100. `10000` will usually flag nobody. Run once, read `collectedTopFollowerCount` on the summary row, then set your bar under it. `500`–`2000` works well.",
            "default": 0
          },
          "verifiedOnly": {
            "title": "✔️ Influencers must be verified",
            "type": "boolean",
            "description": "⭐ Require a verified badge to count as an influencer. Followers without one are still saved, just flagged `isInfluencer: false`.",
            "default": false
          },
          "mustBePublic": {
            "title": "🔓 Influencers must be public",
            "type": "boolean",
            "description": "⭐ Require a public account to count as an influencer. Private followers are still saved, just flagged `isInfluencer: false`.",
            "default": false
          },
          "dropNonMatching": {
            "title": "🗑️ Only keep influencer matches (advanced)",
            "type": "boolean",
            "description": "⚠️ **Off by default, and usually best left off.** When on, followers that don't meet the influencer criteria above are removed from the dataset instead of being saved with `isInfluencer: false`.\n\n🛟 Safety net: if *no* follower matches, the run keeps all of them anyway rather than handing you an empty dataset — a successful collection should never produce zero rows.",
            "default": false
          },
          "sortBy": {
            "title": "↕️ Sort follower rows by",
            "enum": [
              "followers",
              "username"
            ],
            "type": "string",
            "description": "How to order the follower rows in your dataset. Influencer-flagged rows always come first; this decides the order within each group. `followers` = most followers first; `username` = alphabetical. `influencerRank` is always by real follower count regardless of this setting.",
            "default": "followers"
          },
          "enrichFollowerCounts": {
            "title": "📈 Look up each follower's own follower count",
            "type": "boolean",
            "description": "📈 Threads' follower list normally already includes each account's real follower count (measured: 50/50, 48/48 and 20/20 across live samples). When a row arrives *without* one, this looks it up from that follower's own **public** Threads profile so `minFollowerCount`, `influencerRank` and `influencerTier` work off real data.\n\n✅ Leave it on — an unresolved count stays `null` and can't be ranked, and is never silently treated as 0.\n\n💡 Turn it off only for a faster run where you don't need ranking.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🌐 Network options (optional)",
            "type": "object",
            "description": "🛡️ **Totally optional** — leave the defaults if you're not sure.\n\n✨ Every request starts on a direct connection; these settings only decide what the Actor falls back to if that gets blocked. Switching Apify Proxy off is respected — the run then stays direct-only.\n\n🙌 Power users: tweak here; everyone else can skip."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}