How to fetch metadata about AP servers


So, you’ve decided to write a crawler to collect metadata about Fediverse servers for your humble little catalog? Great! Let’s dive into this menagerie while you still have the motivation to do anything at all.

According to the spec, you can get metadata from /.well-known/nodeinfo, which contains a link to something like /nodeinfo/2.0. But here’s the catch! Different engines provide different information there, and Mastodon’s is as minimal as it gets.

It turns out that, in addition to the general specification, each engine offers its own endpoint for getting metadata. The /api/v1/instance from the Mastodon API has become widespread, but of course, it’s not available everywhere.

Let’s go!

Mastodon

  • /nodeinfo/2.0
  • /api/v1/instance
  • /api/v1/custom_emojis
  • /api/v1/directory?local=true

Pleroma

  • /nodeinfo/2.1.json
  • /api/v1/instance
  • /api/pleroma/healthcheck (has to be enabled)

Misskey

  • /nodeinfo/2.0
  • That’s a tricky one: POST request to /api/meta with body {"detail":true}
  • POST request to /api/stats, empty body

Funkwhale

  • /api/v1/instance/nodeinfo/2.0
  • /api/v1/instance/settings

Pixelfed

  • /api/nodeinfo/2.0.json
  • /api/v1/instance

PeerTube

  • /nodeinfo/2.0.json
  • /api/v1/config
  • /api/v1/config/about

Friendica

  • /nodeinfo/2.0
  • /api/statusnet/config
  • /api/v1/instance
  • /friendica/json

Nextcloud

  • /status.php
  • ??? Such a clusterfuck

Thanks to Michael Vogel for providing Friendica endpoints.

Thanks for reading my blog post.