{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Scraper | Posts, Profiles and Followers",
    "description": "Bluesky scraper for posts, profiles, followers, likers and starter packs, no account or app password needed. Search keywords, hashtags or accounts: every post carries its author's follower count, every profile the emails in its bio. 43 rows in 6 seconds, 30 fields each, in our 2026 test run.",
    "version": "1.0",
    "x-build-id": "VsrcbHo72RuK5bcdq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/silentflow~bluesky-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-silentflow-bluesky-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/silentflow~bluesky-scraper/runs": {
      "post": {
        "operationId": "runs-sync-silentflow-bluesky-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/silentflow~bluesky-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-silentflow-bluesky-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": {
          "queries": {
            "title": "🔎 Search keywords",
            "type": "array",
            "description": "Public posts to find, newest first: <code>web scraping</code>, <code>\"climate policy\"</code> (exact phrase), <code>#photography</code>. Bluesky search filters work inside a keyword: <code>from:nytimes.com</code>, <code>mentions:bsky.app</code>, <code>domain:github.com</code>. Set <b>Search for</b> to People to find accounts instead.",
            "items": {
              "type": "string"
            }
          },
          "handles": {
            "title": "👤 Accounts",
            "type": "array",
            "description": "Accounts to read: a handle (<code>nytimes.com</code>), an @handle, a profile link or a DID. You get the profile and the latest posts, or followers, following, media or replies: pick it in <b>For each account, get</b> below. A bare name such as <code>alice</code> is read as alice.bsky.social.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔗 Bluesky links",
            "type": "array",
            "description": "Any bsky.app link: a post (the post and its replies), its liked-by, reposted-by or quotes page, a profile, its followers or follows page, a search, a hashtag, a custom feed, a list or a starter pack (go.bsky.app short links too). Each link is read as what it shows.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "🔢 Max results per keyword, account or link",
            "minimum": 1,
            "type": "integer",
            "description": "Stop each keyword, account and link after this many rows. Three accounts at 50 give up to 150 posts, plus one profile row each. Latest-post searches go back in time as far as you ask; Top searches return Bluesky's first 100.",
            "default": 50
          },
          "searchType": {
            "title": "🧭 Search for",
            "enum": [
              "latest",
              "top",
              "people"
            ],
            "type": "string",
            "description": "<b>Latest posts</b> goes back in time page after page. <b>Top posts</b> is Bluesky's ranking, first 100 per keyword. <b>People</b> finds accounts whose name or bio matches each keyword, with their follower counts.",
            "default": "latest"
          },
          "since": {
            "title": "📅 Posts from",
            "type": "string",
            "description": "Keep posts published on or after this date: <code>2026-10-01</code>, or an age such as <code>7 days</code>. A daily schedule with <code>1 day</code> returns only what was posted since yesterday."
          },
          "until": {
            "title": "📅 Posts until",
            "type": "string",
            "description": "Keep posts published on or before this date, the day itself included: <code>2026-10-31</code>. With the field above it makes a period; searches start directly at its end."
          },
          "language": {
            "title": "🌐 Language",
            "type": "string",
            "description": "Keep posts written in this language, as their author tagged it. Pick one, or type a code (<code>fr</code>, <code>fra</code>) or an English name (<code>French</code>). Empty keeps every language."
          },
          "minLikes": {
            "title": "❤️ Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer likes than this, for example <code>50</code> to keep the posts that took off. 0 keeps every post. A high floor makes a search read more pages to fill your max results.",
            "default": 0
          },
          "accountData": {
            "title": "📋 For each account, get",
            "enum": [
              "posts",
              "replies",
              "media",
              "videos",
              "reposts",
              "profile",
              "followers",
              "following"
            ],
            "type": "string",
            "description": "The profile row (bio, emails and links from the bio, follower counts) comes first, then the account's posts as shown on its profile tabs. Or get its followers or the accounts it follows, each with their own follower counts.",
            "default": "posts"
          },
          "postData": {
            "title": "🧵 For each post link, get",
            "enum": [
              "replies",
              "likers",
              "reposters",
              "quotes"
            ],
            "type": "string",
            "description": "What a pasted post link returns: the post and its replies (each with its depth and the reply it answers), the people who liked or reposted it, with their follower counts, or the posts that quote it.",
            "default": "replies"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}