Bluesky Scraper ๐ฆ
Pricing
from $1.50 / 1,000 results
Bluesky Scraper ๐ฆ
Scrape Bluesky posts and DMs without the hassle. This Actor extracts posts, replies, and direct messages from Bluesky, fast, reliable.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer

No-Code Venture
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Scrape Bluesky posts and DMs without the hassle. Scrapes posts, replies, and direct messages from Bluesky โ fast, reliable, and no browser automation needed.
โจ Features
- ๐ Search Mode โ Search for posts by keyword across all of Bluesky
- ๐ค User Feed Mode โ Scrape posts from any public Bluesky profile
- ๐ฌ Reply Threads โ Extract full reply threads with configurable depth
- ๐จ Direct Messages โ Scrape your private DM conversations (requires auth)
- ๐ผ๏ธ Rich Content โ Extracts text, images, videos, external links, and quote posts
- โก Fast & Lightweight โ Uses the AT Protocol API directly (no browser needed)
- ๐ Authenticated โ Requires login with your credentials (app password)
๐ Getting Started
๐ Three Modes: Search, User Feed, or Messages
| Mode | When to Use | Required Fields |
|---|---|---|
| Search | Find posts by keyword across Bluesky | scrapeMode: posts, searchQuery, auth |
| User Feed | Scrape posts from a specific user | scrapeMode: posts, handle, auth |
| Messages | Scrape your direct messages | scrapeMode: messages, auth |
โ ๏ธ Note: All modes require authentication.
๐ Posts Mode
๐ Search for Posts
Search for posts by keyword across all of Bluesky.
{"scrapeMode": "posts","searchQuery": "artificial intelligence","searchSort": "top","postCount": 20}
Search Sort Options:
topโ Most relevant/popular results (default)latestโ Most recent posts first
๐ค Scrape User Feed
Scrape posts from a specific Bluesky user's profile.
{"scrapeMode": "posts","handle": "apify.com","feedFilter": "posts_and_author_threads","postCount": 25}
Feed Filter Options:
| Filter | Description |
|---|---|
posts_and_author_threads | Posts + conversation threads (default) |
posts_no_replies | Only original posts, no replies |
posts_with_replies | Posts including replies to others |
posts_with_media | Only posts with images/videos |
๐ฌ Including Reply Threads
Enable includeReplies to fetch the full reply thread for each post:
{"scrapeMode": "posts","handle": "jay.bsky.team","postCount": 10,"includeReplies": true,"repliesDepth": 3}
๐จ Messages Mode (DMs)
Scrape your direct message conversations. Requires authentication.
{"scrapeMode": "messages","conversationCount": 10,"messagesPerConversation": 50,"unreadOnly": false,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
Message Options:
| Parameter | Description | Default |
|---|---|---|
conversationCount | Number of conversations to fetch (0 = all) | 10 |
messagesPerConversation | Messages per conversation (0 = all) | 50 |
unreadOnly | Only fetch conversations with unread messages | false |
๐ JSON Examples for All Use Cases
1. Search Posts - Basic
Find posts about a topic (authentication required):
{"scrapeMode": "posts","searchQuery": "web scraping","postCount": 10,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
2. Search Posts - Latest
Get the latest posts:
{"scrapeMode": "posts","searchQuery": "breaking news","searchSort": "latest","postCount": 50,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
3. Search Posts - With Reply Threads
Search and get all reply threads:
{"scrapeMode": "posts","searchQuery": "controversial topic","searchSort": "top","postCount": 20,"includeReplies": true,"repliesDepth": 5,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
4. User Feed - All Post Types
Get all posts from a user (posts + threads):
{"scrapeMode": "posts","handle": "apify.com","feedFilter": "posts_and_author_threads","postCount": 100}
5. User Feed - Original Posts Only
Get only original posts (no replies to others):
{"scrapeMode": "posts","handle": "jay.bsky.team","feedFilter": "posts_no_replies","postCount": 50}
6. User Feed - Media Only
Get only posts with images/videos:
{"scrapeMode": "posts","handle": "photography.bsky.social","feedFilter": "posts_with_media","postCount": 30}
7. User Feed - With All Replies
Get posts including all replies to other users:
{"scrapeMode": "posts","handle": "influencer.bsky.social","feedFilter": "posts_with_replies","postCount": 100,"includeReplies": true,"repliesDepth": 0}
8. User Feed - Unlimited Posts
Get ALL posts from a user (0 = unlimited):
{"scrapeMode": "posts","handle": "active-user.bsky.social","feedFilter": "posts_and_author_threads","postCount": 0,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
9. Direct Messages - Basic
Get your recent DM conversations:
{"scrapeMode": "messages","conversationCount": 10,"messagesPerConversation": 50,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
10. Direct Messages - Unread Only
Get only conversations with unread messages:
{"scrapeMode": "messages","conversationCount": 0,"messagesPerConversation": 20,"unreadOnly": true,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
11. Direct Messages - Full Backup
Export ALL conversations with ALL messages:
{"scrapeMode": "messages","conversationCount": 0,"messagesPerConversation": 0,"unreadOnly": false,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
12. Brand Monitoring
Track mentions of your brand:
{"scrapeMode": "posts","searchQuery": "\"your brand name\"","searchSort": "latest","postCount": 100,"includeReplies": true,"repliesDepth": 2,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
13. Competitor Analysis
Monitor competitor's posts:
{"scrapeMode": "posts","handle": "competitor.bsky.social","feedFilter": "posts_no_replies","postCount": 50,"includeReplies": true,"repliesDepth": 3}
14. Hashtag/Topic Research
Find posts about a specific hashtag or topic:
{"scrapeMode": "posts","searchQuery": "#buildinpublic","searchSort": "top","postCount": 100,"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
๐ Authentication
Authentication is required for all operations.
{"blueskyIdentifier": "your-handle.bsky.social","blueskyPassword": "your-app-password"}
โ ๏ธ Important: Use an App Password, not your main account password!
Create one at: Settings โ App Passwords โ Add App Password
Input Parameters
Mode Selection
| Parameter | Type | Description | Default |
|---|---|---|---|
scrapeMode | String | What to scrape: posts or messages | posts |
Posts Mode Parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
searchQuery | String | Search term (enables search mode) | โ |
searchSort | String | Sort: top, latest | top |
handle | String | User handle without "@" | โ |
feedFilter | String | Feed filter type | posts_and_author_threads |
postCount | Integer | Posts to scrape (0 = all) | 10 |
includeReplies | Boolean | Fetch reply threads | false |
repliesDepth | Integer | Reply thread depth (0 = all) | 2 |
Messages Mode Parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
conversationCount | Integer | Conversations to fetch (0 = all) | 10 |
messagesPerConversation | Integer | Messages per convo (0 = all) | 50 |
unreadOnly | Boolean | Only unread conversations | false |
Authentication
| Parameter | Type | Description | Default |
|---|---|---|---|
blueskyIdentifier | String | Your handle or email | โ |
blueskyPassword | String | Your app password | โ |
Protocol Settings
| Parameter | Type | Description | Default |
|---|---|---|---|
service | String | AT Protocol service URL (for alternative PDS servers) | https://bsky.social |
๐ Output Examples
Post Output
{"uri": "at://did:plc:xxx/app.bsky.feed.post/yyy","cid": "bafyrei...","text": "Just launched our new web scraping platform! ๐","author": "Apify","authorHandle": "apify.com","authorDid": "did:plc:vu5ic5ygdeyunpefgmlamsmw","authorAvatar": "https://cdn.bsky.app/img/avatar/...","createdAt": "2024-01-15T10:30:00.000Z","likeCount": 142,"repostCount": 28,"replyCount": 15,"quoteCount": 5,"url": "https://bsky.app/profile/apify.com/post/yyy","embed": {"type": "images","images": [{"url": "https://cdn.bsky.app/img/feed_fullsize/...","alt": "Screenshot of the new platform"}]},"replies": [{"uri": "at://did:plc:abc/app.bsky.feed.post/zzz","text": "This looks amazing!","author": "TechEnthusiast","authorHandle": "techlover.bsky.social","likeCount": 8,"depth": 1}]}
DM Output
{"conversation": {"id": "3abc123...","members": [{"did": "did:plc:xxx","handle": "friend.bsky.social","displayName": "Friend Name","avatar": "https://cdn.bsky.app/..."}],"lastMessage": {"id": "msg123","text": "Hey, how's it going?","sender": "did:plc:xxx","sentAt": "2024-01-15T10:30:00.000Z"},"unreadCount": 0,"muted": false},"messages": [{"id": "msg123","text": "Hey, how's it going?","sender": {"did": "did:plc:xxx","handle": "friend.bsky.social","displayName": "Friend Name"},"sentAt": "2024-01-15T10:30:00.000Z","conversationId": "3abc123..."}]}
Embed Types
| Type | Description | Fields |
|---|---|---|
images | One or more images | images[].url, images[].alt |
video | Video content | video.url, video.thumbnail |
external | Link preview | external.uri, external.title, external.description |
quote | Quote post | record.uri, record.cid, record.text |
๐ฏ Use Cases
Posts
- Brand Monitoring โ Track mentions of your company or product
- Market Research โ Analyze trends and sentiment
- Content Curation โ Find popular posts for content ideas
- Competitor Analysis โ Monitor competitor activity
Direct Messages
- Backup DMs โ Export your conversation history
- Message Analytics โ Analyze your communication patterns
- Data Migration โ Move conversations to another platform
- Research โ Study DM patterns (with consent)
โ๏ธ How It Works
- Initialize โ Creates a connection to Bluesky's API
- Authenticate (if provided) โ Logs in for DM access or higher rate limits
- Fetch โ Retrieves posts via search/feed or DMs via chat API
- Process โ Extracts replies or messages as configured
- Output โ Saves structured data to the dataset
๐ก๏ธ Rate Limits
| Status | Approximate Limits |
|---|---|
| Authenticated | ~3000 requests/minute |
๐ก Tips
- App passwords โ Always use app passwords, never your main password
- Start small โ Test with small counts before scaling
- Feed filters โ Use
posts_no_repliesfor cleaner original content - Search tips โ Use quotes for exact phrases:
"machine learning" - Alternative PDS โ If your account is on a self-hosted PDS, set the
serviceparameter
๐ Legal & Ethical Use
This Actor scrapes Bluesky's. Please:
- Respect Bluesky's Terms of Service
- Don't share or expose private messages
- Use reasonable rate limits
- Comply with data protection laws
๐ค Support
Having issues? Found a bug? Want a feature?
- Open an issue on the Actor's page
- Contact the developer through Apify
Built by nocodeventure โข Made with ๐ for the Apify community