{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Scraper Enterprise Grade",
    "description": "Collect public Bluesky posts, comments, profiles, followers, following and people who liked or reposted, by keyword, hashtag, handle or link. No Bluesky account or API key needed. Great for social listening, trend tracking, brand monitoring and finding influencers. Export to Excel or CSV.",
    "version": "1.0",
    "x-build-id": "8DaJxPLzdZFS5G1Rd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data_wiki~bluesky-scraper-enterprise-grade/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data_wiki-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/data_wiki~bluesky-scraper-enterprise-grade/runs": {
      "post": {
        "operationId": "runs-sync-data_wiki-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/data_wiki~bluesky-scraper-enterprise-grade/run-sync": {
      "post": {
        "operationId": "run-sync-data_wiki-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",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "🦋 Targets to scrape",
            "minItems": 1,
            "type": "array",
            "description": "One per line. Accepts a keyword or search phrase (operators like from:npr.org and sort:top work), a #hashtag, an @handle or DID, or any bsky.app link: profile, post, followers, follows, custom feed, list, starter pack or search. Duplicates are removed. Add as many as you like.",
            "items": {
              "type": "string"
            }
          },
          "scrape": {
            "title": "🧭 What to collect",
            "enum": [
              "posts",
              "profiles",
              "followers",
              "following",
              "engagers"
            ],
            "type": "string",
            "description": "Posts: posts of a profile, search, hashtag, feed or list, plus replies if you ask for them. Profiles: account details with bio emails and links. Followers and following: the people connected to a profile. Engagers: who liked, reposted or quoted a post (or the posts of a profile or search).",
            "default": "posts"
          },
          "max_items": {
            "title": "📊 Max rows per target",
            "minimum": 0,
            "type": "integer",
            "description": "How many main rows (posts or people) to collect for EACH target. Every keyword, handle or link gets its own full amount. 0 = everything available.",
            "default": 10
          },
          "max_comments_per_post": {
            "title": "💬 Comments per post",
            "minimum": -1,
            "type": "integer",
            "description": "Posts mode only: replies to collect for every post. 0 = no comments, a number = up to that many replies per post, -1 = every reply. Comments are saved as their own rows.",
            "default": 2
          },
          "date_range": {
            "title": "📅 Date range",
            "type": "string",
            "description": "Only keep items from this period. Type it as text: 7d, 24h, 2w, 3m (months) or 1y for the last period, a single date like 2026-01-01 for everything since then, or two dates joined by two dots like 2026-01-01..2026-03-31. Empty = any time."
          },
          "sortOrder": {
            "title": "🔃 Sort order",
            "enum": [
              "latest",
              "top"
            ],
            "type": "string",
            "description": "Keyword searches only: newest posts first or the most popular posts first.",
            "default": "latest"
          },
          "language": {
            "title": "🌍 Language",
            "enum": [
              "any",
              "en",
              "es",
              "pt",
              "fr",
              "de",
              "it",
              "nl",
              "ja",
              "ko",
              "zh",
              "ar",
              "hi",
              "bn",
              "tr",
              "ru",
              "uk",
              "pl",
              "sv",
              "da",
              "no",
              "fi",
              "id",
              "th",
              "vi",
              "he",
              "el",
              "cs",
              "ro",
              "hu",
              "ca",
              "eu",
              "gl"
            ],
            "type": "string",
            "description": "Keeps only posts written in this language. Any language = no language filter.",
            "default": "any"
          },
          "fromAuthor": {
            "title": "👤 Posts from author",
            "type": "string",
            "description": "Handle or DID. Keeps only posts written by this account."
          },
          "mentionsAuthor": {
            "title": "📣 Posts mentioning",
            "type": "string",
            "description": "Handle or DID. Keeps only posts that mention this account."
          },
          "hashtags": {
            "title": "🔖 Hashtags",
            "type": "array",
            "description": "Keep posts that carry these hashtags, with or without the # sign.",
            "items": {
              "type": "string"
            }
          },
          "domain": {
            "title": "🔗 Linked domain",
            "type": "string",
            "description": "Keep posts that link to this domain, for example nytimes.com."
          },
          "exactUrl": {
            "title": "🧷 Exact link",
            "type": "string",
            "description": "Keep posts that share this exact link."
          },
          "minLikes": {
            "title": "💖 Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer likes than this."
          },
          "minReposts": {
            "title": "🔄 Minimum reposts",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer reposts than this."
          },
          "minReplies": {
            "title": "💭 Minimum replies",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer replies than this."
          },
          "includeReplies": {
            "title": "🧵 Include reply posts",
            "type": "boolean",
            "description": "Turn off to skip posts that are replies to other posts.",
            "default": true
          },
          "includeReposts": {
            "title": "🔁 Include reposts",
            "type": "boolean",
            "description": "Turn off to skip posts that appear because someone reposted them.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy",
            "type": "object",
            "description": "Optional. By default requests go out without a proxy. If Bluesky refuses them, the Actor switches to a datacenter proxy and then a residential proxy on its own and stays on it.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}