NodeInfo Instance Extractor avatar

NodeInfo Instance Extractor

Pricing

from $0.35 / 1,000 instance parseds

Go to Apify Store
NodeInfo Instance Extractor

NodeInfo Instance Extractor

Point at ANY fediverse instance (Mastodon, Lemmy, Misskey, Pixelfed, PeerTube…) and extract its NodeInfo: software name & version, protocols, services, open-registrations, user counts, local posts & comments, plus the raw NodeInfo JSON. One generic runner for every fediverse server.

Pricing

from $0.35 / 1,000 instance parseds

Rating

0.0

(0)

Developer

Datamule

Datamule

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

12 days ago

Last modified

Share

Turn a list of NodeInfo-speaking fediverse hosts into one comparable dataset row per reachable host for researchers, community operators, and monitoring workflows.

Try it now

Use one stable public host for a bounded first run:

{"instances":["mastodon.social"]}

Example output

This row was captured from that exact input in a local run at 2026-07-20T15:13:10Z. The run succeeded and returned one genuine dataset row. Selected fields are shown below; _raw and several null optional fields are omitted for readability. Software versions and usage counts are advertised by the server and can change.

{
"host": "mastodon.social",
"_source": "mastodon.social",
"nodeinfo_version": "2.0",
"schema_rel": "http://nodeinfo.diaspora.software/ns/schema/2.0",
"software_name": "mastodon",
"software_version": "4.6.3",
"protocols": ["activitypub"],
"open_registrations": true,
"total_users": 3344371,
"active_month": 267542,
"active_halfyear": 683735,
"local_posts": 181870144,
"local_comments": null,
"node_name": "Mastodon"
}

Pricing

The Actor uses pay per event pricing. It charges one record event for each returned instance row.

  • FREE-tier price: $0.0005 per record.
  • One-host trial ceiling: 1 row x $0.0005 = $0.0005 in PPE event charges.
  • Apify infrastructure usage is separate and is not included in that ceiling.
  • A skipped host emits no row and adds no record charge.

Inputs, defaults, limits, and scaling

FieldRequiredDefault or prefillBehavior
instancesYesThe Store form is prefilled with mastodon.social, lemmy.world, and misskey.io.Accepts bare hostnames or base URLs. The Actor normalizes and deduplicates them, then queries each unique host.
userAgentNoapify-nodeinfo-instance-extractor (+https://apify.com/datamule)Replaces the default User-Agent when a server rejects it.
extraHeadersNoNo extra headersAdds request headers for deployments that require them. See the safety note under Troubleshooting.

The one-host payload above is cheaper than the three-host Store prefill. If all three prefilled hosts return rows, its maximum PPE event charge is $0.0015, excluding Apify infrastructure usage.

Source-enforced behavior and limits:

  • Input paths are stripped, hosts are lowercased, ports are preserved, and duplicate normalized hosts are processed once. The run fails if no valid host remains.
  • There is no fixed source-level cap on the number of input hosts. Hosts are processed sequentially, so large lists and slow endpoints increase run time.
  • Each host can emit at most one row. Cost scales with successful unique hosts, not attempted hosts.
  • NodeInfo discovery starts at https://<host>/.well-known/nodeinfo, follows redirects, and then fetches the advertised document URL. Each request has a 45-second timeout. Transient network errors, HTTP 429, and HTTP 5xx responses receive up to three total attempts.
  • Each discovery or NodeInfo response is limited to 8 MiB.
  • _raw stores compact JSON up to 16,384 characters. A larger document is replaced with a valid {"_truncated":true} marker instead of partial JSON.

Output fields

FieldMeaning
hostNormalized host that was queried.
_sourceOriginal input value associated with the normalized host.
nodeinfo_versionVersion reported inside the selected NodeInfo document.
schema_relSchema relation selected from the discovery document.
software_nameServer software name, such as mastodon, when advertised.
software_versionServer software version when advertised.
software_repositorySoftware source repository URL when advertised.
software_homepageSoftware homepage URL when advertised.
protocolsProtocol names advertised by the server.
services_inboundAdvertised inbound services.
services_outboundAdvertised outbound services.
open_registrationsWhether the server reports that registrations are open.
total_usersServer-reported total user count.
active_monthServer-reported active users for the monthly window.
active_halfyearServer-reported active users for the half-year window.
local_postsServer-reported local post count.
local_commentsServer-reported local comment count.
node_nameFree-form node name from NodeInfo metadata.
node_descriptionFree-form node description from NodeInfo metadata.
_rawCompact original NodeInfo JSON, or a truncation marker when it exceeds the stored size limit.

Server-advertised fields can be absent from a NodeInfo document and therefore appear as null.

Practical use cases

  • Compare the software, versions, registration policy, and activity reported by a chosen set of instances.
  • Build a point-in-time inventory for community operations or fediverse research.
  • Run the same watchlist on a schedule and store the resulting datasets to observe changes over time.
  • Check self-reported protocol and activity details before migration or federation planning.

Coverage, freshness, and limitations

For each host, the Actor requests /.well-known/nodeinfo, selects the highest recognizable numeric schema version (for example, 2.1 over 2.0 or 1.x), and fetches the advertised document. It works only when the host exposes a usable NodeInfo discovery link and JSON document.

Results are point-in-time values advertised by the server. The Actor does not independently verify the counts, retain history, or guarantee that a server's document is complete or current. Optional fields vary by software and may be absent or null.

An unreachable host, non-NodeInfo host, unusable discovery link, or non-JSON response is skipped with a warning while other hosts continue. If every host fails, the run fails instead of returning an empty successful dataset. This is not an exhaustive fediverse directory and carries no historical or completeness guarantee.

Query only hosts you are authorized to access and follow their operating policies.

Troubleshooting

SymptomWhat to check
Missing, empty, or malformed inputPass a non-empty instances array containing bare hostnames or base URLs. At least one value must normalize to a valid host.
HTTP 403 with the default User-AgentSet userAgent to a descriptive value accepted by that server. Some deployments reject generic or unfamiliar user agents.
no usable NodeInfo links[] warningOpen https://<host>/.well-known/nodeinfo and confirm it returns JSON with a NodeInfo links entry containing an href.
did not return JSON warningThe endpoint returned HTML, text, or another non-JSON body. Confirm the host supports NodeInfo and that its advertised document URL is working.
Some hosts are missing from the datasetRead the run warnings. Failed hosts are skipped, and duplicate inputs that normalize to the same host produce at most one row.
All-host failureTest one host at a time, correct typos, and verify both NodeInfo endpoints. A batch with zero successful hosts fails honestly.
Extra headers are requiredextraHeaders are sent on both the discovery request and the advertised NodeInfo document request. Use them only when you trust both URLs. Header values are not logged by the Actor, but run inputs may be retained by Apify, so never place reusable credentials in public examples or shared tasks.