Skip to content
scrapeatlas.Dashboard

Get Mastodon trends

Try in Playground

Retrieve what is trending on a Mastodon server: up to 40 posts, 20 hashtags with daily usage, or 20 news links with share history. Page with the returned cursor.

GET/v1/mastodon/trendsx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
3
typeenumquery

Optional: posts (default), hashtags or links.

one of: posts, hashtags, links

Exampleposts
serverenumquery

Optional Mastodon server whose public view to read; default mastodon.social. One of the supported servers listed in the schema.

one of: mastodon.social, mastodon.online, mstdn.social, mas.to, mastodon.world, mstdn.jp, fosstodon.org, hachyderm.io, infosec.exchange, techhub.social, universeodon.com, mastodon.art, social.vivaldi.net, mastodon.cloud, sfba.social, chaos.social, piaille.fr, mastodon.gamedev.place, toot.community, ioc.exchange, indieweb.social, masto.ai, journa.host, newsie.social, social.coop, mastodon.scot, aus.social, kolektiva.social

cursorstringquery

Optional offset cursor from the previous response.

Response fields
88
requestIdstring

Request correlation UUID.

Upstream requests, decoded response bytes and elapsed milliseconds.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

Public Mastodon page the data describes.

absolute HTTPS URL

fetchedAtstring

UTC retrieval time.

serverstring

Optional Mastodon server whose public view to read; default mastodon.social. One of the supported servers listed in the schema.

min 1 chars

order states the record order. complete is false when a warning names an omission, such as federated_view, counters_hidden or reply_limit.

coverage.sourcestring

Always included.

coverage.completeboolean

Always included.

coverage.warningsstring[]

Always included.

coverage.orderenum

Always included.

one of: newest_first, oldest_first, ranked, relevance, source_order

Optional.

coverage.window.sincestringoptional

Optional.

coverage.window.untilstringoptional

Optional.

type=posts: trending posts in rank order.

up to 40 items

posts.idstring

Always included.

posts.created_atstring

Always included.

posts.in_reply_to_idstringnullableoptional

Optional.

posts.in_reply_to_account_idstringnullableoptional

Optional.

posts.sensitivebooleanoptional

Optional.

posts.spoiler_textstringoptional

Optional.

posts.visibilitystring

Always included.

posts.languagestringnullableoptional

Optional.

posts.uristring

Always included.

posts.urlstringnullable

Always included.

posts.replies_countintegeroptional

Optional.

≥ 0

posts.reblogs_countintegeroptional

Optional.

≥ 0

posts.favourites_countintegeroptional

Optional.

≥ 0

posts.contentstringoptional

Optional.

Always included.

posts.account.idstring

Always included.

posts.account.usernamestring

Always included.

min 1 chars

posts.account.acctstring

Always included.

min 1 chars

posts.account.handlestring

Always included.

min 3 chars

posts.account.display_namestring

Always included.

posts.account.urlstring

Always included.

posts.account.avatarstring

Always included.

posts.account.botboolean

Always included.

posts.media_attachmentsobject[]optional

Optional.

posts.mentionsobject[]optional

Optional.

posts.tagsobject[]optional

Optional.

Always included.

posts.reblog.idstring

Always included.

posts.reblog.created_atstring

Always included.

posts.reblog.in_reply_to_idstringnullable

Always included.

posts.reblog.in_reply_to_account_idstringnullable

Always included.

posts.reblog.sensitiveboolean

Always included.

posts.reblog.spoiler_textstring

Always included.

posts.reblog.visibilitystring

Always included.

posts.reblog.languagestringnullable

Always included.

posts.reblog.uristring

Always included.

posts.reblog.urlstringnullable

Always included.

posts.reblog.replies_countinteger

Always included.

≥ 0

posts.reblog.reblogs_countinteger

Always included.

≥ 0

posts.reblog.favourites_countinteger

Always included.

≥ 0

posts.reblog.contentstring

Always included.

Always included.

posts.reblog.account.idstring

Always included.

posts.reblog.account.usernamestring

Always included.

min 1 chars

posts.reblog.account.acctstring

Always included.

min 1 chars

posts.reblog.account.handlestring

Always included.

min 3 chars

posts.reblog.account.display_namestring

Always included.

posts.reblog.account.urlstring

Always included.

posts.reblog.account.avatarstring

Always included.

posts.reblog.account.botboolean

Always included.

posts.reblog.media_attachmentsobject[]

Always included.

posts.reblog.mentionsobject[]

Always included.

posts.reblog.tagsobject[]

Always included.

posts.reblog.reblognullnullable

Always included.

type=hashtags: trending hashtags with daily uses and accounts.

up to 20 items

hashtags.namestring

Always included.

min 1 chars

hashtags.urlstring

Always included.

Optional.

hashtags.history.daystring

Always included.

hashtags.history.usesstring

Always included.

hashtags.history.accountsstring

Always included.

type=links: trending links with title, description, provider, image, published_at, authors and daily history of uses and accounts.

up to 20 items

links.urlstring

Always included.

links.titlestring

Always included.

Always included.

links.history.daystring

Always included.

links.history.usesstring

Always included.

links.history.accountsstring

Always included.

cursorstringoptional

Optional offset cursor from the previous response.

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
12
HTTPfailure.codeMeaning
200partialUsable data with federated_view, counters_hidden, reply_limit, ancestor_limit, activity_unavailable or unsupported_*_omitted warnings.
400invalid_requestMissing, duplicate, unsafe or unsupported parameters, a post URL outside the supported servers or an invalid cursor.
401unauthorizedMissing or invalid worker API key.
403restricted_pageThe server does not share this data without login, or the account hides its followers and following.
404not_foundUnknown or removed account, post or hashtag.
429upstream_rate_limitedThe server’s rate limit is exhausted for every available network identity.
502upstream_challengedThe server answered with a challenge or non-JSON page.
502unsupported_pageMalformed, mismatched or looping source data.
502response_too_large payload_too_complexResponse exceeded byte or parsing limits.
502unsafe_redirect request_limit upstream_errorBounded source retrieval could not complete.
503busyAll worker slots and queue places are occupied.
504timeoutTotal request deadline expired.