Bluesky API endpoint
Returns a page of a Bluesky account's posts, newest first, including text, engagement counts, and any attached images/link card/quoted post.
/bluesky/author-feedQuery parameters:
actor (required) — a handle (e.g. bsky.app) or DID.limit (optional) — page size, 1-100. Defaults to 25.cursor (optional) — pagination cursor from a previous response's
cursor field.Notable response behavior:
uri is usable directly as the uri parameter to
/bluesky/post-thread.images, external, or quoted_post_uri
(a quote-post-with-media embed sets both images/external and
quoted_post_uri).| Field | Filled in, of 23 checked | Values in the sample |
|---|---|---|
| uri | 23 | |
| cid | 23 | |
| url | 23 | bsky.app |
| author | 23 | |
| text | 23 | median 133 characters |
| langs | 23 | median 1 entry |
| created_at | 23 | 2026-09-09 to 2026-10-12 |
| indexed_at | 23 | 2026-09-09 to 2026-10-12 |
| reply_count | 23 | 1 to 492, median 42 |
| repost_count | 23 | 2 to 5,190, median 143 |
| like_count | 23 | 33 to 20,705, median 869 |
| quote_count | 23 | 0 to 186, median 13 |
| images | 4 | median 1 entry |
| quoted_post_uri | 11 | |
| external | 2 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| actor | string | Yes | A handle (e.g. bsky.app) or DID | bsky.app | |
| limit | integer | No | Page size, 1-100 | 25 | |
| cursor | string | No | Pagination cursor from a previous response's cursor field | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/bluesky/author-feed?actor=bsky.app&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"posts": [
{
"uri": "at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l",
"cid": "bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq",
"url": "https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l",
"author": {
"did": "did:plc:z72i7hdynmk6r22z27h6tvur",
"handle": "bsky.app",
"display_name": "Bluesky"
},
"text": "Welcome to Bluesky!",
"langs": [
"en"
],
"created_at": "2024-10-17T07:06:51.491Z",
"reply_count": 8545,
"repost_count": 9534,
"like_count": 63579,
"quote_count": 705
}
],
"cursor": "1234567890::bafyabc"
}
}Request schema
No body schema
Response schema
#/definitions/bluesky.authorFeedResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | bluesky.AuthorFeedResponse | No | ||||
| data.cursor | string | No | 1234567890::bafyabc | |||
| data.posts | array | No | Post record, 28 fields: author, cid, created_at, external, images, indexed_at, langs, like_count, quote_count, quoted_post_uri, reply_count, repost_count and 3 more. Described under Bluesky batch posts API. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/bluesky/author-feed?actor=bsky.app&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"