Bluesky Posts & Profile Scraper
Pricing
from $6.00 / 1,000 results
Bluesky Posts & Profile Scraper
Scrape Bluesky profiles and posts: followers, bios, full post text, likes, reposts, replies, images and links, from any profile or keyword search.
Pricing
from $6.00 / 1,000 results
Rating
0.0
(0)
Developer
Maged
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Bluesky Posts & Profile Scraper extracts profiles and posts from Bluesky: bios, follower counts, join dates and verification, plus every post's full text, likes, reposts, replies, quotes, images, videos, links and hashtags. Scrape any profile's timeline or search all of Bluesky by keyword or #hashtag, and get clean, export-ready data.
What does Bluesky Posts & Profile Scraper do?
- Profiles: give it handles or profile links and get one profile row each (name, bio, followers, following, post count, join date, verification, avatar) plus that profile's most recent posts.
- Keyword & hashtag search: find posts across the whole network mentioning a keyword or hashtag, newest first or most engaging first.
Every post comes with engagement counts, media, links, hashtags, mentions and a direct link, and is marked as original, reply or repost.
On the Apify platform you also get API access, scheduling, integrations (Google Sheets, Slack, Zapier, Make, webhooks) and run monitoring, so you can track accounts or keywords on autopilot.
Why scrape Bluesky?
- Brand & keyword monitoring: catch every mention of your brand, product or competitors as it happens.
- Influencer research: compare accounts by followers, posting frequency and engagement.
- Social listening & research: collect posts on a topic or hashtag for sentiment analysis, AI training data or academic research.
- Content strategy: find which posts get the most likes, reposts and quotes.
- Archiving: keep a timestamped copy of an account's public posts.
How to scrape Bluesky
- Open the Actor and go to the Input tab.
- Add handles to Profiles (e.g.
bsky.app,@jay.bsky.team, or a profile link), and/or keywords to Search keywords. - Set how many posts you want per profile and per keyword.
- Click Start.
- Open the Output tab and switch between the Posts and Profiles views, or download as JSON, CSV, Excel or HTML.
Input
| Field | Type | Description |
|---|---|---|
profiles | array | Handles (bsky.app, name.bsky.social, @name) or profile links. |
maxPostsPerProfile | integer | Most recent posts per profile. 0 = profile info only. Default 50. |
includeReplies | boolean | Also collect the profile's replies. Default false. |
includeReposts | boolean | Also collect reposts. Default true. |
includeProfileInfo | boolean | Add a profile row. Default true. |
searchQueries | array | Keywords or #hashtags to search across Bluesky. |
maxPostsPerSearch | integer | Posts per keyword. Default 100. |
searchSort | string | latest or top. Top returns up to 100 posts per keyword. |
{"profiles": ["bsky.app", "https://bsky.app/profile/jay.bsky.team"],"maxPostsPerProfile": 100,"searchQueries": ["web scraping", "#python"],"maxPostsPerSearch": 300,"searchSort": "latest"}
Output
Two kinds of rows, marked by entityType. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Profile
{"entityType": "profile","handle": "jay.bsky.team","did": "did:plc:oky5czdrnfjpqslsw2a5iclo","profileUrl": "https://bsky.app/profile/jay.bsky.team","displayName": "Jay 🦋","description": "Founder & Chief Innovation Officer @ Bluesky\n\nWorking on @attie.ai\n\n🌱 🪴 🌳","followersCount": 594638,"followsCount": 3985,"postsCount": 4165,"createdAt": "2022-11-17T06:31:40.296Z","isVerified": true,"avatarUrl": "https://cdn.bsky.app/img/avatar/plain/did:plc:oky5czdrnfjpqslsw2a5iclo/...","pinnedPostUrl": null}
Post
{"entityType": "post","postUrl": "https://bsky.app/profile/jay.bsky.team/post/3mvvdpby3x22t","text": "good dogs","createdAt": "2026-09-19T18:45:07.963Z","languages": ["en"],"authorHandle": "jay.bsky.team","authorName": "Jay 🦋","likeCount": 662,"repostCount": 23,"replyCount": 20,"quoteCount": 2,"isReply": false,"isRepost": false,"imageUrls": ["https://cdn.bsky.app/img/feed_fullsize/plain/did:plc:oky5czdrnfjpqslsw2a5iclo/..."],"videoUrl": null,"externalLink": null,"quotedPostUrl": null,"hashtags": [],"mentions": [],"links": [],"source": "profile","searchQuery": null}
Output data fields
| Field | Description |
|---|---|
followersCount / followsCount / postsCount | Profile audience and activity. |
createdAt (profile) | When the account joined Bluesky. |
isVerified | Whether the account has a valid verification. |
text / createdAt / languages | Post content and time. |
likeCount / repostCount / replyCount / quoteCount | Engagement. |
isReply / replyToUrl / isRepost / repostedBy | Post type and context. |
imageUrls / videoUrl / externalLink / quotedPostUrl | Attached media, link card and quoted post. |
hashtags / mentions / links | Tags, mentioned accounts and links in the text. |
source / searchQuery | Whether the post came from a profile or a keyword search. |
How many results will I get?
One row per post, plus one row per profile. 3 profiles × 100 posts + 2 keywords × 300 posts is up to 903 rows. Use the per-profile and per-keyword limits to control volume.
Tips
- Monitor a keyword daily: schedule the Actor with
searchSort: latestand send new posts to Slack or Google Sheets. - Hashtags: search
#yourtagto get posts tagged with it. - Profile snapshot only: set Max posts per profile to
0to collect just profile stats for a list of accounts.
FAQ
Can I scrape followers lists? Not at the moment. Open an issue if you need it.
Is scraping Bluesky legal? The Actor only collects publicly available posts and profiles. You're responsible for using the data lawfully, especially personal data under GDPR.
Found a bug or need a custom feature? Open an issue in the Issues tab. Custom solutions are available on request.