{
  "openapi": "3.0.1",
  "info": {
    "title": "Threads Scraper - Posts, Profiles & Search",
    "description": "Search Threads posts by keyword, grab any profile's posts, replies and reposts, or save a post and its author's thread from a link. Export engagement, views when available, and media. No login.",
    "version": "0.0",
    "x-build-id": "rVD3oeQ06LsTrUe1H"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/futurizerush~meta-threads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-futurizerush-meta-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/futurizerush~meta-threads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-futurizerush-meta-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/futurizerush~meta-threads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-futurizerush-meta-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "🎯 Scrape Mode",
            "type": "string",
            "description": "Pick one, then fill the matching field below:\n• 👤 User Posts → 👤 Usernames. Their public posts.\n• 🔁 User Reposts → 👤 Usernames. What they boosted, and when.\n• 💬 User Replies → 👤 Usernames. Their replies, with the post answered when shown.\n• 🔎 Search → 🏷️ Keywords. Posts matching keywords or hashtags, optional dates.\n• 👥 Find Profiles → 🏷️ Keywords. Account matches, up to 100 per keyword.\n• 🔗 Post by Link → 🔗 Post Links. Each post plus the author's posts in its thread.",
            "default": "user"
          },
          "usernames": {
            "title": "👤 Usernames",
            "minItems": 0,
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Required in 👤 User Posts, 🔁 User Reposts and 💬 User Replies modes (ignored in other modes). One or more Threads usernames: bare name (zuck), @-prefixed (@zuck), or full URL (https://threads.com/@zuck or https://threads.net/@zuck). 📺 Not sure how to fill this in? Watch the <a href='https://www.youtube.com/watch?v=51mYc7DJERE' target='_blank' rel='noopener'>User Posts video tutorial</a>.",
            "items": {
              "type": "string"
            }
          },
          "post_links": {
            "title": "🔗 Post Links",
            "minItems": 0,
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Required in 🔗 Post by Link mode (ignored in other modes). One Threads post link per line, up to 20: a post address (https://www.threads.com/@zuck/post/DTa3-B1EbTp), a threads.net link, a /t/ short link or a share link. Each link gives its post and the author's own posts in the same thread, up to 📦 Max Results per link (at most 100).",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "🏷️ Keywords",
            "minItems": 0,
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Required in 🔎 Search and 👥 Find Profiles. Optional in 👤 User Posts, 🔁 User Reposts and 💬 User Replies, where matching rows are tagged and nothing is dropped. The # is optional: both 'AI' and '#AI' work. In Find Profiles, adding a place name (e.g. 'austin coffee') helps surface local accounts. 📺 Not sure how to fill this in? Watch the <a href='https://www.youtube.com/watch?v=zMtWu0syfS8' target='_blank' rel='noopener'>Search video tutorial</a>.",
            "items": {
              "type": "string"
            }
          },
          "max_posts": {
            "title": "📦 Max Results",
            "minimum": 10,
            "maximum": 10000,
            "type": "integer",
            "description": "A cap per user, keyword or post link. Results share one dataset.\n• 👤 User Posts / 🔁 Reposts / 💬 Replies: depends on the account's available public posts.\n• 🔎 Search: public results may be fewer than your limit.\n• 👥 Find Profiles: the smaller of your limit and 100 per keyword (default 50). Results may be fewer; this does not find every matching account.\n• 🔗 Post by Link: how many posts per link, from the linked post outward; at most 100."
          },
          "search_filter": {
            "title": "🔎 Sort Order",
            "type": "string",
            "description": "Only used in 🔎 Search mode. 'Top' returns what Threads surfaces as most relevant for that term; row order is not a popularity ranking. 'Recent' starts with the newest matching public posts and reaches further back in time as the limit grows, so a large limit covers a longer period rather than every newest post; sort exported created_at values for one combined timeline.",
            "default": "top"
          },
          "search_language": {
            "title": "🌐 Preferred Result Language (beta)",
            "type": "string",
            "description": "Optional. Only used in 🔎 Search mode; every other mode ignores it and runs normally.\nSome keywords are used by people writing in more than one language, and the results mix them together. Pick a language here and you get more of the posts written in it, and fewer of the rest.\nLeave it on English to keep the current behaviour. Many keywords will not change at all: a keyword only one language uses already returns that language.",
            "default": "english"
          },
          "start_date": {
            "title": "📅 Start Date",
            "type": "string",
            "description": "Used in 🔎 Search mode to show posts from this date onward. Supports YYYY-MM-DD or relative values such as '7 days' and '1 month'. Dates are counted in UTC. Other modes ignore it and collect posts as usual."
          },
          "end_date": {
            "title": "📅 End Date",
            "type": "string",
            "description": "Used in 🔎 Search mode to show posts up to this date (inclusive). YYYY-MM-DD is recommended for clarity. Relative values such as '7 days' mean that long ago. Dates are counted in UTC. Other modes ignore it and collect posts as usual."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}