{
  "openapi": "3.0.1",
  "info": {
    "title": "Threads Comments & Replies Scraper & API: Any Post",
    "description": "Scrape Threads replies of public posts, without login: text, likes, replies, author, date, media, nested replies if you want, and how many you got against the reply counter. Paste post links or share links; new replies only on a schedule.",
    "version": "0.3",
    "x-build-id": "ZNZbNYBZrIG9Faqkk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/quarra~threads-replies-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-quarra-threads-replies-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/quarra~threads-replies-scraper/runs": {
      "post": {
        "operationId": "runs-sync-quarra-threads-replies-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/quarra~threads-replies-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-quarra-threads-replies-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": [
          "postUrls"
        ],
        "properties": {
          "postUrls": {
            "title": "Post URLs, share links or codes",
            "type": "array",
            "description": "Modes postDetails and postReplies. Any post link works: https://www.threads.com/@zuck/post/Dd1MqfcG0aH (with /media or ?xmt=… too), threads.net, /t/CODE, share links from the app (https://www.threads.com/share/…), the bare code Dd1MqfcG0aH, or the numeric post id (the id field of the output). Up to 1,000 per run.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to scrape",
            "type": "string",
            "description": "posts = an account's posts (full history); profiles = profile by username; accountReplies / accountReposts = an account's Replies / Reposts tab; postDetails = posts by URL; postReplies = every reply to a post; search = posts by keyword; accountSearch = accounts matching a keyword. Each mode reads one list: usernames, postUrls or searchQueries. If left out, the mode follows the list you fill (usernames -> posts, postUrls -> postDetails, searchQueries -> search).",
            "default": "postReplies"
          },
          "maxItems": {
            "title": "Max replies per post",
            "minimum": 0,
            "type": "integer",
            "description": "Exact cap for EACH post (not per run); 0 = every reply Threads serves. Left empty: 100. With watchName it caps the NEW replies of each run. You pay only for the rows you receive."
          },
          "replySort": {
            "title": "Reply order",
            "enum": [
              "RECENT",
              "TOP",
              "ALL"
            ],
            "type": "string",
            "description": "Mode postReplies. RECENT (newest first) returns the longest list and is the one watchName follows over time; TOP follows the order of the site; ALL merges both without duplicates (about 1% more).",
            "default": "RECENT"
          },
          "includeNestedReplies": {
            "title": "Include nested replies",
            "type": "boolean",
            "description": "Mode postReplies: also return replies to replies that Threads shows in each thread (depth 2 and more).",
            "default": false
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Keep only posts in these languages (ISO 639-1: en, es, fr, ja, zh, ko, pt…; three-letter codes, English names and \"en,fr\" are accepted; jp, cn, kr are read as ja, zh, ko). Uses the label Threads sends, otherwise a language detector on the text (field languageGuess). About 96% of real English posts are kept, under 0.4% of other languages let through. Posts with fewer than two words cannot be judged and are removed. Removed posts are not charged.",
            "items": {
              "type": "string"
            }
          },
          "minLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only replies with at least this many likes. Removed replies are not charged."
          },
          "watchName": {
            "title": "Watch name (new items only)",
            "type": "string",
            "description": "For scheduled runs (e.g. brand-mentions). The first run delivers and charges a baseline (what Threads shows today); later runs return and charge only what is new. A target added later gets its own baseline, charged as usual. Mode profiles has no baseline: the first run returns every profile, later runs only those that changed (bio, links, badge, privacy, followers moved 1% and 5+). One name per schedule."
          },
          "proxyConfiguration": {
            "title": "Connection",
            "type": "object",
            "description": "Keep the default (automatic). Costs are included in the price.",
            "default": {
              "useApifyProxy": true
            }
          },
          "deliveryConnector": {
            "title": "Send results to your app (MCP connector: Notion, Slack…)",
            "type": "string",
            "description": "Pick one of your Apify MCP connectors: at the end of each run, a summary of the results (count, the first 25 with their links, a link to the full dataset) is posted there. With a schedule and 'Only new', you get each day's new results where your team works. Nothing is sent when a run finds nothing. Notion connects in one click; Slack and Google need your own OAuth app in Apify, or use the webhook field below."
          },
          "deliveryTarget": {
            "title": "Where in the app (channel, page or sheet ID)",
            "type": "string",
            "description": "Slack channel ID (C0123…), Notion page ID, Google Sheet ID… Leave empty if the app needs no target (a new Notion page is then created at the top of your workspace)."
          },
          "deliveryWebhookUrl": {
            "title": "Or a webhook URL (Slack, Discord, Make, Zapier, n8n)",
            "type": "string",
            "description": "No connector needed. A Slack Incoming Webhook (hooks.slack.com/…) gets a message, a Discord channel webhook gets a message, any other URL receives the summary as JSON (title, text, count, datasetUrl, items)."
          },
          "deliveryTool": {
            "title": "Connector tool (advanced)",
            "type": "string",
            "description": "Name of the connector's tool to call. Leave empty: the best tool that posts a message, creates a page or appends rows is picked, and the run log lists every tool the connector offers."
          },
          "deliveryArguments": {
            "title": "Connector tool arguments (advanced)",
            "type": "object",
            "description": "Extra arguments for the tool, merged last, for example {\"channel\": \"#reddit-leads\"} or {\"parent\": {\"database_id\": \"…\"}}."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}