Is the Bluesky API free? Keys, rate limits and rules (2026)
Yes. Bluesky's API is free, and its public read endpoints need no key or account: you call them on public.api.bsky.app, and the firehose streams every public event over a WebSocket with no auth. Limits mostly apply to logged-in use, such as 3,000 requests per 5 minutes per IP on Bluesky-hosted servers and 5,000 write points an hour per account.
Bluesky is the easy case. It runs on the open AT Protocol, publishes its API, and does not charge for it. You do not even need an account to read public profiles and posts. This post covers price, access and limits; for endpoints and the firehose in depth, see Bluesky scraper and AT Protocol API.
What you need
| Task | Host | Auth | Cost |
|---|---|---|---|
| Read public profiles, posts, threads, feeds | public.api.bsky.app | None | Free |
| Stream every public event | Relay at bsky.network (firehose) | None | Free |
| Post, follow, like, read your own private data | Your account's PDS | App password or OAuth session | Free |
| Direct messages | api.bsky.chat, through the PDS | Yes | Free |
From Bluesky's API hosts guide. Bluesky asks developers to use the cached public.api.bsky.app host for public web use cases.
curl "https://public.api.bsky.app/xrpc/app.bsky.actor.getProfile?actor=bsky.app"
Rate limits
- Public AppView: Bluesky calls its limits "generous" and asks you to contact it if you hit them. It publishes no number.
- Bluesky-hosted PDS, all endpoints: 3,000 requests per 5 minutes per IP.
- Logins (createSession): 30 per 5 minutes and 300 a day per account. Reuse sessions.
- Writes: 5,000 points an hour and 35,000 a day per account. A create costs 3 points, so about 1,666 new records an hour.
- Relay, for new self-hosted PDS instances: 50 events a second, 2,600 an hour, 21,000 a day by default.
From the rate limits page, which notes they will change over time. Requests over a limit get HTTP 429.
The rules
Bluesky's developer guidelines are short. No spam or automated bulk interactions. Apps with user content must let people report illegal content and block abusive users. All services must be able to delete content a user asks to have deleted. Keep public contact details and respond to reports. If you store posts, process deletions from the firehose so your copy stays honest.
Worked example: tracking 1,000 accounts
A daily profile check on 1,000 accounts is 1,000 unauthenticated calls to the public AppView. If you also pull each account's latest 50 posts, that is 2,000 calls a day, which costs nothing. For real-time coverage, one firehose connection replaces polling entirely.
Which one fits you
- Nearly everyone: the official API. Use the free SDKs, such as Bluesky's TypeScript atproto packages or the community Python atproto SDK.
- Network-wide research: the firehose, or its lighter JSON variant described in our Bluesky guide.
- Bluesky as one column in a multi-platform report: a data API that returns it in the same shape as X, Threads and the rest.
Common mistakes
- Logging in on every run. createSession allows 30 calls per 5 minutes and 300 a day per account. Save the session and refresh it.
- Authenticating for public reads. Public profile and feed calls need no account. Using the public host keeps your account's limits free for writes.
- Polling when you could stream. If you poll thousands of accounts every few minutes, one firehose connection is cheaper for you and for Bluesky.
- Keeping deleted posts. The guidelines require a way to delete content a user asked to delete. Apply delete events to your stored copy.
- Bulk follows or likes. They count as spam under the guidelines and the Community Guidelines, whatever the rate limit allows.
curl "https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=bsky.app&limit=50"
Doing it with ScrapeIO
Bluesky's own API is free, so use it if Bluesky is all you need. If you compare it with other networks, ScrapeIO's bluesky profile API, bluesky user posts API and bluesky post API return the same handle, followers, likes and created_at fields as every other platform, at 1 credit a call. Agents can use the Bluesky MCP server.
Sources
Checked on 8 November 2026 from each vendor's own pages. Prices and limits change; follow the links before you decide.
- https://github.com/bluesky-social/bsky-docs/blob/main/docs/advanced-guides/api-directory.mdx
- https://github.com/bluesky-social/bsky-docs/blob/main/docs/advanced-guides/rate-limits.md
- https://github.com/bluesky-social/bsky-docs/blob/main/docs/support/developer-guidelines.md
- https://github.com/bluesky-social/atproto
- https://github.com/MarshalX/atproto
100 free credits, no card. Credits never expire.
Get API key