{
  "openapi": "3.0.1",
  "info": {
    "title": "Meta Threads Scraper & API: Posts, Views, Replies, Profiles",
    "description": "Meta Threads posts with view counts, full post history, replies, profiles and keyword search, without login or cookies. Text, likes, replies, reposts, media, creator stats. Language and engagement filters, new posts only on a schedule.",
    "version": "0.3",
    "x-build-id": "VpNtV1eMy7APjU88g"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/quarra~meta-threads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-quarra-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/quarra~meta-threads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-quarra-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/quarra~meta-threads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-quarra-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",
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "posts",
              "profiles",
              "accountReplies",
              "accountReposts",
              "postDetails",
              "postReplies",
              "search",
              "accountSearch"
            ],
            "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)."
          },
          "usernames": {
            "title": "Usernames or profile URLs",
            "type": "array",
            "description": "Modes posts, profiles, accountReplies, accountReposts. Any form works: zuck, @zuck, https://www.threads.com/@zuck, threads.com/zuck, a threads.net URL, an instagram.com/zuck URL (same username), a post URL (its author is used) or a threads.com/share/… link. Up to 1,000 per run.",
            "items": {
              "type": "string"
            }
          },
          "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"
            }
          },
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Modes search and accountSearch. A word, a phrase or a #hashtag (e.g. matcha, AI agents, #nba), or a threads.com/search?q=… URL. Quotes and a leading @ are removed (Threads search has no operators); at least two letters or digits. Without login Threads shows about 20 posts per wording and search type, with no pagination and no date filter; expandQueries finds more by searching several wordings. Up to 1,000 per run.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max results per account, post or keyword",
            "minimum": 0,
            "type": "integer",
            "description": "Exact cap for EACH account, post or keyword (not per run); 0 = no limit (full history, every reply Threads serves). Left empty: 100. With watchName it caps the NEW results of each run. You pay only for the rows you receive. limit, maxResults, resultsLimit and count are read as maxItems."
          },
          "since": {
            "title": "Only items published since",
            "type": "string",
            "description": "Modes posts, accountReplies, accountReposts: stop at items older than this date (YYYY-MM-DD, UTC; not in the future). Pinned posts never stop the collection."
          },
          "until": {
            "title": "Only items published until",
            "type": "string",
            "description": "Modes posts, accountReplies, accountReposts: skip items published after this date (YYYY-MM-DD, UTC, the whole day included). With since, a date window."
          },
          "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 posts with at least this many likes (e.g. 1 removes the zero-engagement posts keyword search returns). Removed posts are not charged."
          },
          "minReplies": {
            "title": "Minimum replies",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts with at least this many replies. Removed posts are not charged."
          },
          "minViews": {
            "title": "Minimum views",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only posts with at least this many views (turns view counts on). Posts whose view count Threads hides are removed. Not available for replies to a post. Removed posts are not charged. Each post needs a page read for its view count: a target stops after 100 posts in a row under the threshold, and a run stops when reading pages for posts that end up removed has cost more than the results can pay for (a less selective threshold, or other targets, avoids it)."
          },
          "minFollowers": {
            "title": "Minimum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Modes profiles and accountSearch: keep only accounts with at least this many followers (e.g. 10000 for creators with reach). Removed accounts 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."
          },
          "searchMode": {
            "title": "Search types",
            "enum": [
              "all",
              "top",
              "popular",
              "tags"
            ],
            "type": "string",
            "description": "Mode search. all = the three result types of the site merged (Top, Popular, Topic tags), the most results. top = the Top tab (fresh on active topics); popular = all-time popular; tags = topic tags.",
            "default": "all"
          },
          "expandQueries": {
            "title": "Expand each keyword",
            "type": "boolean",
            "description": "Mode search. On: each keyword is also searched in singular/plural, as one joined word and as a hashtag (AI agents -> AI agent, aiagents, #aiagents), then merged without duplicates. Measured on AI agents: 104 and 120 unique posts in two runs, against 31 and 33 for the exact wording. Off: exact text only. More searches, same price per result.",
            "default": true
          },
          "strictSearch": {
            "title": "Only results that contain the keyword",
            "type": "boolean",
            "description": "Mode search: keep only posts whose text contains every word of the keyword or of one of its expanded forms (case-insensitive, # and @ ignored). Threads also returns loosely related posts; removed ones are not charged.",
            "default": false
          },
          "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
          },
          "includeViewCount": {
            "title": "Include view counts (no extra cost)",
            "type": "boolean",
            "description": "Adds the view count of every post (account posts, posts by URL, search results) and the per-view metrics. Included in the post price. Not for replies to a post. Turn off only for the fastest run.",
            "default": true
          },
          "creatorStats": {
            "title": "Creator stats",
            "type": "boolean",
            "description": "Modes profiles and accountSearch: adds creatorStats from the latest posts on the account's first page (up to 15, pinned posts and reposts left out): median likes, replies, reposts and engagement, median engagement rate (per follower), posts per week, last post date. Included in the profile price; one extra request per account.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Connection",
            "type": "object",
            "description": "Keep the default (automatic). Costs are included in the price.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}