{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Scraper  ($0.99 / 1K Results)",
    "description": "[𝘾𝙝𝙚𝙖𝙥𝙚𝙨𝙩] Bluesky scraper to extract profiles, posts, followers, engagement, and metadata from Bluesky 🦋📊 Ideal for social media research, audience analysis, and trend monitoring. Fast and reliable.",
    "version": "1.0",
    "x-build-id": "L2gL3MHbxzfWVdZfe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers-hub~bluesky-scraper-enterprise-grade/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers-hub-bluesky-scraper-enterprise-grade",
        "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/scrapers-hub~bluesky-scraper-enterprise-grade/runs": {
      "post": {
        "operationId": "runs-sync-scrapers-hub-bluesky-scraper-enterprise-grade",
        "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/scrapers-hub~bluesky-scraper-enterprise-grade/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers-hub-bluesky-scraper-enterprise-grade",
        "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": "Choose What to Scrape",
            "enum": [
              "search_posts",
              "author_feed",
              "followers",
              "following",
              "profile_details"
            ],
            "type": "string",
            "description": "Choose the collection mode that matches your goal. Then provide matching keywords, Bluesky handles, or direct Bluesky URLs below before running the actor.",
            "default": "search_posts"
          },
          "terms": {
            "title": "Add Search Keywords or Bluesky Handles",
            "type": "array",
            "description": "Choose at least one target before running the actor. Use search keywords when collecting posts by topic, or Bluesky handles (e.g. \"alice.bsky.social\") when collecting account-based data.",
            "items": {
              "type": "string"
            }
          },
          "count": {
            "title": "Number of results per target",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of results to collect for each keyword or handle.",
            "default": 100
          },
          "startUrls": {
            "title": "Add Bluesky URLs to Scrape",
            "type": "array",
            "description": "Use direct Bluesky URLs when you already know exactly what you want to collect. Supported URLs can be used instead of, or alongside, the keyword and handle inputs above. Supports search, post, profile, followers, and follows/following pages.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "sortOrder": {
            "title": "Choose How Search Posts Are Ranked",
            "enum": [
              "latest",
              "top"
            ],
            "type": "string",
            "description": "Sort order for post search. Applies to keyword search and search URLs.",
            "default": "latest"
          },
          "dateFrom": {
            "title": "Keep Posts Starting From a Specific Date",
            "type": "string",
            "description": "UTC date (YYYY-MM-DD). Adds a since: operator to searches and drops older post records locally."
          },
          "dateTo": {
            "title": "Keep Posts Up to a Specific Date",
            "type": "string",
            "description": "UTC date (YYYY-MM-DD). Adds an until: operator (full day included) and drops newer post records locally."
          },
          "language": {
            "title": "Filter by Language",
            "enum": [
              "",
              "en",
              "es",
              "pt",
              "fr",
              "de",
              "it",
              "nl",
              "ja",
              "ko",
              "zh",
              "ru",
              "ar",
              "hi",
              "id",
              "tr",
              "pl",
              "uk",
              "sv"
            ],
            "type": "string",
            "description": "For post search, appends lang:<code> to each query.",
            "default": ""
          },
          "fromAuthor": {
            "title": "Filter Search to Posts From an Author",
            "type": "string",
            "description": "Bluesky handle or DID. For post search, appends from:<handle> to each query."
          },
          "mentionsAuthor": {
            "title": "Filter Search to Posts Mentioning an Author",
            "type": "string",
            "description": "Bluesky handle or DID. For post search, appends mentions:<handle> to each query."
          },
          "hashtags": {
            "title": "Filter Search by Hashtags",
            "type": "array",
            "description": "Hashtags appended to post search queries. With or without the leading #.",
            "items": {
              "type": "string"
            }
          },
          "domain": {
            "title": "Filter Search by Linked Domain",
            "type": "string",
            "description": "For post search, appends domain:<domain>."
          },
          "exactUrl": {
            "title": "Filter Search by Exact Shared URL",
            "type": "string",
            "description": "Exact shared URL appended to post search queries."
          },
          "minLikes": {
            "title": "Keep Posts With at Least This Many Likes",
            "minimum": 0,
            "type": "integer",
            "description": "Applied locally to returned post records."
          },
          "minReposts": {
            "title": "Keep Posts With at Least This Many Reposts",
            "minimum": 0,
            "type": "integer",
            "description": "Applied locally to returned post records."
          },
          "minReplies": {
            "title": "Keep Posts With at Least This Many Replies",
            "minimum": 0,
            "type": "integer",
            "description": "Applied locally to returned post records."
          },
          "includeReplies": {
            "title": "Include Reply Posts in Saved Post Results",
            "type": "boolean",
            "description": "When off, post records that are replies to another post are skipped.",
            "default": true
          },
          "includeReposts": {
            "title": "Include Reposts in Saved Post Results",
            "type": "boolean",
            "description": "When off, records surfaced because they were reposted by another account are skipped.",
            "default": true
          },
          "scrapeComments": {
            "title": "Include Replies from Each Post",
            "type": "boolean",
            "description": "Turn on reply collection to also gather replies for each collected post as separate comment records. Useful for thread context, sentiment, or downstream conversation analysis.",
            "default": false
          },
          "maxComments": {
            "title": "Set a Reply Limit per Post",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of replies to collect per source post when reply collection is enabled.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}