For site owners
If you found this URL in your server logs, something on your site was saved by someone using Bluejay, and we came back to check the page still works.
Every request carries this user agent, and nothing else uses it:
BluejayBot/1.0 (+https://getbluejay.app/bot)
Bluejay is a bookmarking app. When someone saves a link, we periodically re-check that it still resolves, so we can tell that person if the page has gone. That is the whole job.
BluejayBot is not a crawler. It never follows links, never discovers pages, and never explores a site. It only ever requests the exact URLs that individual people have deliberately saved. If one page of yours is being checked, that is because one person saved that page.
Nothing it fetches is republished. Page titles and descriptions are shown back to the person who saved the link, in their own private collection, and nowhere else.
| Usual request | A single HEAD. No body is transferred at all. |
|---|---|
| Occasional follow-up |
A GET with Range: bytes=0-16383, used only when
HEAD is refused, or to tell a real page from a "page not found"
screen that returns 200. We read at most 16 KB and then hang up rather than
draining the response.
|
| Redirects | Followed, up to 5 hops. |
| Never |
POST, form submissions, logins, or anything behind a paywall or
session.
|
Per saved link, and never more than that: a healthy link is re-checked about once a month for paying users and once a quarter otherwise. A link that fails is checked less often, not more — the gap grows 6 hours, 1 day, 3 days, 1 week, 2 weeks — so a page that stays down is quickly left alone. Someone can also ask for their own collection to be re-checked manually, which is capped per person per day.
If a page returns a permanent error, it is dropped from the schedule entirely and we stop asking.
The most reliable way is to refuse the user agent at your edge or web server. Blocking costs you nothing — a blocked check simply tells the person who saved your page that it could not be reached.
Apache:
SetEnvIfNoCase User-Agent "BluejayBot" bad_bot
Deny from env=bad_bot
Nginx:
if ($http_user_agent ~* "BluejayBot") {
return 403;
}
You can also email [email protected] with your domain and we will exclude it at our end. That is a permanent block held on our side, and you do not need to configure anything.
BluejayBot reads and honours robots.txt. Before checking
an address it fetches /robots.txt for that host — once a day, or as
often as your Cache-Control says — and follows RFC 9309: a group
named BluejayBot takes precedence over *, the longest
matching rule wins, and Allow beats Disallow at equal length.
A Disallow is honoured permanently. The saved link is never fetched
again, and the person who saved it is told the site asked us not to — not that
the page is gone, which it isn't. To stop checks for your whole site:
User-agent: BluejayBot
Disallow: /
The reasoning for the checker at all is that it is not discovering anything: it
fetches one specific address a person chose to save, closer to that person opening
the page themselves than to a spider indexing a site. We recognise that plenty of
site owners take a different view, which is why robots.txt is honoured
and an emailed request is honoured too.
If BluejayBot is requesting more than you would expect, hitting URLs no one should have saved, or causing you any trouble at all, email [email protected] with a few log lines. A real person reads that address and will fix it.