Skip to content

User Posts

GET/v1/bluesky/user/posts1 credit

Returns an account's posts, newest first, with text, embeds, author, and reply, repost, like, quote and bookmark counts.

01Query parameters

NameTypeDescription
handleoptionalstringThe Bluesky handle, e.g. `bsky.app`. One of `handle` or `user_id` is required; `handle` wins when both are given.
user_idoptionalstringThe account's DID, e.g. `did:plc:z72i7hdynmk6r22z27h6tvur`. One of `handle` or `user_id` is required.
cursoroptionalstringThe `cursor` value from the previous page, passed back unchanged to get older posts.

02Request

curl "https://api.scrapesocial.ai/v1/bluesky/user/posts?handle=bsky.app" \
  -H "x-api-key: $SCRAPESOCIAL_KEY"

03Responses

Real answers from the API. Lists are shortened to 2 items.

GET /v1/bluesky/user/posts?handle=bsky.app

{
  "success": true,
  "credits_remaining": 4980,
  "credits_charged": 1,
  "feed": [
    {
      "uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l",
      "cid": "bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq",
      "author": {
        "did": "did:plc:z72i7hdynmk6r22z27h6tvur",
        "handle": "bsky.app",
        "displayName": "Bluesky",
        "avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreihwihm6kpd6zuwhhlro75p5qks5qtrcu55jp3gddbfjsieiv7wuka",
        "associated": {
          "chat": {
            "allowIncoming": "none"
          },
          "activitySubscription": {
            "allowSubscriptions": "followers"
          }
        },
        "labels": [],
        "createdAt": "2023-04-12T04:53:57.057Z",
        "verification": {
          "verifications": [],
          "verifiedStatus": "none",
          "trustedVerifierStatus": "valid"
        },
        "status": {
          "uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.actor.status/self",
          "cid": "bafyreihkojqw7p22odgjcbzjh5sh4vrntow24sd4nvntpqnddrd5pqma44",
          "record": {
            "$type": "app.bsky.actor.status",
            "createdAt": "2026-10-20T16:00:37.680Z",
            "durationMinutes": 60,
            "embed": {
              "$type": "app.bsky.embed.external",
              "external": {
                "$type": "app.bsky.embed.external#external",
                "description": "Elon Take The Wheel Livestream: Alex Gibney, Director of \"MUSK\"",
                "thumb": {
                  "$type": "blob",
                  "ref": {
                    "$link": "bafkreifbiu2m3dnnhmzq4dk6u4227p3xuq3zzqhhzvibhuojnz6unengny"
                  },
                  "mimeType": "image/jpeg",
                  "size": 195438
                },
                "title": "e.w. niedermeyer is live on Streamplace",
                "uri": "https://stream.place/niedermeyer.online"
              }
            },
            "status": "app.bsky.actor.status#live"
          },
          "status": "app.bsky.actor.status#live",
          "embed": {
            "external": {
              "uri": "https://stream.place/niedermeyer.online",
              "title": "e.w. niedermeyer is live on Streamplace",
              "description": "Elon Take The Wheel Livestream: Alex Gibney, Director of \"MUSK\"",
              "thumb": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:z72i7hdynmk6r22z27h6tvur/bafkreifbiu2m3dnnhmzq4dk6u4227p3xuq3zzqhhzvibhuojnz6unengny"
            },
            "$type": "app.bsky.embed.external#view"
          },
          "labels": [],
          "expiresAt": "2026-10-20T17:00:37.680Z",
          "isActive": false
        }
      },
      "record": {
        "$type": "app.bsky.feed.post",
        "createdAt": "2024-10-17T07:06:51.491Z",
        "langs": [
          "en"
        ],
        "text": "👋  Bluesky is an open social network that gives creators independence from platforms, developers the freedom to build, and users a choice in their experience. We're so excited to have you here! \n\nWe share Bluesky updates & news from this account. A quick orientation thread: 🧵✨"
      },
      "bookmarkCount": 272,
      "replyCount": 8688,
      "repostCount": 9551,
      "likeCount": 63746,
      "quoteCount": 723,
      "indexedAt": "2024-10-17T07:06:51.491Z",
      "labels": [],
      "threadgate": {
        "uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.threadgate/3l6oveex3ii2l",
        "cid": "bafyreiahvvhl554rdiddx5ek73qpbpldhb5wjbxaddudnnjs4qkutj6tqe",
        "record": {
          "$type": "app.bsky.feed.threadgate",
          "createdAt": "2026-10-18T03:32:10.106Z",
          "hiddenReplies": [
            "at://did:plc:ao2vyokzaegtw37bh72kjk62/app.bsky.feed.post/3my2i2k3uyk2t"
          ],
          "post": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"
        },
        "lists": []
      }
    },
    {
      "uri": "at://did:plc:xrr5j2okn7ew2zvcwsxus3gb/app.bsky.feed.post/3mymxa653fs27",
      "cid": "bafyreihmah6ovckzd3xht5qjoobiys6utfvegtvdmaqilvit3m7jg36xsu",
      "author": {
        "did": "did:plc:xrr5j2okn7ew2zvcwsxus3gb",
        "handle": "catsofyore.bsky.social",
        "displayName": "Cats of Yore",
        "avatar": "https://cdn.bsky.app/img/avatar/plain/did:plc:xrr5j2okn7ew2zvcwsxus3gb/bafkreig6pljjdx7aekpetnwdxmjzhcbiwsoph72wjhjzjqsey2bzrj4pz4",
        "associated": {
          "chat": {
            "allowIncoming": "following"
          },
          "activitySubscription": {
            "allowSubscriptions": "followers"
          }
        },
        "labels": [],
        "createdAt": "2023-04-28T06:40:27.997Z"
      },
      "record": {
        "$type": "app.bsky.feed.post",
        "createdAt": "2026-10-24T14:56:12.679Z",
        "embed": {
          "$type": "app.bsky.embed.images",
          "images": [
            {
              "alt": "Black-and-white photo of a long-haired white cat standing on a snowbank next to a snowy road or driveway. The snow is very deep. It looks like this might be a driveway because it seems to lead to a ramshackle garage with a house on the right.",
              "aspectRatio": {
                "height": 1308,
                "width": 1302
              },
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreifbrlsxlwxlggg6jhqlizlwfsexlnnene6bl2kmuutcnb4y2jjzbu"
                },
                "mimeType": "image/jpeg",
                "size": 781910
              }
            }
          ]
        },
        "langs": [
          "en"
        ],
        "text": "Snow puff! Photo from my collection, 1960."
      },
      "embed": {
        "images": [
          {
            "thumb": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:xrr5j2okn7ew2zvcwsxus3gb/bafkreifbrlsxlwxlggg6jhqlizlwfsexlnnene6bl2kmuutcnb4y2jjzbu",
            "fullsize": "https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:xrr5j2okn7ew2zvcwsxus3gb/bafkreifbrlsxlwxlggg6jhqlizlwfsexlnnene6bl2kmuutcnb4y2jjzbu",
            "alt": "Black-and-white photo of a long-haired white cat standing on a snowbank next to a snowy road or driveway. The snow is very deep. It looks like this might be a driveway because it seems to lead to a ramshackle garage with a house on the right.",
            "aspectRatio": {
              "height": 1308,
              "width": 1302
            }
          }
        ],
        "$type": "app.bsky.embed.images#view"
      },
      "bookmarkCount": 147,
      "replyCount": 50,
      "repostCount": 549,
      "likeCount": 6823,
      "quoteCount": 7,
      "indexedAt": "2026-10-24T14:56:15.940Z",
      "labels": []
    }
  ],
  "cursor": "2026-10-11T16:59:27.675Z"
}

Common to every endpoint

Any route can answer these: a missing or wrong key, no credits left, the platform not answering, or a failure on our side. None of them costs credits.

GET /v1/cosmos/profile?handle=design

{
  "success": false,
  "message": "Invalid API key"
}

04Notes

Posts come in `feed`, up to 30 per page; a pinned post comes first. Reposts of other accounts appear as plain posts. Pass `cursor` (a timestamp) back as `cursor` for older posts; it is null on the last page, and a page past the end returns an empty `feed` for 0 credits. An unknown account is a free 404; a cursor that is not from a previous answer is a free 400.

05Errors & credits

Every error has success: false, a real HTTP status and costs no credits.

  • 400missing_parameter

    A required parameter is missing or invalid.

  • 403private_account

    The account is private or age-restricted.

  • 404not_found

    No such account.

  • 503upstream_error

    The platform did not answer; retry shortly.