{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Data Suite — Posts, Profiles, Followers",
    "description": "All-in-one Bluesky scraper on the official AT Protocol API: search posts and people, author feeds, follower exports, full reply threads, likes/reposts/quotes. Fast and stable with no browser or proxies — pay only $1 per 1,000 results.",
    "version": "1.0",
    "x-build-id": "eQb4MamTjfvBy2ZQU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/leohryndev~bluesky-data-suite/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-leohryndev-bluesky-data-suite",
        "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/leohryndev~bluesky-data-suite/runs": {
      "post": {
        "operationId": "runs-sync-leohryndev-bluesky-data-suite",
        "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/leohryndev~bluesky-data-suite/run-sync": {
      "post": {
        "operationId": "run-sync-leohryndev-bluesky-data-suite",
        "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": [
          "action"
        ],
        "properties": {
          "action": {
            "title": "What to collect",
            "enum": [
              "searchPosts",
              "searchProfiles",
              "getProfiles",
              "getAuthorFeed",
              "getFollowers",
              "getFollowing",
              "getPostReplies",
              "getPostEngagement",
              "getTrendingTopics",
              "getListMembers",
              "getStarterPackMembers"
            ],
            "type": "string",
            "description": "The type of data to collect from Bluesky.",
            "default": "searchProfiles"
          },
          "queries": {
            "title": "Queries / handles / URLs",
            "type": "array",
            "description": "Depending on the action: search keywords (searchPosts, searchProfiles), profile handles or bsky.app profile URLs (getProfiles, getAuthorFeed, getFollowers, getFollowing), post URLs (getPostReplies, getPostEngagement), list URLs (getListMembers), or starter pack URLs (getStarterPackMembers). Not needed for trending topics.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max results (total)",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of result rows across all queries. You are only charged for results actually returned.",
            "default": 200
          },
          "sort": {
            "title": "Sort (post search)",
            "enum": [
              "latest",
              "top"
            ],
            "type": "string",
            "description": "Sorting for post search results.",
            "default": "latest"
          },
          "language": {
            "title": "Language filter (post search)",
            "type": "string",
            "description": "Optional BCP-47 language code to filter posts, e.g. `en`, `es`, `de`, `ja`."
          },
          "since": {
            "title": "Since (post search)",
            "type": "string",
            "description": "Optional ISO date(time) lower bound, e.g. `2026-01-01` — only posts after this moment."
          },
          "until": {
            "title": "Until (post search)",
            "type": "string",
            "description": "Optional ISO date(time) upper bound."
          },
          "authorFeedFilter": {
            "title": "Author feed filter",
            "enum": [
              "posts_no_replies",
              "posts_with_replies",
              "posts_and_author_threads",
              "posts_with_media"
            ],
            "type": "string",
            "description": "Which posts to include when collecting author feeds.",
            "default": "posts_no_replies"
          },
          "blueskyIdentifier": {
            "title": "Bluesky handle (only for post search)",
            "type": "string",
            "description": "Only needed for 'Search posts by keyword': your Bluesky handle (e.g. `you.bsky.social`). Bluesky requires a logged-in session for post search. Create a FREE app password at Settings → Privacy and Security → App Passwords — never use your main password."
          },
          "blueskyAppPassword": {
            "title": "Bluesky app password (only for post search)",
            "type": "string",
            "description": "App password in the form xxxx-xxxx-xxxx-xxxx. Used only to call the official search endpoint; not stored anywhere."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}