Bluesky Profile & Posts Scraper
Pricing
from $1.40 / 1,000 profile or search results
Bluesky Profile & Posts Scraper
Scrape public Bluesky profiles and recent posts, or search public posts by keyword. Export follower counts, bios, engagement counts, avatars and post URLs.
Pricing
from $1.40 / 1,000 profile or search results
Rating
0.0
(0)
Developer
MYM
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
22 days ago
Last modified
Categories
Share
Bluesky Profile Scraper — Profiles, Recent Posts & Search (No API Key, No Login)
Apify Actor · Public Bluesky data · No Bluesky login · No Bluesky API key · JSON / CSV / Excel · API / MCP
Collect public Bluesky profile details and recent posts, or search public posts by keyword. Each valid profile or non-empty search becomes one dataset row. Profile rows include the handle, DID, display name, bio, follower/following/post counts, avatar URL, profile URL, and a bounded array of recent posts with engagement counts and post links.
Start with one known public handle. A valid result is billed only when it reaches the dataset; invalid input finishes SUCCEEDED without results or a result charge; see OUTPUT for the reason.
Table of contents
- What it does
- Who uses it
- Data fields
- How to run it
- Input examples
- Output example
- Pricing and free-plan limits
- Coverage and limits
- Tips
- Related actors
- MCP and API
- FAQ
- Related searches
- Disclaimer
- Resources
- 中文说明
What it does
- ✅ Looks up public Bluesky profiles by handle.
- ✅ Returns the profile DID, display name, bio, follower count, following count, post count, avatar, and profile URL when the public endpoint provides them.
- ✅ Retrieves up to 30 recent posts for each profile. The default is 10.
- ✅ Searches public posts by keyword and returns matching post text, timestamps, engagement counts, author handles, AT URIs, and Bluesky links.
- ✅ Accepts several handles and queries in one run, with one stored output row per successful target.
- ✅ Returns structured JSON in the dataset and works with the standard Apify API, schedules, integrations, and MCP-compatible clients.
This Actor reads public profile and post data. It does not log into Bluesky, create accounts, follow users, post content, or retrieve private profiles.
Who uses it
- Social researchers tracking public profile size and recent activity.
- Community managers checking a list of public Bluesky accounts.
- Journalists and analysts searching public posts for a phrase or topic.
- Developers building a profile or post dataset for a dashboard, spreadsheet, or internal research workflow.
- Agencies comparing publicly visible account activity over time.
- AI and automation workflows that need structured profile or post records rather than manually copied pages.
Data fields
A profile row and a search row have different shapes. Counts and fields depend on what Bluesky returns at run time; profile records are snapshots, not a historical archive.
Profile row
| Field | Type | Availability | Description |
|---|---|---|---|
type | string | Always | profile for a profile lookup. |
handle | string | Always on a valid profile | Canonical Bluesky handle. |
did | string | Always on a valid profile | Decentralized Identifier associated with the profile. |
displayName | string or null | When present | Profile display name. |
description | string or null | When present | Public profile bio. |
followersCount | number | Always; may be zero | Current public follower count returned by the API. |
followsCount | number | Always; may be zero | Current public following count. |
postsCount | number | Always; may be zero | Public profile post count. |
avatar | URL or null | When present | Public avatar image URL. |
url | URL | Always | Public profile page on bsky.app. |
posts | array | Always; may be empty | Up to the requested number of recent posts. |
Post object nested inside posts
| Field | Type | Availability | Description |
|---|---|---|---|
text | string | Always; may be empty | Public post text. |
createdAt | date string or null | When present | Post creation time as returned by Bluesky. |
likeCount | number | Always; defaults to zero | Likes returned for the post. |
repostCount | number | Always; defaults to zero | Reposts returned for the post. |
replyCount | number | Always; defaults to zero | Replies returned for the post. |
quoteCount | number | Always; defaults to zero | Quotes returned for the post. |
uri | string or null | When present | AT Protocol URI for the post. |
url | URL | Always | Public bsky.app link built from the post URI. |
authorHandle | string or null | When present | Public handle attached to the post. |
Search row
A keyword search produces type: "search", the original query, and a posts array. A query with no matching posts does not become a billable empty row; genuine input errors finish SUCCEEDED with no results and no charge (see OUTPUT); upstream or transport failures remain FAILED.
How to run it
- Open the Actor input form or call it through the API.
- Add one or more public handles to Bluesky handles. Handles may be entered with or without a leading
@; that prefix is normalized. - Optionally add public post-search terms to Public post search queries. You can submit handles, queries, or both.
- Set Maximum posts per handle or query from 1 to 30. The default is 10.
- Start the run. Each usable profile or non-empty query becomes one dataset row.
- Open the Overview, Profiles, Search posts, or Recent posts dataset view. Use Full JSON when you need every nested field.
The actor schema pre-fills npr.org as a working example. Replace it with a public handle you want to inspect. A profile lookup and a search query are independent targets; combining them creates one row for each successful target.
Input examples
One profile
{"handles": ["npr.org"],"searchQueries": [],"maxItems": 10}
Several profiles
{"handles": ["npr.org", "bsky.app", "theguardian.com"],"searchQueries": [],"maxItems": 5}
Public post search
{"handles": [],"searchQueries": ["climate research", "public transit"],"maxItems": 10}
The input lists accept handles or terms, not URLs to private pages or login tokens. Keep runs focused: a short recent-post window is easier to review and avoids returning more nested content than you need.
Output example
This excerpt comes from a live profile-core run for npr.org; counts and posts change as the account publishes and users interact.
{"type": "profile","handle": "npr.org","displayName": "NPR","did": "did:plc:ln72v57ivz2g46uqf4xxqiuh","description": "This is NPR 🎙️","followersCount": 1010730,"followsCount": 238,"postsCount": 18895,"url": "https://bsky.app/profile/npr.org","posts": [{"uri": "at://did:plc:ln72v57ivz2g46uqf4xxqiuh/app.bsky.feed.post/3mwnjjb2cvd25","url": "https://bsky.app/profile/did:plc:ln72v57ivz2g46uqf4xxqiuh/post/3mwnjjb2cvd25","text": "Companies have changed the way they price their products — and shoppers are getting deliberately overcharged. Here are steps you can take to ensure you are getting the best deal. n.pr/4ryNNUh","createdAt": "2026-09-29T09:33:01.771286Z","likeCount": 41,"repostCount": 22,"replyCount": 1,"quoteCount": 0,"authorHandle": "npr.org"}]}
Each profile is one top-level item. Its posts array stays nested in that row; the actor does not fan each post out into an additional billable dataset row. Search queries also return one row per query, with the matching posts nested inside it.
Pricing and free-plan limits
The Actor uses PAY_PER_EVENT pricing. One event is charged for each validated row stored in the default dataset. A profile row includes its profile fields and the requested recent-post array. A search row includes a non-empty result set. Invalid handles, empty searches, failed runs, and quota blocks create no result event.
| Apify subscription tier | Price per stored profile or search row |
|---|---|
| FREE | $0.0019 |
| BRONZE | $0.0019 |
| SILVER | $0.0017 |
| GOLD | $0.0014 |
| PLATINUM | $0.0014 |
| DIAMOND | $0.0014 |
There is no separate actor-start event. Apify may also apply its own platform usage charges according to your plan; those are separate from this Actor's result event price.
Free Apify plan users can request up to 40 targets per Actor per UTC day. The daily counter measures requested targets, not only returned rows, so an invalid target still uses one requested slot even though it creates no result charge. Paid Apify plans are not capped by this Actor quota. The limit resets at 00:00 UTC.
Coverage and limits
- The Actor reads public data only. It cannot reveal private, deleted, or login-gated content.
- A handle must resolve through Bluesky's public API. A typo or retired handle may return no usable profile.
- Profiles and engagement counts are live snapshots. Counts can change between runs and can differ from third-party caches.
maxItemsis bounded to 30 posts per target. It is not a full historical export of every post by the account.- A profile result is one top-level row with nested posts. The table view does not convert each nested post into a separate default-dataset item.
- Search is a bounded public-post search, not a complete archive or a guarantee that every post containing a phrase will be returned.
- The output exposes text, timestamps, engagement counts, AT URIs, and post links. It does not download video or image files.
- Bluesky may change its public API response or availability. If the public endpoint returns an error, the Actor fails rather than billing an empty result.
Tips
- Use the canonical handle shown on the profile page, such as
npr.org, rather than a display name. - Add a leading
@only if it is convenient; the Actor accepts either form. - Start with one handle and
maxItems: 5to confirm that you selected the right account. - Use separate search queries for different topics. The dataset preserves the query on each search row.
- Use
maxItems: 1when you need only a quick profile check and no large nested feed. - Save the dataset item or export it to JSON when you need the complete nested post objects. CSV and table views may show nested arrays as JSON cells.
- Re-run profiles when you need refreshed counts. This Actor does not maintain a historical time series between runs.
- If one handle is invalid in a batch, test it by itself. Successful targets and the invalid target may behave differently.
Related actors
For related public data from the same account, see Instagram Profile Scraper V2, Instagram Followers Scraper V2, Bilibili Video & Comment Scraper, and Google Trends Scraper. These Actors cover different platforms and datasets; they do not share the Bluesky input format.
MCP and AI agents
You can run this Actor through Apify's MCP integration or any client that can call Apify Actors. Pass the same JSON object used in the input form. Read the default dataset after the run to retrieve profile and search rows. The Actor does not need a Bluesky account or a Bluesky API token.
MCP and API
Use your own Apify API token in an environment variable. Do not paste it into a public issue or a shared prompt.
Synchronous run and dataset response
curl -X POST \"https://api.apify.com/v2/acts/myagizm~bluesky-profile-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"handles":["npr.org"],"searchQueries":[],"maxItems":5}'
Start an asynchronous run
curl -X POST \"https://api.apify.com/v2/acts/myagizm~bluesky-profile-scraper/runs" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"handles":["npr.org","bsky.app"],"searchQueries":[],"maxItems":10}'
The response includes the run ID and default dataset ID. Poll the run until it reaches a terminal state, then fetch its dataset items:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?clean=true" \-H "Authorization: Bearer $APIFY_TOKEN"
Dataset exports
curl "https://api.apify.com/v2/datasets/$DATASET_ID/items?format=json&clean=true" \-H "Authorization: Bearer $APIFY_TOKEN"
Replace $RUN_ID and $DATASET_ID with the values returned by Apify. Use the Console's Integrations section for no-code tools, schedules, webhooks, and automation connections. For MCP setup, follow the current Apify MCP documentation.
FAQ
Do I need a Bluesky account?
No. The Actor uses publicly available profile and post data. It does not ask for a Bluesky password, session cookie, app password, or API key.
Do I need an Apify account?
Yes. Apify runs the Actor and provides dataset storage, API access, and billing controls. Authenticate with your Apify token when calling the API.
Can it read private accounts?
No. It only returns information visible through Bluesky's public API. It does not bypass private-account settings, deleted profiles, or login restrictions.
Can I provide a full profile URL?
Use the handle field, for example npr.org or @npr.org. The Actor schema is designed for handles rather than arbitrary URLs.
Can I search posts and profiles in the same run?
Yes. Fill both handles and searchQueries. Each successful profile and each non-empty search query becomes one dataset row.
Why is a search row missing?
The query may have no currently returned public matches, may be too narrow, or may be affected by Bluesky's search response. A query that returns no usable posts is not billed as a row.
Why did my handle fail?
Check spelling and use the canonical handle, not a display name. The profile may be private, deleted, renamed, or temporarily unavailable from the public endpoint.
Does a profile row contain all historical posts?
No. It includes a bounded recent feed up to maxItems, with a maximum of 30 posts per target.
Can I increase the post cap beyond 30?
No. The Actor clamps the value to 30 per profile or search query. This keeps output size and run time predictable.
Are posts flattened into one row each?
No. They are nested under each profile or search row. Use the Full JSON dataset view or export JSON to process each nested post.
Are media files downloaded?
No. The output includes post text and public post links. It does not download video or image files.
Do counts stay fixed between runs?
No. Follower, following, post, like, repost, reply, and quote counts can change. Each run is a point-in-time response.
Is a failed or empty run billed?
No result event is charged unless a validated row is stored in the default dataset. Input errors finish SUCCEEDED with no results and no charge; see OUTPUT for the reason. Upstream failures remain FAILED.
What happens to invalid inputs on the free Apify plan?
The free-plan quota counts requested targets, not only returned rows. An invalid handle does not create a result charge, but it still uses a requested-target slot for that UTC day.
How many targets can I send?
The input schema accepts up to 25 handles and 10 search queries in one run. Free Apify plan users are additionally limited to 40 requested targets per Actor per UTC day.
Can I schedule runs?
Yes. Use Apify schedules or the API. Each scheduled run follows the same input limits, result validation, and event pricing.
Can an automation call this Actor?
Yes. Use the Apify API, an Apify integration, or MCP. The output is a regular Apify dataset.
What format should I use for a handle?
Use the account's canonical Bluesky handle without a URL prefix, for example npr.org. A leading @ is accepted.
Does this Actor post, follow, or message users?
No. It only reads public profile and post records.
Where do I report a bug?
Use the Issues tab on this Actor's Apify page. Include the run ID, input shape, and a short description. Do not include an Apify token or private credentials.
Related searches
Bluesky profile scraper · Bluesky profile data · Bluesky recent posts scraper · Bluesky follower count lookup · Bluesky following count lookup · Bluesky public profile API · Bluesky post search · search Bluesky posts by keyword · Bluesky post lookup · Bluesky account research · Bluesky creator analytics · Bluesky profile export JSON · Bluesky profile export CSV · Bluesky data scraper for research · Bluesky post engagement counts · Bluesky like repost reply counts · Bluesky public account monitoring · Bluesky social listening · Bluesky influencer research · Bluesky handle lookup · Bluesky profile audit · Bluesky user data export · Bluesky API alternative · Bluesky search results dataset · Bluesky recent feed export · Bluesky MCP scraper · Bluesky profile automation
Disclaimer
This is an independent tool for public-data research. Bluesky and bsky.app are trademarks of their respective owners. The Actor is not affiliated with or endorsed by Bluesky. Use the output in compliance with applicable laws, platform terms, privacy rules, and your organization's policies. Do not use it to target people, collect restricted information, or make decisions that require verified identity. Public profile data can be incomplete or change without notice.
Resources
- Apify API documentation
- Apify dataset documentation
- Apify integrations
- Apify MCP documentation
- Bluesky
- myagizm Actors
中文说明
Bluesky 个人资料抓取器 — 个人资料、近期帖子和搜索(无需 API 密钥,无需登录)
Apify Actor · Bluesky 公开数据 · 无需 Bluesky 登录 · 无需 Bluesky API 密钥 · JSON / CSV / Excel · API / MCP
抓取 Bluesky 公开个人资料和近期帖子,也可以按关键词搜索公开帖子。 每个有效个人资料或有结果的搜索会生成一条数据集记录。个人资料记录包含 handle、DID、显示名称、简介、粉丝数、关注数、帖子总数、头像 URL、资料页 URL,以及数量受限的近期帖子数组。每条帖子可包含文本、时间、互动数和公开链接。
先用一个已知的公开 handle 测试。只有经过验证并写入数据集的记录才会产生结果事件;无效或空结果不会按结果计费。
目录
功能
- ✅ 按 handle 查找 Bluesky 公开个人资料。
- ✅ 返回 DID、显示名称、简介、粉丝数、关注数、帖子总数、头像和资料页 URL(以公开接口实际返回为准)。
- ✅ 每个个人资料最多返回 30 条近期帖子,默认值为 10。
- ✅ 按关键词搜索公开帖子,返回文本、时间、互动数、作者 handle、AT URI 和 Bluesky 页面链接。
- ✅ 一次可提交多个 handle 和搜索词;每个有效目标对应一条顶层数据集记录。
- ✅ 输出为结构化 JSON,可通过 Apify API、计划任务、集成和兼容 MCP 的客户端使用。
该 Actor 只读取公开资料和帖子。它不会登录 Bluesky、创建账户、关注用户、发布内容,也不会读取私密资料。
适用人群
- 需要追踪公开 Bluesky 账户规模和近期动态的研究人员。
- 需要检查一组公开账户的社区经理。
- 按关键词查找公开帖子内容的记者和分析师。
- 将公开个人资料或帖子数据导入仪表板、表格或内部研究流程的开发者。
- 需要比较公开可见账户活动的代理机构。
- 希望自动化流程直接读取结构化字段,而不是手动复制网页的团队。
数据字段
个人资料行和搜索行的结构不同。互动数是抓取时的快照,不是历史档案;字段是否出现取决于 Bluesky 公开接口的实时响应。
个人资料行
| 字段 | 类型 | 可用性 | 说明 |
|---|---|---|---|
type | 字符串 | 始终 | 个人资料行的值为 profile。 |
handle | 字符串 | 有效资料始终提供 | 规范化后的 Bluesky handle。 |
did | 字符串 | 有效资料始终提供 | 与资料关联的去中心化标识符。 |
displayName | 字符串或 null | 有值时提供 | 个人资料显示名称。 |
description | 字符串或 null | 有值时提供 | 公开简介。 |
followersCount | 数字 | 始终提供,可能为零 | 接口返回的当前粉丝数。 |
followsCount | 数字 | 始终提供,可能为零 | 接口返回的当前关注数。 |
postsCount | 数字 | 始终提供,可能为零 | 公开资料帖子总数。 |
avatar | URL 或 null | 有头像时提供 | 公开头像图片链接。 |
url | URL | 始终 | bsky.app 上的公开资料页。 |
posts | 数组 | 始终提供,可能为空 | 请求数量范围内的近期帖子。 |
posts 中的帖子对象
| 字段 | 类型 | 可用性 | 说明 |
|---|---|---|---|
text | 字符串 | 始终提供,可能为空 | 公开帖子文本。 |
createdAt | 日期字符串或 null | 有值时提供 | Bluesky 返回的发布时间。 |
likeCount | 数字 | 始终提供,默认零 | 点赞数。 |
repostCount | 数字 | 始终提供,默认零 | 转发数。 |
replyCount | 数字 | 始终提供,默认零 | 回复数。 |
quoteCount | 数字 | 始终提供,默认零 | 引用数。 |
uri | 字符串或 null | 有值时提供 | 帖子的 AT Protocol URI。 |
url | URL | 始终 | 由帖子 URI 构建的 bsky.app 页面。 |
authorHandle | 字符串或 null | 有值时提供 | 帖子作者公开 handle。 |
搜索行
关键词搜索会返回 type: "search"、原始 query 和 posts 数组。没有匹配帖子的查询不会成为可计费的空记录;输入错误以 SUCCEEDED 状态结束,不产生结果且不收费,原因见 OUTPUT;上游或传输故障仍以 FAILED 状态结束。
运行方法
- 打开 Actor 输入表单,或通过 API 调用。
- 在 Bluesky handles 中填写公开 handle,例如
npr.org或bsky.app。最多 25 个。 - 可选:在 Public post search queries 中填写公开帖子搜索词,最多 10 个。
- 设置 Maximum posts per handle or query,范围为 1 到 30,默认值为 10。
- 启动运行。每个有效资料和每个有结果的查询各生成一条数据集记录。
- 查看 Overview、Profiles、Search posts 或 Recent posts 视图。要获取全部嵌套字段,请使用 Full JSON。
输入表单预填了 npr.org 作为示例。你可以替换成要检查的公开账户。资料查询和关键词搜索互相独立;同时填写时,每个成功目标都会生成单独记录。
输入示例
单个资料
{"handles": ["npr.org"],"searchQueries": [],"maxItems": 10}
多个资料
{"handles": ["npr.org", "bsky.app", "theguardian.com"],"searchQueries": [],"maxItems": 5}
搜索公开帖子
{"handles": [],"searchQueries": ["climate research", "public transit"],"maxItems": 10}
列表中填写 handle 或关键词,不要填写私密页面 URL 或登录令牌。先用短列表确认目标;只需要检查资料时,可以把 maxItems 设为 1。
输出示例
以下字段摘自一次对 npr.org 的真实实时资料查询。粉丝数和帖子会随着账户更新而变化。
{"type": "profile","handle": "npr.org","displayName": "NPR","did": "did:plc:ln72v57ivz2g46uqf4xxqiuh","description": "This is NPR 🎙️","followersCount": 1010730,"followsCount": 238,"postsCount": 18895,"url": "https://bsky.app/profile/npr.org","posts": [{"uri": "at://did:plc:ln72v57ivz2g46uqf4xxqiuh/app.bsky.feed.post/3mwnjjb2cvd25","url": "https://bsky.app/profile/did:plc:ln72v57ivz2g46uqf4xxqiuh/post/3mwnjjb2cvd25","text": "Companies have changed the way they price their products — and shoppers are getting deliberately overcharged. Here are steps you can take to ensure you are getting the best deal. n.pr/4ryNNUh","createdAt": "2026-09-29T09:33:01.771286Z","likeCount": 41,"repostCount": 22,"replyCount": 1,"quoteCount": 0,"authorHandle": "npr.org"}]}
每个 profile 是一条顶层记录,posts 数组嵌套在该记录内;Actor 不会把每条帖子拆成额外的默认数据集行。搜索也按每个查询返回一条记录,并将匹配帖子放在 posts 中。
价格和免费计划限制
Actor 使用 PAY_PER_EVENT。每条经过验证并写入默认数据集的记录计一个事件。profile 行包含资料字段和请求的近期帖子;搜索行必须包含至少一条有效匹配帖子。无效 handle、空搜索、失败运行和额度拦截不会产生结果事件。
| Apify 订阅等级 | 每条资料或搜索结果记录价格 |
|---|---|
| FREE | $0.0019 |
| BRONZE | $0.0019 |
| SILVER | $0.0017 |
| GOLD | $0.0014 |
| PLATINUM | $0.0014 |
| DIAMOND | $0.0014 |
没有单独的 Actor 启动事件。Apify 可能还会按你的计划收取平台运行费用;它与本 Actor 的结果事件价格分开计算。
免费 Apify 计划用户每天最多请求 40 个目标(按 UTC 日计算)。额度统计用户提交的目标数,而不是最终返回的行数,因此无效 handle 虽然没有结果事件,仍会占用一个请求名额。付费 Apify 计划不受本 Actor 的免费额度限制。额度在 UTC 00:00 重置。
覆盖范围和限制
- 只读取公开数据,不能查看私密、删除或需要登录的资料。
- handle 必须能通过 Bluesky 公开接口解析。拼写错误或已停用的 handle 可能不会返回资料。
- 资料和互动数是实时快照。不同运行之间数值会变化,也可能与第三方缓存不同。
- 每个目标最多返回 30 条近期帖子;这不是账号完整历史帖子档案。
- profile 是一条含嵌套帖子的顶层记录,表格不会把嵌套帖子自动转成多条数据集行。
- 搜索是有数量上限的公开帖子搜索,不保证覆盖所有历史帖子。
- 输出包含文本、时间、互动数、AT URI 和公开链接;不会下载视频或图片文件。
- 如果 Bluesky 公共接口出错,Actor 会失败,而不是把空结果当作成功数据。
使用建议
- 使用资料页显示的规范 handle,例如
npr.org,不要使用显示名称。 - 可以输入
@,也可以不输入;Actor 会规范化前缀。 - 先用一个 handle 和
maxItems: 5确认目标账户。 - 不同主题使用不同搜索词;每条搜索记录会保留原始 query。
- 只检查资料时,把
maxItems设为 1,减少嵌套帖子内容。 - 需要完整帖子字段时,导出 JSON;CSV 和表格视图可能把嵌套数组显示为 JSON 单元格。
- 需要刷新粉丝数时重新运行。Actor 不会在不同运行之间建立历史时间序列。
- 如果批量运行中某个 handle 无效,单独测试它,避免把目标问题误判为整批故障。
相关 Actors
需要同一账号其他平台的公开资料数据时,可查看 Instagram Profile Scraper V2、Instagram Followers Scraper V2、Bilibili Video & Comment Scraper 和 Google Trends Scraper。这些 Actor 覆盖不同平台和数据集,输入格式与本 Actor 不同。
MCP 和 AI Agent
可以通过 Apify MCP 集成或任何能够调用 Apify Actor 的客户端运行本 Actor。传入与表单相同的 JSON,然后读取默认数据集。无需 Bluesky 账号或 Bluesky API token。
MCP 和 API
使用你自己的 Apify API token。不要把 token 粘贴到公开 issue 或共享提示中。
同步运行并获取数据集结果
curl -X POST \"https://api.apify.com/v2/acts/myagizm~bluesky-profile-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"handles":["npr.org"],"searchQueries":[],"maxItems":5}'
启动异步运行
curl -X POST \"https://api.apify.com/v2/acts/myagizm~bluesky-profile-scraper/runs" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"handles":["npr.org","bsky.app"],"searchQueries":[],"maxItems":10}'
响应会包含 run ID 和默认 dataset ID。轮询运行状态,直到进入终态,再读取数据集:
curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?clean=true" \-H "Authorization: Bearer $APIFY_TOKEN"
导出数据集
curl "https://api.apify.com/v2/datasets/$DATASET_ID/items?format=json&clean=true" \-H "Authorization: Bearer $APIFY_TOKEN"
将 $RUN_ID 和 $DATASET_ID 替换为 Apify 响应中的值。无代码集成、计划任务、webhook 和自动化连接请使用 Apify Console 的 Integrations 页面。MCP 配置请参考 Apify 当前 MCP 文档。
常见问题
需要 Bluesky 账号吗?
不需要。Actor 读取公开资料和帖子,不会索取 Bluesky 密码、会话 cookie、应用密码或 API 密钥。
需要 Apify 账号吗?
需要。Apify 负责运行 Actor、保存数据集、提供 API 和管理账单。通过 API 调用时使用自己的 Apify token。
可以读取私密账户吗?
不可以。Actor 只能返回 Bluesky 公开接口可见的数据,不会绕过私密设置、已删除资料或登录限制。
可以输入完整个人资料 URL 吗?
请在 handle 字段填写 npr.org 或 @npr.org。输入 schema 面向 handle,而不是任意 URL。
可以在一次运行中同时查资料和搜索帖子吗?
可以。填写 handles 和 searchQueries 即可。每个成功资料和每个有结果的搜索词各生成一条数据集记录。
为什么没有搜索结果行?
关键词可能没有当前可见的匹配帖子,也可能太具体,或受 Bluesky 搜索响应影响。没有可用帖子时不会收费为空行。
为什么 handle 失败?
检查拼写,并使用规范 handle,而不是显示名称。资料可能是私密、已删除、已改名,或公共接口暂时不可用。
会返回账号所有历史帖子吗?
不会。每个资料最多包含 maxItems 指定数量的近期帖子,上限为 30。
可以把上限提高到 30 以上吗?
不可以。Actor 会把每个资料或搜索的数量限制在 30 以内,以控制输出大小和运行时间。
每条帖子会单独成为一行吗?
不会。帖子嵌套在 profile 或搜索记录中。使用 Full JSON 视图或导出 JSON 来读取每条嵌套帖子。
会下载视频或图片吗?
不会。输出提供帖子文本和公开链接,不下载视频或图片文件。
计数会一直保持不变吗?
不会。粉丝、关注、帖子、点赞、转发、回复和引用数都可能变化。每次运行都是当时的数据快照。
失败或空结果会收费吗?
不会产生结果事件,除非一条经过验证的记录被写入默认数据集。输入错误以 SUCCEEDED 状态结束,不产生结果且不收费;请查看 OUTPUT。上游故障仍以 FAILED 状态结束。
免费计划下,无效输入会怎样计数?
免费额度按请求目标数计数,而不是按返回记录数。无效 handle 不产生结果事件,但仍占用当天一个目标名额。
一次最多可以提交多少目标?
输入 schema 最多接受 25 个 handle 和 10 个搜索词。免费 Apify 计划用户还受每天 40 个目标的 Actor 额度限制。
可以设置定时运行吗?
可以。使用 Apify schedules 或 API。每次计划运行都遵循相同的输入上限、结果校验和事件价格。
自动化可以调用 Actor 吗?
可以。通过 Apify API、Apify 集成或 MCP 调用,结果保存在标准 Apify dataset 中。
handle 应该是什么格式?
使用账户的规范 Bluesky handle,不带 URL 前缀,例如 npr.org。也接受前缀 @。
Actor 会发布、关注或私信用户吗?
不会。它只读取公开资料和帖子记录。
如何报告问题?
在 Apify 页面打开 Issues 标签,附上 run ID、输入结构和问题描述。不要附上 Apify token 或私密凭证。
相关搜索
Bluesky 个人资料抓取 · Bluesky profile scraper · Bluesky 近期帖子 · Bluesky 粉丝数查询 · Bluesky 关注数查询 · Bluesky 公开资料 API · Bluesky 帖子关键词搜索 · Bluesky post search · Bluesky 用户查找 · Bluesky 账户研究 · Bluesky 创作者分析 · Bluesky JSON 导出 · Bluesky CSV 导出 · Bluesky 帖子互动数 · Bluesky 点赞转发回复统计 · Bluesky 社交监听 · Bluesky 影响者研究 · Bluesky handle 查询 · Bluesky 公开账户监控 · Bluesky 资料审计 · Bluesky 用户数据集 · Bluesky API 替代工具 · Bluesky 搜索结果导出 · Bluesky 近期 feed 导出 · Bluesky MCP 抓取 · Bluesky profile automation
免责声明
本工具用于公开数据研究。Bluesky 和 bsky.app 是各自所有者的商标,本 Actor 与 Bluesky 没有隶属或背书关系。请根据适用法律、平台条款、隐私规则和组织政策使用结果。不要用于针对个人、收集受限信息或需要核验身份的决策。公开资料可能不完整,也可能随时变化。
资源
Errors & billing
Input errors finish with status SUCCEEDED, no results and no charge; see the OUTPUT record for the reason.
错误与计费
输入错误会以 SUCCEEDED 状态结束,不产生结果且不收费;原因请查看 OUTPUT 记录。