{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Posts, Profiles, Feeds & Threads Scraper",
    "description": "Search Bluesky posts by keyword, hashtag, author, mention, domain or URL; read profiles, threads, lists, starter packs, feeds and followers; export likes, reposts, follows, quotes and relationships.",
    "version": "1.2",
    "x-build-id": "QVca54L51kgdV5Lsb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nimbryxo-studio~bluesky-posts-profiles-feeds-and-threads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nimbryxo-studio-bluesky-posts-profiles-feeds-and-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/nimbryxo-studio~bluesky-posts-profiles-feeds-and-threads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nimbryxo-studio-bluesky-posts-profiles-feeds-and-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/nimbryxo-studio~bluesky-posts-profiles-feeds-and-threads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nimbryxo-studio-bluesky-posts-profiles-feeds-and-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": "Mode",
            "enum": [
              "search",
              "profile",
              "profiles",
              "actorSearch",
              "feed",
              "postThread",
              "urlFetch",
              "getPosts",
              "follows",
              "followers",
              "getLikes",
              "repostedBy",
              "quotes",
              "actorLikes",
              "getList",
              "listFeed",
              "lists",
              "actorFeeds",
              "getStarterPack",
              "starterPackSearch",
              "feedGenerator",
              "feedGeneratorsDiscovery",
              "relationships",
              "discovery"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Keyword, hashtag, phrase, or Lucene-style query. Used by search, actorSearch, starterPackSearch, and feedGeneratorsDiscovery.",
            "default": "bluesky"
          },
          "searchSort": {
            "title": "Search sort",
            "enum": [
              "top",
              "latest"
            ],
            "type": "string",
            "description": "Search ranking. `latest` returns newest first; `top` returns engagement-ranked posts. Both use time-window pagination to collect beyond one page.",
            "default": "latest"
          },
          "searchTags": {
            "title": "Search hashtags",
            "type": "array",
            "description": "Only posts with these hashtags (without `#`). Multiple tags are AND-matched. (mode=search)",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "searchDomain": {
            "title": "Search domain",
            "type": "string",
            "description": "Only posts linking to this domain, e.g. `github.com`. (mode=search)"
          },
          "searchUrl": {
            "title": "Search URL",
            "type": "string",
            "description": "Only posts linking to this exact URL. (mode=search)"
          },
          "mentionsUser": {
            "title": "Mentioning user",
            "type": "string",
            "description": "Only posts mentioning this handle or DID. (mode=search)"
          },
          "fromUser": {
            "title": "From user",
            "type": "string",
            "description": "Only posts authored by this handle or DID. (mode=search)"
          },
          "since": {
            "title": "Since",
            "type": "string",
            "description": "Earliest post date as `YYYY-MM-DD` or an ISO datetime. (mode=search)"
          },
          "until": {
            "title": "Until",
            "type": "string",
            "description": "Latest post date as `YYYY-MM-DD` or an ISO datetime. (mode=search)"
          },
          "language": {
            "title": "Language",
            "enum": [
              "",
              "ab",
              "aa",
              "af",
              "ak",
              "sq",
              "am",
              "ar",
              "an",
              "hy",
              "as",
              "av",
              "ae",
              "ay",
              "az",
              "bm",
              "ba",
              "eu",
              "be",
              "bn",
              "bi",
              "bs",
              "br",
              "bg",
              "my",
              "ca",
              "ch",
              "ce",
              "ny",
              "zh",
              "cu",
              "cv",
              "kw",
              "co",
              "cr",
              "hr",
              "cs",
              "da",
              "dv",
              "nl",
              "dz",
              "en",
              "eo",
              "et",
              "ee",
              "fo",
              "fj",
              "fi",
              "fr",
              "ff",
              "gl",
              "lg",
              "ka",
              "de",
              "gn",
              "gu",
              "ht",
              "ha",
              "he",
              "hz",
              "hi",
              "ho",
              "hu",
              "is",
              "io",
              "ig",
              "id",
              "ia",
              "ie",
              "iu",
              "ik",
              "ga",
              "it",
              "ja",
              "jv",
              "kl",
              "kn",
              "kr",
              "ks",
              "kk",
              "km",
              "ki",
              "rw",
              "ky",
              "kv",
              "kg",
              "ko",
              "kj",
              "ku",
              "lo",
              "la",
              "lv",
              "li",
              "ln",
              "lt",
              "lu",
              "lb",
              "mk",
              "mg",
              "ms",
              "ml",
              "mt",
              "gv",
              "mi",
              "mr",
              "mh",
              "el",
              "mn",
              "na",
              "nv",
              "ng",
              "ne",
              "nd",
              "se",
              "no",
              "nb",
              "nn",
              "oc",
              "oj",
              "or",
              "om",
              "os",
              "pi",
              "pa",
              "fa",
              "pl",
              "pt",
              "ps",
              "qu",
              "ro",
              "rm",
              "rn",
              "ru",
              "sm",
              "sg",
              "sa",
              "sc",
              "gd",
              "sr",
              "sh",
              "sn",
              "ii",
              "sd",
              "si",
              "sk",
              "sl",
              "so",
              "nr",
              "st",
              "es",
              "su",
              "sw",
              "ss",
              "sv",
              "tl",
              "ty",
              "tg",
              "ta",
              "tt",
              "te",
              "th",
              "bo",
              "ti",
              "to",
              "ts",
              "tn",
              "tr",
              "tk",
              "tw",
              "ug",
              "uk",
              "ur",
              "uz",
              "ve",
              "vi",
              "vo",
              "wa",
              "cy",
              "fy",
              "wo",
              "xh",
              "yi",
              "yo",
              "za",
              "zu"
            ],
            "type": "string",
            "description": "ISO 639-1 language filter for post search and post records. Empty means no filter.",
            "default": ""
          },
          "authorFeedFilter": {
            "title": "Author feed filter",
            "enum": [
              "posts_with_replies",
              "posts_no_replies",
              "posts_with_media",
              "posts_and_author_threads"
            ],
            "type": "string",
            "description": "Which posts to include in the author feed. (mode=profile)",
            "default": "posts_with_replies"
          },
          "includePins": {
            "title": "Include pinned post",
            "type": "boolean",
            "description": "Include the pinned post at the top of the author feed. (mode=profile)",
            "default": false
          },
          "includeParents": {
            "title": "Include parent posts",
            "type": "boolean",
            "description": "Include ancestor posts above the requested post. (mode=postThread)",
            "default": false
          },
          "threadDepth": {
            "title": "Thread depth",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How many reply levels and ancestor levels to walk. Depths beyond about 10 reply levels are reached by walking reply branches across requests. 0 returns only the requested post. (mode=postThread)",
            "default": 6
          },
          "maxRepliesPerPost": {
            "title": "Max replies per post",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum direct replies followed under each post while walking a thread. Larger values reach more branches but cost more requests. (mode=postThread)",
            "default": 100
          },
          "actor": {
            "title": "Handle or DID",
            "type": "string",
            "description": "Bluesky handle or DID. Used by profile, follows, followers, lists, actorLikes, actorFeeds, relationships, and discoveryType=suggestedFollows."
          },
          "actors": {
            "title": "Handles or DIDs",
            "type": "array",
            "description": "Handles, DIDs, or profile URLs for batch lookup. Used by profiles and by relationships as the accounts to check against `actor`.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "postUri": {
            "title": "Post AT URI",
            "type": "string",
            "description": "AT URI of a post. Used by postThread, getLikes, repostedBy, and quotes."
          },
          "postUris": {
            "title": "Post AT URIs",
            "type": "array",
            "description": "AT URIs of posts to hydrate. Used by getPosts and as a fallback for single-post modes.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "postUrls": {
            "title": "Bluesky URLs",
            "type": "array",
            "description": "bsky.app post, profile, list, feed, or starter-pack URLs. Used by urlFetch, getPosts, and as a fallback for single-post modes.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "listUri": {
            "title": "List AT URI",
            "type": "string",
            "description": "AT URI of a Bluesky list. Used by getList and listFeed."
          },
          "listUris": {
            "title": "List AT URIs",
            "type": "array",
            "description": "AT URIs or bsky.app list URLs for batch list processing. (mode=getList)",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "starterPackUri": {
            "title": "Starter pack AT URI",
            "type": "string",
            "description": "AT URI of a starter pack. (mode=getStarterPack)"
          },
          "starterPackUris": {
            "title": "Starter pack AT URIs",
            "type": "array",
            "description": "AT URIs or bsky.app starter-pack URLs for batch processing. (mode=getStarterPack)",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "feedPreset": {
            "title": "Feed preset",
            "enum": [
              "whats-hot",
              "bsky-team",
              "hot-classic",
              "discover",
              "mutuals",
              "popular-with-friends",
              "for-you",
              "news",
              "trending-videos",
              "quiet-posters"
            ],
            "type": "string",
            "description": "Built-in feed preset. Live presets are listed first, followed by legacy aliases mapped to What's Hot. An explicit `feedUri` always takes precedence; if neither is set, What's Hot is used for mode=feed."
          },
          "feedUri": {
            "title": "Feed AT URI",
            "type": "string",
            "description": "AT URI or bsky.app feed URL of a custom feed generator. (mode=feed / feedGenerator)"
          },
          "feedUris": {
            "title": "Feed AT URIs",
            "type": "array",
            "description": "AT URIs or bsky.app feed URLs for batch feed-generator lookup. (mode=feedGenerator)",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "discoveryType": {
            "title": "Discovery type",
            "enum": [
              "trendingTopics",
              "suggestedFeeds",
              "suggestedStarterPacks",
              "taggedSuggestions",
              "suggestedFollows"
            ],
            "type": "string",
            "description": "Which discovery surface to fetch. (mode=discovery)",
            "default": "trendingTopics"
          },
          "excludeReplies": {
            "title": "Exclude replies",
            "type": "boolean",
            "description": "Drop posts that are replies to another post.",
            "default": false
          },
          "excludeReposts": {
            "title": "Exclude reposts",
            "type": "boolean",
            "description": "Drop posts surfaced as reposts.",
            "default": false
          },
          "mediaOnly": {
            "title": "Media only",
            "type": "boolean",
            "description": "Only emit posts with at least one image, video, or external embed.",
            "default": false
          },
          "excludeLabeled": {
            "title": "Exclude labeled",
            "type": "boolean",
            "description": "Drop posts and accounts that carry moderation or self-labels, including labels on a post's author.",
            "default": false
          },
          "respectNoUnauthenticated": {
            "title": "Respect no-unauthenticated accounts",
            "type": "boolean",
            "description": "Skip records whose author carries the `!no-unauthenticated` label. The run status reports how many records were skipped.",
            "default": true
          },
          "verifiedOnly": {
            "title": "Verified only",
            "type": "boolean",
            "description": "Only emit accounts with a valid Bluesky verification, or posts whose author is verified. Records with no verification object are excluded. Post modes hydrate author profiles so verification can be checked.",
            "default": false
          },
          "minLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Drop posts with fewer likes."
          },
          "minReposts": {
            "title": "Minimum reposts",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Drop posts with fewer reposts."
          },
          "minReplies": {
            "title": "Minimum replies",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Drop posts with fewer replies."
          },
          "minQuotes": {
            "title": "Minimum quotes",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Drop posts with fewer quote posts."
          },
          "minFollowers": {
            "title": "Minimum followers",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Keep accounts with at least this many followers."
          },
          "maxFollowers": {
            "title": "Maximum followers",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Keep accounts with at most this many followers."
          },
          "includeListMetadata": {
            "title": "Include list metadata",
            "type": "boolean",
            "description": "Emit a list record before its members. (mode=getList)",
            "default": false
          },
          "includeStarterPackMembers": {
            "title": "Include starter-pack members",
            "type": "boolean",
            "description": "Emit the accounts in the starter pack's list after the pack record. (mode=getStarterPack)",
            "default": true
          },
          "hydrateAuthors": {
            "title": "Hydrate post authors",
            "type": "boolean",
            "description": "Fetch full author profiles for post records. Adds one batched profile request per 25 unique authors and flat author follower, following, post and verification fields. Enabled by default; the daily profile prefill leaves it off to stay cheap.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on emitted records. For batch modes the cap applies across the whole run.",
            "default": 40
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}