Skip to content
scrapeatlas.Dashboard

Get a Mastodon post

Try in Playground

Retrieve one public Mastodon post from its URL with content, media, link preview, poll, hashtags, mentions and reply/boost/favourite/quote counts. The author and ID must match the URL.

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

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

Query parameters
1
urlstringrequiredquery

Required post URL on a supported server: https://server/@user/ID, https://server/@user@remote/ID (that server's copy of a remote post) or https://server/users/user/statuses/ID. Query strings and fragments are ignored.

max 2048 chars

Examplehttps://mastodon.social/@example/113000000000000001
Response fields
42
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

Mastodon server that answered. IDs, cursors and counters are as that server reports them.

min 1 chars

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.

The post, or a boost with the boosted post in reblog.

post.idstring

Always included.

post.created_atstring

Always included.

post.in_reply_to_idstringnullable

Always included.

post.in_reply_to_account_idstringnullable

Always included.

post.sensitiveboolean

Always included.

post.spoiler_textstring

Always included.

post.visibilitystring

Always included.

post.languagestringnullable

Always included.

post.uristring

Always included.

post.urlstringnullable

Always included.

post.replies_countinteger

Always included.

≥ 0

post.reblogs_countinteger

Always included.

≥ 0

post.favourites_countinteger

Always included.

≥ 0

post.contentstring

Always included.

Always included.

post.account.idstring

Always included.

post.account.usernamestring

Always included.

min 1 chars

post.account.acctstring

Always included.

min 1 chars

post.account.handlestring

Always included.

min 3 chars

post.account.display_namestring

Always included.

post.account.urlstring

Always included.

post.account.avatarstring

Always included.

post.account.botboolean

Always included.

post.media_attachmentsobject[]

Always included.

post.mentionsobject[]

Always included.

post.tagsobject[]

Always included.

post.reblognullnullable

Always included.

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.