{
  "openapi": "3.0.1",
  "info": {
    "title": "Bluesky Profile Scraper",
    "description": "Collect Bluesky profiles, posts, followers, follows and lists, or search for accounts by keyword. Get handles, DIDs, bios, profile counts, post text and engagement metrics in structured rows. Uses the public Bluesky API without login or a browser, with cursor-based pagination.",
    "version": "0.1",
    "x-build-id": "PtcwtNxWmSmE60eX1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axiomworks~bluesky-profile-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axiomworks-bluesky-profile-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/axiomworks~bluesky-profile-scraper/runs": {
      "post": {
        "operationId": "runs-sync-axiomworks-bluesky-profile-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/axiomworks~bluesky-profile-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-axiomworks-bluesky-profile-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",
        "properties": {
          "handles": {
            "title": "Account identifiers (e.g. bsky.app)",
            "type": "array",
            "description": "Accounts to read: handles (bsky.app or @jay.bsky.team), DIDs (did:plc:z72i7hdynmk6r22z27h6tvur), AT URIs (at://did:plc:z72i7hdynmk6r22z27h6tvur), or profile URLs (https://bsky.app/profile/bsky.app). Used except in searchProfiles, which ignores handles. Omitted or empty handles return 0 rows; unknown accounts are skipped. Prefill supplies three examples only in the editor; API calls must supply targets.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Collection mode (e.g. profiles)",
            "enum": [
              "profiles",
              "posts",
              "followers",
              "follows",
              "lists",
              "searchProfiles"
            ],
            "type": "string",
            "description": "Choose profiles, posts, followers, follows, lists or searchProfiles, e.g. \"posts\". Default profiles returns one detailed profile per supplied account. Other account modes use handles; searchProfiles uses searchQuery and ignores handles. maxItems is shared across all targets.",
            "default": "profiles"
          },
          "searchQuery": {
            "title": "Profile keywords (e.g. journalist)",
            "type": "string",
            "description": "Keywords to find accounts by name, handle or bio, e.g. \"journalist\" or \"日本\". Required only with mode=\"searchProfiles\"; ignored in other modes. Supply 1-200 characters. No default search runs automatically; no matches return 0 rows.",
            "default": ""
          },
          "postFilter": {
            "title": "Post filter (e.g. posts_no_replies)",
            "enum": [
              "posts_no_replies",
              "posts_with_replies",
              "posts_with_media"
            ],
            "type": "string",
            "description": "Choose posts_no_replies, posts_with_replies or posts_with_media, e.g. \"posts_with_media\". Used only with mode=\"posts\". Default posts_no_replies includes original posts and reposts but excludes replies; post authors can differ from handles when isRepost=true.",
            "default": "posts_no_replies"
          },
          "maxItems": {
            "title": "Shared row limit (e.g. 7)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum rows saved across all handles or search pages, e.g. 7. Accepts 1-10000; default 50. Profiles return at most one row per unique account, so three handles may return only three rows. Stops at this shared limit or the run spending limit; only saved rows are charged.",
            "default": 50
          },
          "enrichAccountType": {
            "title": "AI classification (e.g. false)",
            "type": "boolean",
            "description": "Set true to classify profile, follower, follow and search rows as person, brand, media, bot or other, e.g. true. Default false leaves accountType unset. Jev by TypeSafe processes the name and bio; an extra event is charged only on successful classification. Ignored for posts and lists.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy options (e.g. useApifyProxy: false)",
            "type": "object",
            "description": "Proxy settings for Bluesky API requests, e.g. {\"useApifyProxy\":false}. Default disables the proxy. Set {\"useApifyProxy\":true} on Apify if requests are blocked; retries use fresh sessions. Persistently blocked targets return 0 rows with advice to retry or change proxy settings.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}