Bluesky Posts & Profile Scraper
Pricing
from $0.48 / 1,000 post scrapeds
Bluesky Posts & Profile Scraper
Export Bluesky posts by keyword search or from any profile, custom feed, list or post thread: text, likes, reposts, replies, quotes, hashtags, links, images and quoted posts, plus free profile rows with follower counts. No login. $0.90 per 1,000 posts, down to $0.48 on paid plans.
Pricing
from $0.48 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
TidyHarvest
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Export Bluesky posts from a keyword search or any profile, custom feed, list or post thread to JSON, CSV or Excel: text, timestamps, likes, reposts, replies and quotes, hashtags, mentions, links, images with alt text, videos, link cards and quoted posts, plus a free profile row (followers, following, post count, bio, avatar) for every handle. No login, no cookies and no proxy needed: runs are fast and cheap. $0.90 per 1,000 posts (less on paid plans), no start fee. Profile rows are free.
What you can do with it
- Track a topic or brand: search posts by keyword,
#hashtag, phrase or operator (from:,mentions:,domain:,lang:), newest or top first. - Monitor accounts: pull the latest posts from brands, journalists, politicians or competitors on a schedule
(use "Only posts newer than" =
1 dayfor a daily digest). - Measure engagement: likes, reposts, replies, quotes and bookmarks per post, plus follower counts, for social media reporting and influencer research.
- Archive a custom feed or list: export what a Bluesky feed (e.g. Discover, a topic feed) or a curated list is showing.
- Collect a conversation: give a post link and get the post with its full reply thread, ready for sentiment or discourse analysis.
- Build datasets for AI/NLP: clean text, language tags, hashtags, and image alt text in one flat row per post.
How to use
- Type keyword searches into Search posts by keyword, and/or paste handles or links into Handles, profile, post,
feed or list links (one per line), e.g.
bsky.app,https://bsky.app/profile/bsky.app/feed/whats-hot, or a post link. - Set Max posts per target and, optionally, Only posts newer than, replies/reposts, or a keyword filter.
- Click Start, then download the dataset as JSON, CSV, Excel or via the API. Each run also saves a
SUMMARYrecord (posts per target, failures).
Input
| Field | What it does |
|---|---|
targets | Handles (bsky.app, @jay.bsky.team, name = name.bsky.social), DIDs, or bsky.app links to a profile, post, feed (/feed/<id>) or list (/lists/<id>). at:// URIs work too. |
searchQueries | Keyword searches, one per line: words, "exact phrase", #hashtag, from:nytimes.com, mentions:bsky.app, domain:github.com, lang:en. Up to 100 posts per query. |
searchSort, searchLanguage | latest (default) or top; optional language code for searches. |
maxPostsPerTarget | Posts per handle/feed/list/thread (default 30, max 10,000). |
onlyPostsNewerThan | 2026-10-01 or 7 days, 12 hours... Profile timelines stop paging at this date. |
includeReplies | Profiles: also return the account's replies (default off). |
includeReposts | Also return reposts, flagged isRepost + repostedBy (default off). |
includeProfiles | One free type: profile row per handle (default on). |
includeAuthorStats | Add follower/follow/post counts of every post's author (handy for feeds and threads). |
threadDepth | Reply levels to include for post links (default 6). |
keywords | Keep only fetched posts whose text or hashtags contain one of these words (you pay only for matches). |
maxItems | Hard cap on posts for the whole run (and on cost). |
Example:
{"targets": ["nytimes.com", "https://bsky.app/profile/bsky.app/feed/whats-hot"],"maxPostsPerTarget": 200,"onlyPostsNewerThan": "3 days","includeAuthorStats": true}
Output
One row per post (type: "post"):
| Field | Description |
|---|---|
url, uri, cid | Link on bsky.app, AT Protocol URI and content id |
text, createdAt, indexedAt, langs | Post text, creation time, index time, language tags |
authorHandle, authorDisplayName, authorDid, authorAvatar | Author |
authorFollowers (+ authorFollows, authorPostsCount with author stats on) | Author audience size |
likeCount, repostCount, replyCount, quoteCount, bookmarkCount | Engagement |
hashtags, mentions (handle, did), links | Rich-text facets |
images (url, thumb, alt), video (playlist, thumbnail, alt), externalLink (url, title, description, thumb) | Media and link card |
quotedPostUri, quotedPostUrl, quotedPostAuthor, quotedPostText | Quoted post |
isReply, replyToUri, rootUri, threadDepth | Reply info (threadDepth for post-link threads) |
isRepost, repostedBy, repostedAt, isPinned | Repost info |
labels, source, sourceType | Moderation labels; which input produced the row (profile, feed, list, thread) |
{"type": "post","url": "https://bsky.app/profile/bsky.app/post/3mxhdhodv222n","text": "a masterclass in alt text","createdAt": "2026-10-09T15:53:59.424Z","authorHandle": "bsky.app","authorDisplayName": "Bluesky","authorFollowers": 35229306,"likeCount": 2908, "repostCount": 280, "replyCount": 40, "quoteCount": 13,"langs": ["en"],"hashtags": [], "mentions": [], "links": [], "images": [],"quotedPostUrl": "https://bsky.app/profile/pantspants.bsky.social/post/3mxfldtvy522k","isReply": false, "isRepost": false,"source": "bsky.app", "sourceType": "profile"}
One free row per profile (type: "profile"): url, did, handle, displayName, description, avatar, banner,
followersCount, followsCount, postsCount, createdAt, verified, labels.
Pricing
Pay per result: $0.90 per 1,000 posts on the Free plan, down to $0.48 on higher plans (post-scraped), no start fee. Profile rows are free. Keyword filters,
date filters and caps apply before you are charged, and the run stops cleanly at your maximum cost per run.
A run where nothing can be read fails instead of silently returning an empty dataset.
| Apify plan tier | Free | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| per 1,000 posts | $0.90 | $0.80 | $0.62 | $0.48 | $0.48 | $0.48 |
Limits and notes
- Keyword search returns up to 100 posts per query (the newest, or the top ones). For more, split the topic into several queries or narrow them with operators; for an account's full history, give the handle instead.
- Follower/following lists are not exported, only counts.
- Custom feeds return what the feed serves to a logged-out visitor; personalised feeds (e.g. "Following") need a login and return nothing here.
- Accounts that asked Bluesky to hide them from logged-out viewers are skipped.
- Data is a snapshot of public posts at run time. If you store it, respect deletions: Bluesky's developer guidelines ask services to remove content its author has deleted.
- Public data only. This actor is not affiliated with, endorsed by, or sponsored by Bluesky Social PBC.