Bluesky Search API reference
Your first 10 calls are free, no card needed. Pricing and FAQ
Get a free API keycurl "https://api.insightsocial.app/v1/bluesky/search?query=espresso" \ -H "x-api-key: $INSIGHTSOCIAL_API_KEY"
Returns Bluesky posts matching a keyword, up to 100 per page, each with its text, author, like/comment/share counts, and when it was written.
Use it to find posts by keyword across all of Bluesky; use user/posts when you already know the account.
10 credits per call.
Authorization
apiKey Your key from the dashboard. It starts with isk_.
In: header
Query Parameters
Search terms matched against post text.
latest (newest first, the default) or top (Bluesky's own top ranking, which favours popular posts over recent ones).
Value in
- "latest"
- "top"
Only posts written at or after this time. ISO 8601 date (2026-09-01) or datetime with a timezone (2026-09-01T00:00:00Z); any other shape is rejected with a free 400.
Only posts written before this time. Same format as since. Set it to the oldest published_at of your last call to fetch the next older batch; the boundary is compared to the second, so a post from that same second can repeat, and deduplicating on post.id removes it.
Only posts tagged with this language, as a code such as en, ja or ko.
Set to 1 to get the price of this call without making it: data.dry_run carries credits_min and credits_max. Nothing is charged.
Value in
- "1"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api.insightsocial.app/v1/bluesky/search?query=string"{ "success": true, "platform": "string", "endpoint": "string", "schema_version": "2", "pagination": { "next_cursor": "string", "has_more": true, "page_size": 0, "stopped_at": "since" }, "unavailable": [ "string" ], "credits_used": 0, "credits_remaining": 0, "request_id": "string", "cached": true, "idempotent_replay": true, "charge_reason": "string", "free_call": true, "data": { "items": [ { "post": { "id": "string", "url": "http://example.com", "kind": "string", "content": { "text": "string", "media_urls": [ "http://example.com" ], "thumbnail_url": "http://example.com", "duration_seconds": 0 }, "author": { "id": "string", "username": "string", "display_name": "string", "avatar_url": "http://example.com", "verified": true }, "engagement": { "views": 0, "likes": 0, "comments": 0, "shares": 0, "saves": 0 }, "flags": { "nsfw": true, "spoiler": true, "pinned": true, "deleted": true, "likes_hidden": true, "comments_hidden": true, "shares_hidden": true, "views_hidden": true, "saves_hidden": true }, "published_at": "2019-08-24T14:15:22Z", "language": "string", "ext": { "property1": null, "property2": null } } } ], "total": 0, "truncated": true, "ext": { "property1": null, "property2": null } }}Profile GET
Returns a Bluesky user's public profile: handle, display name, avatar, description, follower and follows counts, post count, created date, and verification status.
User › Posts GET
Returns a feed of posts for a Bluesky user: text, author info, embeds, reply/repost/like/quote counts, and when each was indexed.