{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Scraper — Unlimited Posts | $1/1K",
    "description": "Keyword search past the 100-post cap that stops other Bluesky scrapers. Posts, profiles, followers, threads, likes and reposts with engagement, hashtags and images. Follower counts the API omits are filled in. No login. For brand monitoring, social listening and research.",
    "version": "0.1",
    "x-build-id": "o4c7SDvwDA2hBMom8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datawell~bluesky-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datawell-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/datawell~bluesky-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datawell-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/datawell~bluesky-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datawell-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "searchPosts",
              "authorFeed",
              "profiles",
              "searchActors",
              "followers",
              "follows",
              "postThread",
              "likes",
              "repostedBy",
              "quotes",
              "customFeed",
              "listFeed"
            ],
            "type": "string",
            "description": "Pick what you want to collect. The fields below change depending on this choice. Each option below says which extra field it needs — fill that one in, the rest are ignored.",
            "default": "searchPosts"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Keyword or phrase to search for. Used in 'Search posts' and 'Search for accounts'. Supports quotes for exact phrases, e.g. \"climate policy\"."
          },
          "actors": {
            "title": "Accounts",
            "type": "array",
            "description": "Handles (alice.bsky.social), DIDs, or profile URLs. Used in 'Posts from accounts', 'Profile details', 'Followers' and 'Follows'.",
            "items": {
              "type": "string"
            }
          },
          "postUris": {
            "title": "Post URLs or URIs",
            "type": "array",
            "description": "Post URLs (https://bsky.app/profile/.../post/...) or AT-URIs (at://did:plc:.../app.bsky.feed.post/...). Used in 'Thread', 'Likes', 'Reposts' and 'Quotes'.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Total number of records to collect. When several accounts or posts are given, the budget is split evenly between them.",
            "default": 100
          },
          "sort": {
            "title": "Sort order (post search)",
            "enum": [
              "latest",
              "top"
            ],
            "type": "string",
            "description": "'latest' returns newest first, 'top' returns most engaged with.",
            "default": "latest"
          },
          "lang": {
            "title": "Language filter (post search)",
            "type": "string",
            "description": "Two-letter language code, e.g. 'en', 'de', 'pt'. Leave empty for all languages."
          },
          "since": {
            "title": "Posted after (post search)",
            "pattern": "^$|^\\d{4}$|^\\d{4}-\\d{2}-\\d{2}([T ].*)?$|^\\d{2}[-./]\\d{2}[-./]\\d{4}$|^\\d{9,}$",
            "type": "string",
            "description": "Only posts created after this moment. Format: 2026-01-31T00:00:00Z"
          },
          "until": {
            "title": "Posted before (post search)",
            "pattern": "^$|^\\d{4}$|^\\d{4}-\\d{2}-\\d{2}([T ].*)?$|^\\d{2}[-./]\\d{2}[-./]\\d{4}$|^\\d{9,}$",
            "type": "string",
            "description": "Only posts created before this moment. Format: 2026-01-31T00:00:00Z"
          },
          "author": {
            "title": "Only from this account (post search)",
            "type": "string",
            "description": "Restrict the keyword search to a single account's posts."
          },
          "mentions": {
            "title": "Mentioning this account (post search)",
            "type": "string",
            "description": "Only posts that mention this account."
          },
          "tag": {
            "title": "Hashtags (post search)",
            "type": "array",
            "description": "Only posts carrying these hashtags. Enter without the # sign.",
            "items": {
              "type": "string"
            }
          },
          "domain": {
            "title": "Linking to this domain (post search)",
            "type": "string",
            "description": "Only posts linking to this domain, e.g. 'github.com'."
          },
          "url": {
            "title": "Linking to this URL (post search)",
            "type": "string",
            "description": "Only posts linking to this exact URL."
          },
          "authorFeedFilter": {
            "title": "Which posts (posts from accounts)",
            "enum": [
              "posts_no_replies",
              "posts_with_replies",
              "posts_with_media",
              "posts_and_author_threads"
            ],
            "type": "string",
            "description": "Controls whether replies, reposts and media posts are included.",
            "default": "posts_no_replies"
          },
          "threadDepth": {
            "title": "Reply depth (thread)",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How many levels of replies to follow.",
            "default": 6
          },
          "feedUri": {
            "title": "Feed URIs (custom feed)",
            "type": "array",
            "description": "The at:// URI of the feed. Open the feed on bsky.app and copy its link — this Actor converts a bsky.app link automatically. The prefilled value is Bluesky's own Discover feed.",
            "items": {
              "type": "string"
            }
          },
          "listUri": {
            "title": "List URIs (list feed)",
            "type": "array",
            "description": "The at:// URI of the list. Open the list on bsky.app and copy its link — this Actor converts a bsky.app link automatically. The prefilled value is Bluesky's own Bluesky-team list.",
            "items": {
              "type": "string"
            }
          },
          "enrichProfiles": {
            "title": "Add follower counts to accounts",
            "type": "boolean",
            "description": "Bluesky omits follower and post counts when returning account search results, follower lists and likes. Leave this on to fetch them — costs one extra request per 25 accounts.",
            "default": true
          },
          "requestDelaySeconds": {
            "title": "Delay between requests",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Seconds to wait between API calls. Raise this if you hit rate limits on very large runs.",
            "default": 0
          },
          "sessionToken": {
            "title": "Bluesky access token (optional)",
            "type": "string",
            "description": "Not required. Reserved for future support of endpoints that need authentication."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}