Bluesky post API
  1. Docs
  2. Bluesky
  3. Bluesky post API

Bluesky post API

The post with its embed content and counts, and its threaded replies in `extra.replies`.

GET /v1/bluesky/post

GET /v1/bluesky/post

The post with its embed content and counts, and its threaded replies in extra.replies.

  • Cost: 1 credit
  • Cache: Results are kept up to 30 days; send max_age_days to reuse them for free.
  • Timeout: A request still running after about 25 seconds answers 202 with a job to poll (Batch and jobs).

Parameters#

NameTypeRequiredDescription
urlURLyesPost URL (bsky.app/profile/<handle>/post/<rkey>). Accepted hosts: bsky.app.

Every request also accepts:

  • trim: true for a smaller response without null fields and extra.
  • raw: true to also get the platform's original object as raw.
  • max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).

Example request#

Set your key in the environment first (see Authentication).

1curl -G "https://api.socialscrape.dev/v1/bluesky/post" \2  -H "x-api-key: $SOCIALSCRAPE_API_KEY" \3  --data-urlencode "url=https://bsky.app/profile/espn.com/post/3lqdfq7fkvm2g"

Example response#

This is a sample from a recorded response, other people's names and handles are replaced. Status 200.

200 OKSample response
1{2  "ok": true,3  "credits_charged": 1,4  "credits_remaining": 4999,5  "cached": false,6  "cached_at": null,7  "request_id": "req_0065b259a9bb752536f4f5aa",8  "data": {9    "object": "post",10    "platform": "bluesky",11    "id": "at://did:plc:x7d6j54pm22ufehkes6jo4jf/app.bsky.feed.post/3lqdfq7fkvm2g",12    "url": "https://bsky.app/profile/espn.com/post/3lqdfq7fkvm2g",13    "type": "link",14    "author": {15      "id": "did:plc:x7d6j54pm22ufehkes6jo4jf",16      "handle": "espn.com",17      "name": "ESPN",18      "url": "https://bsky.app/profile/espn.com",19      "avatar_url": "https://cdn.bsky.app/img/avatar/plain/did:plc:x7d6j54pm22ufehkes6jo4jf/bafkreie4oxawqqsfzvk47ysr3unsnmviedzpylxmwxnpa534to2bzas4ie",20      "verified": true21    },22    "title": null,23    "text": "Oilers' defenseman Mattias Ekholm is set to return to action Thursday for Game 5 of the Western Conference finals against the Stars.\n\nEkholm has been out of the Oilers' lineup since April 11 with an undisclosed injury.",24    "published_at": "2025-05-29T19:01:20.743000Z",25    "duration_seconds": null,26    "language": null,27    "hashtags": null,28    "mentions": null,29    "stats": {30      "views": null,31      "likes": 38,32      "comments": 1,33      "shares": 1,34      "saves": 0,35      "dislikes": null36    },37    "media": {38      "thumbnail_url": "https://cdn.bsky.app/img/feed_thumbnail/plain/did:plc:x7d6j54pm22ufehkes6jo4jf/bafkreihhffgngv4thcnw7sh7o43qnwwyjvfemdlccwalu76r3vnhlbssle",39      "video_url": null,40      "audio_url": null,41      "image_urls": null,42      "width": null,43      "height": null44    },45    "song": null,46    "location": null,47    "is_pinned": null,48    "is_sponsored": null,49    "extra": {50      "cid": "bafyreibams5wyqdpg2cmmks7lhf5ccxu7hbu24sfatgc53jmb2nun5k5dm",51      "external": {52        "description": "The Oilers apparently will have defenseman Mattias Ekholm back in their lineup for Game 5 of the Western Conference finals against the Stars.",53        "title": "Oilers' Ekholm set for return in Game 5 vs. Stars",54        "uri": "http://spr.ly/63320N4OEy"55      },56      "quote_count": 1,57      "replies": [58        {59          "author": {60            "id": "1000000001",61            "handle": "sample_user",62            "name": "Sample User",63            "url": null,64            "avatar_url": null,65            "verified": false66          },67          "id": "at://did:plc:dzsbhwnnvblrpyy2fpnmaih3/app.bsky.feed.post/3lqdii5jmmc2p",68          "object": "comment",69          "parent_id": "at://did:plc:x7d6j54pm22ufehkes6jo4jf/app.bsky.feed.post/3lqdfq7fkvm2g",70          "platform": "bluesky",71          "post_id": "at://did:plc:x7d6j54pm22ufehkes6jo4jf/app.bsky.feed.post/3lqdfq7fkvm2g",72          "published_at": "2025-05-29T19:50:31.613000Z",73          "stats": {74            "likes": 0,75            "replies": 076          },77          "text": "Alright! Now I have a reason to root for Edmonton aside from my burning hatred of Dallas!",78          "url": "https://bsky.app/profile/thinkasaurus.bsky.social/post/3lqdii5jmmc2p"79        }80      ],81      "repost_count": 0,82      "uri": "at://did:plc:x7d6j54pm22ufehkes6jo4jf/app.bsky.feed.post/3lqdfq7fkvm2g"83    }84  },85  "cursor": null,86  "has_more": null87}

Response#

A Post object in data.

See Data models for every field. The envelope around data is described in Responses.

Errors#

Failures are free: credits_charged is 0. Branch on error.code, never on the message.

CodeHTTPRetryMeaning
invalid_params400noA parameter is missing, unknown or has the wrong type.
unsupported_url400noThe URL is not one this endpoint accepts (wrong platform or form).
not_found404noThe platform says this profile, post or item does not exist.

Every request can also fail with the account and platform errors listed on the Errors page.