{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Scraper – Posts Search, Profiles & Leads",
    "description": "Search Bluesky posts by keyword or hashtag with date and language filters, or get author profiles with bio links, emails, website domains, followers and recent posts. Official AT Protocol API, no login, no proxy.",
    "version": "0.1",
    "x-build-id": "0YGmwLlye0MKiyX0i"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dedicated_crest~bluesky-posts-profiles-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dedicated_crest-bluesky-posts-profiles-search",
        "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/dedicated_crest~bluesky-posts-profiles-search/runs": {
      "post": {
        "operationId": "runs-sync-dedicated_crest-bluesky-posts-profiles-search",
        "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/dedicated_crest~bluesky-posts-profiles-search/run-sync": {
      "post": {
        "operationId": "run-sync-dedicated_crest-bluesky-posts-profiles-search",
        "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": "Mode",
            "enum": [
              "posts",
              "profiles"
            ],
            "type": "string",
            "description": "Posts returns one row per matching post. Profiles returns one row per unique account, with optional followers and recent posts.",
            "default": "posts"
          },
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords, phrases (\"in quotes\") or hashtags (#buildinpublic). Lucene-style syntax is supported by Bluesky search, e.g. from:handle, domain:example.com.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items per query",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum posts (posts mode) or unique profiles (profiles mode) saved for each query.",
            "default": 100
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "latest",
              "top"
            ],
            "type": "string",
            "description": "Bluesky search ranking.",
            "default": "latest"
          },
          "dateFrom": {
            "title": "Posted from",
            "type": "string",
            "description": "Only posts created on or after this date (YYYY-MM-DD or ISO date-time, UTC)."
          },
          "dateTo": {
            "title": "Posted until",
            "type": "string",
            "description": "Only posts created on or before this date (inclusive, UTC)."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Two-letter language code, e.g. en, de, ja, pt. Uses the language tag the author's app set on the post."
          },
          "author": {
            "title": "Only posts by (handle or DID)",
            "type": "string",
            "description": "Optional: restrict post search to one account."
          },
          "linkDomain": {
            "title": "Only posts linking to domain",
            "type": "string",
            "description": "Optional: only posts containing a link to this domain, e.g. github.com."
          },
          "textMaxChars": {
            "title": "Truncate post text to N characters",
            "minimum": 0,
            "type": "integer",
            "description": "0 = full text (Bluesky posts are at most 300 characters).",
            "default": 0
          },
          "profileSource": {
            "title": "Profiles: where to find accounts",
            "enum": [
              "postAuthors",
              "accountSearch"
            ],
            "type": "string",
            "description": "Profiles mode only.",
            "default": "postAuthors"
          },
          "handles": {
            "title": "Profiles: specific handles",
            "type": "array",
            "description": "Profiles mode: also fetch these handles, DIDs or bsky.app profile URLs.",
            "items": {
              "type": "string"
            }
          },
          "minFollowers": {
            "title": "Profiles: minimum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Skip accounts with fewer followers.",
            "default": 0
          },
          "onlyWithContact": {
            "title": "Profiles: only with email, website or custom domain",
            "type": "boolean",
            "description": "Keep only profiles where a lead signal was found.",
            "default": false
          },
          "maxFollowersPerProfile": {
            "title": "Profiles: followers to include",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Adds a followers array (handle, name, bio) to each profile. 0 = off. Each 100 followers is one extra API call.",
            "default": 0
          },
          "maxFeedPostsPerProfile": {
            "title": "Profiles: recent posts to include",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Adds the account's latest original posts (no replies) as recentPosts. 0 = off.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}