Mastodon Scraper avatar

Mastodon Scraper

Pricing

from $0.35 / 1,000 posts

Go to Apify Store
Mastodon Scraper

Mastodon Scraper

Collect public posts and profiles from Mastodon and compatible servers. Get text, authors, engagement counts, media links, and instance details in a dataset for research and social listening.

Pricing

from $0.35 / 1,000 posts

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

🐘 Collect public Mastodon posts and profiles

Researchers, social media teams, and developers can use Mastodon Scraper to collect public posts and profiles from Mastodon and compatible servers. Get text, authors, engagement counts, media links, and community details in a dataset. Use the rows to study topics and accounts without copying each post by hand.

📦 Get post content, profiles, and community details

Each dataset row is a post or a profile. Post rows include readable text and original HTML, public links, author details, counts, tags, mentions, media, and dates when available. They can also include reply and boost context, quoted posts, polls, custom emojis, reactions, link cards, tagged collections, and quote policies.

Profile rows can include biographies, images, audience counts, declared profile fields, and account settings. Both row types can include the chosen instance's public descriptions, contact email, languages, software version, totals, rules, and published service limits. Missing optional fields are left out. Supplied zero counts, false flags, empty text, and empty arrays can remain.

The Actor saves each public URL once per run. The first eligible occurrence supplies its row; later matches do not add more data. For boosts, the row describes the original post and can include the account that boosted it.

▶️ Choose an instance and a collection method

  1. Enter the full instance URL.
  2. Choose Posts or Profiles.
  3. For Posts, choose account feeds, hashtag feeds, keyword search, public timeline, or trending posts. For Profiles, enter keywords.
  4. Fill in the matching list and set a total result limit if needed.
  5. Start the run, then open the dataset to review or export the rows.

No Mastodon login or source API key is needed. Results cover what the chosen instance makes public and has seen, rather than the whole fediverse. Public features differ by instance. Public posts on Pleroma, Akkoma, and other Mastodon-compatible servers are supported where the chosen feature is available.

⚙️ Input

Input fields

FieldTypeWhat it does
instanceUrlstringRequired full HTTP or HTTPS instance URL with no path or sign-in details. The form prefills https://mastodon.social; raw input has no default.
maxItemsintegerOptional total row limit across all submitted values. Minimum 0. Omit it or use 0 for all available rows. A positive value caps saved rows, not guaranteed matches. The form prefill is 20, not a default.
resultTypestringRequired: posts or profiles. The form prefills posts; raw input has no default. Fields for the other type are ignored.
postMethodstringFor Posts: accounts, hashtags, search, timeline, or trending. Defaults to hashtags when omitted. Ignored for Profiles.
accountsarray of stringsRequired non-empty list for account feeds. Use a bare username on the chosen instance, full user@host handle, or exact public profile URL. Ignored for other choices. No default.
hashtagsarray of stringsRequired non-empty list for hashtag feeds, with or without #. The form prefills ["science"]; raw input has no default. Ignored for other choices.
keywordsarray of stringsRequired non-empty list for Profiles or post keyword search. Each word or phrase is a separate search. Keep a whole phrase in one entry. No default. Ignored for other choices.
includeRepliesbooleanDefaults to true. Set false to omit replies from account and hashtag feeds. Ignored for other choices.
includeBoostsbooleanDefaults to true. Set false to omit boosts from account and hashtag feeds. Ignored for other choices.
onlyMediabooleanDefaults to false. Set true to keep only posts with images, videos, or animated video in account feeds and public timelines. Ignored for other choices.

Timeline and trending choices need no search list. Active list entries must be non-empty strings. The same filters apply to every entry in a run. Use separate runs for different methods or filter sets. The schema sets no upper row limit; public access and available history still limit results.

Example input

This is the public input from a successful current-beta default-input run:

{
"instanceUrl": "https://mastodon.social",
"maxItems": 20,
"resultType": "posts",
"postMethod": "hashtags",
"hashtags": [
"science"
],
"includeReplies": true,
"includeBoosts": true,
"onlyMedia": false
}

🧾 Output

Output fields

A row has one of the two shapes below. Dotted paths describe fields inside nested objects or array entries. Optional fields appear only when supplied. IDs belong to the instance that returned them; use public URLs to compare posts across instances.

Post row

resultType is post. The table includes all post fields. A quoted post may have only some details. Its missing details do not remove the parent post. Reaction account IDs and collection member IDs may be incomplete.

FieldTypeWhat it does
resultTypestringKind of result in this row.
idstringPost ID on the Mastodon instance that returned it.
urlstringPublic post link.
textstringReadable post text. Media-only posts can have no text.
contentHtmlstringFormatted post content supplied by the source.
authorobjectPublic account identity.
author.idstringAccount ID on the Mastodon instance that returned it.
author.handlestringFull account handle, with the user name and host.
author.displayNamestringDisplay name set by the account.
author.urlstringPublic profile link.
favouritesCountintegerFavourite count reported by the instance.
boostsCountintegerBoost count reported by the instance.
repliesCountintegerReply count reported by the instance.
quotesCountintegerQuote count reported by the instance, when supplied.
hashtagsarray of stringsHashtags stated on the post.
mentionsarray of objectsAccounts mentioned in the post.
mentions.idstringAccount ID on the Mastodon instance that returned it.
mentions.handlestringFull account handle, with the user name and host.
mentions.displayNamestringDisplay name set by the account.
mentions.urlstringPublic profile link.
linksarray of stringsLinks in the post content.
cardUrlstringLinked-page URL from the post card, when supplied.
mediaarray of objectsPost images, videos, and animated media with source file links.
media.typestringMedia type reported by the source.
media.urlstringURL to download the media file from its source.
media.previewUrlstringPreview image URL, when supplied.
media.idstringSource attachment ID.
media.descriptionstringAttachment accessibility text.
media.originalobjectOriginal media dimensions and duration.
media.original.widthintegerWidth in pixels.
media.original.heightintegerHeight in pixels.
media.original.durationnumberSource-reported duration in seconds.
media.previewobjectPreview image dimensions.
media.preview.widthintegerWidth in pixels.
media.preview.heightintegerHeight in pixels.
media.blurhashstringBlurhash text for a blurred preview.
publishedAtstringPost publication date reported by the source.
editedAtstringPost edit date reported by the source, when supplied.
languagestringPost language code reported by the source.
visibilitystringPost visibility reported by the source.
sensitivebooleanWhether the source labels the post as sensitive.
contentWarningstringContent warning supplied with the post.
replyToobjectParent post reference for a reply.
replyTo.postIdstringParent post ID on the instance that returned it.
replyTo.accountIdstringParent author account ID on that instance.
boostedByobjectAccount that boosted the post in the first feed item saved for it.
boostedBy.idstringAccount ID on the Mastodon instance that returned it.
boostedBy.handlestringFull account handle, with the user name and host.
boostedBy.displayNamestringDisplay name set by the account.
boostedBy.urlstringPublic profile link.
applicationobjectSource-stated publishing application.
application.namestringApplication name.
application.websitestringApplication website.
threadUristringSource-provided thread or conversation URI.
quoteStatestringQuote state reported by the source, not a collection status.
quotedPostobjectQuoted public post supplied with this post. Missing details are not fetched.
quotedPost.idstringPost ID on the Mastodon instance that returned it.
quotedPost.urlstringPublic post link.
quotedPost.textstringReadable post text. Media-only posts can have no text.
quotedPost.contentHtmlstringFormatted post content supplied by the source.
quotedPost.authorobjectPublic account identity.
quotedPost.author.idstringAccount ID on the Mastodon instance that returned it.
quotedPost.author.handlestringFull account handle, with the user name and host.
quotedPost.author.displayNamestringDisplay name set by the account.
quotedPost.author.urlstringPublic profile link.
quotedPost.favouritesCountintegerFavourite count reported by the instance.
quotedPost.boostsCountintegerBoost count reported by the instance.
quotedPost.repliesCountintegerReply count reported by the instance.
quotedPost.quotesCountintegerQuote count reported by the instance, when supplied.
quotedPost.publishedAtstringPost publication date reported by the source.
quotedPost.editedAtstringPost edit date reported by the source, when supplied.
pollobjectPoll supplied with the post.
poll.idstringSource poll ID.
poll.expiresAtstringPoll closing time.
poll.multiplebooleanWhether more than one choice is allowed.
poll.votesCountintegerTotal votes reported by the source.
poll.votersCountintegerTotal voters reported by the source.
poll.optionsarray of objectsOptions in source order.
poll.options.textstringOption text.
poll.options.votesCountintegerSource-reported votes for this option.
emojisarray of objectsCustom emojis supplied with this content.
emojis.shortcodestringEmoji text code.
emojis.urlstringURL to download the emoji image, which may be animated.
emojis.staticUrlstringURL to download the still emoji image.
emojiReactionsarray of objectsSource-reported emoji reactions.
emojiReactions.namestringReaction name or emoji.
emojiReactions.countintegerSource-reported reaction count.
emojiReactions.urlstringURL to download the custom reaction image.
emojiReactions.staticUrlstringURL to download the still reaction image.
emojiReactions.accountIdsarray of stringsAvailable reacting-account IDs. This list may be incomplete.
cardobjectLinked-page summary supplied with the post. The page link is in cardUrl.
card.titlestringLinked page title.
card.descriptionstringLinked page summary.
card.authorNamestringCredited author name.
card.authorUrlstringCredited author link.
card.providerNamestringCredited provider name.
card.providerUrlstringCredited provider link.
card.imageUrlstringURL to download the linked-page card image from its source.
card.widthintegerWidth in pixels.
card.heightintegerHeight in pixels.
card.publishedAtstringSource-reported page publication date.
collectionsarray of objectsPublic collections tagged in this post.
collections.idstringSource collection ID.
collections.urlstringPublic collection link.
collections.namestringCollection name.
collections.ownerIdstringOwner account ID on the instance that returned it.
collections.createdAtstringSource creation time.
collections.updatedAtstringSource update time.
collections.itemsCountintegerSource-reported collection size.
collections.memberIdsarray of stringsAvailable member identities. This list may be incomplete.
quoteApprovalobjectSource quote-approval policy, not a current viewer permission.
quoteApproval.automaticarray of stringsAutomatic approval policy entries.
quoteApproval.manualarray of stringsManual approval policy entries.
instanceobjectPublic community information for the chosen instance.
instance.titlestringPublic instance name.
instance.shortDescriptionstringShort public description.
instance.descriptionstringPublic description, which may contain HTML.
instance.contactEmailstringPublished contact email address.
instance.languagesarray of stringsPublished instance languages.
instance.versionstringSource-reported software version.
instance.accountsCountintegerSource-reported aggregate account total.
instance.postsCountintegerSource-reported aggregate post total.
instance.registrationsOpenbooleanWhether the instance reports open registration.
instance.approvalRequiredbooleanWhether registration needs approval.
instance.invitesEnabledbooleanWhether the instance reports enabled invites.
instance.limitsobjectPublished service limits, not Actor settings.
instance.limits.maxPostCharactersintegerMaximum characters per post.
instance.limits.maxMediaAttachmentsintegerMaximum media attachments per post.
instance.limits.charactersReservedPerUrlintegerCharacters reserved per URL.
instance.limits.maxImageBytesintegerMaximum image size in bytes.
instance.limits.maxVideoBytesintegerMaximum video size in bytes.
instance.limits.maxImagePixelsintegerMaximum image pixel count.
instance.limits.maxVideoPixelsintegerMaximum video pixel count.
instance.limits.maxVideoFrameRateintegerMaximum video frames per second.
instance.limits.maxPollOptionsintegerMaximum poll options.
instance.limits.maxPollOptionCharactersintegerMaximum characters per poll option.
instance.limits.minPollExpirationintegerMinimum poll duration in seconds.
instance.limits.maxPollExpirationintegerMaximum poll duration in seconds.
instance.limits.supportedMimeTypesarray of stringsSupported media MIME types.
instance.rulesarray of objectsPublished rules in source order.
instance.rules.idstringSource rule ID.
instance.rules.textstringPublished rule text.

Example post row

This complete row comes from the successful current-beta default-input run. Only whitespace has changed.

{
"resultType": "post",
"id": "117516265520455560",
"url": "https://masto.ai/@enog/117516265452916216",
"text": "The lab at Drexel Discovery Day 2026 at the Convention Center 😄 Great job, everyone 🤩 #Laboratory #Science #Research #BiomedicalScience #Photography",
"contentHtml": "<p>The lab at Drexel Discovery Day 2026 at the Convention Center 😄 Great job, everyone 🤩</p><p><a href=\"https://masto.ai/tags/Laboratory\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>Laboratory</span></a> <a href=\"https://masto.ai/tags/Science\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>Science</span></a> <a href=\"https://masto.ai/tags/Research\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>Research</span></a> <a href=\"https://masto.ai/tags/BiomedicalScience\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>BiomedicalScience</span></a> <a href=\"https://masto.ai/tags/Photography\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>Photography</span></a></p>",
"author": {
"id": "109377904124756028",
"handle": "enog@masto.ai",
"displayName": "Eishi Noguchi",
"url": "https://masto.ai/@enog"
},
"favouritesCount": 0,
"boostsCount": 0,
"repliesCount": 0,
"quotesCount": 0,
"hashtags": [
"laboratory",
"science",
"research",
"biomedicalscience",
"photography"
],
"mentions": [],
"links": [
"https://masto.ai/tags/Laboratory",
"https://masto.ai/tags/Science",
"https://masto.ai/tags/Research",
"https://masto.ai/tags/BiomedicalScience",
"https://masto.ai/tags/Photography"
],
"media": [
{
"type": "image",
"url": "https://files.mastodon.social/cache/media_attachments/files/117/516/265/491/617/566/original/a346e7dc5adcf22a.jpeg",
"previewUrl": "https://files.mastodon.social/cache/media_attachments/files/117/516/265/491/617/566/small/a346e7dc5adcf22a.jpeg",
"id": "117516265491617566",
"description": "Nine researchers and students stand together smiling for a group photo at a scientific conference. They are wearing conference name badges and posing in front of a research poster.",
"original": {
"width": 3325,
"height": 2494
},
"preview": {
"width": 554,
"height": 416
},
"blurhash": "UHF~8DN{E4X6~ns:IWxZtlof-:%1i$Wn-mM}"
}
],
"publishedAt": "2026-10-28T02:51:45.000Z",
"language": "en",
"visibility": "public",
"sensitive": false,
"contentWarning": "",
"emojis": [],
"collections": [],
"quoteApproval": {
"automatic": [
"public"
],
"manual": []
},
"instance": {
"title": "Mastodon.social",
"shortDescription": "The original server of Mastodon, operated by Mastodon GmbH for the common good.\r\n\r\n",
"description": "",
"contactEmail": "staff@mastodon.social",
"languages": [
"en"
],
"version": "5.0.0-nightly.2026-10-27",
"accountsCount": 3452745,
"postsCount": 193518352,
"registrationsOpen": true,
"approvalRequired": false,
"invitesEnabled": true,
"limits": {
"maxPostCharacters": 500,
"maxMediaAttachments": 4,
"charactersReservedPerUrl": 23,
"maxImageBytes": 16777216,
"maxVideoBytes": 103809024,
"maxImagePixels": 33177600,
"maxVideoPixels": 8294400,
"maxVideoFrameRate": 120,
"maxPollOptions": 4,
"maxPollOptionCharacters": 50,
"minPollExpiration": 300,
"maxPollExpiration": 2629746,
"supportedMimeTypes": [
"image/jpeg",
"image/png",
"image/gif",
"image/webp",
"video/webm",
"video/mp4",
"video/quicktime",
"video/ogg",
"audio/wave",
"audio/wav",
"audio/x-wav",
"audio/x-pn-wave",
"audio/vnd.wave",
"audio/ogg",
"audio/vorbis",
"audio/mpeg",
"audio/mp3",
"audio/webm",
"audio/flac",
"audio/aac",
"audio/m4a",
"audio/x-m4a",
"audio/mp4",
"audio/3gpp",
"video/x-ms-asf"
]
},
"rules": [
{
"id": "1",
"text": "Sexually explicit or violent media must be marked as sensitive or with a content warning"
},
{
"id": "2",
"text": "No racism, sexism, homophobia, transphobia, ableism, xenophobia, or casteism."
},
{
"id": "3",
"text": "No incitement of violence or promotion of violent ideologies"
},
{
"id": "4",
"text": "No harassment, block evasion, dogpiling, or doxxing of others"
},
{
"id": "7",
"text": "Do not share information widely-known to be false and misleading"
},
{
"id": "1008",
"text": "Content created by others must be attributed, and use of generative AI must be disclosed"
}
]
}
}

Profile row

resultType is profile. The table includes all profile fields, including the shared instance details.

FieldTypeWhat it does
resultTypestringKind of result in this row.
idstringAccount ID on the Mastodon instance that returned it.
handlestringFull account handle, with the user name and host.
displayNamestringDisplay name set by the account.
urlstringPublic profile link.
biographystringPublic profile biography.
avatarUrlstringProfile avatar image URL.
headerUrlstringProfile header image URL.
lockedbooleanWhether the account requires approval for new followers.
botbooleanWhether the source labels this account as a bot.
followersCountintegerFollower count reported by the instance.
followingCountintegerFollowing count reported by the instance.
postsCountintegerPost count reported by the instance.
createdAtstringAccount creation date reported by the source.
emojisarray of objectsCustom emojis supplied with this content.
emojis.shortcodestringEmoji text code.
emojis.urlstringURL to download the emoji image, which may be animated.
emojis.staticUrlstringURL to download the still emoji image.
metadataFieldsarray of objectsPublic fields declared on the profile.
metadataFields.namestringField name.
metadataFields.valuestringSource-provided field value, which may contain HTML.
metadataFields.verifiedAtstringSource-reported verification date.
avatarDescriptionstringAvatar accessibility text.
headerDescriptionstringHeader image accessibility text.
groupbooleanWhether the source labels this as a group account.
discoverablebooleanWhether the source marks this account as open to discovery.
indexablebooleanWhether the source marks this account as open to indexing.
lastPostDatestringSource-reported last-post date.
instanceobjectPublic community information for the chosen instance.
instance.titlestringPublic instance name.
instance.shortDescriptionstringShort public description.
instance.descriptionstringPublic description, which may contain HTML.
instance.contactEmailstringPublished contact email address.
instance.languagesarray of stringsPublished instance languages.
instance.versionstringSource-reported software version.
instance.accountsCountintegerSource-reported aggregate account total.
instance.postsCountintegerSource-reported aggregate post total.
instance.registrationsOpenbooleanWhether the instance reports open registration.
instance.approvalRequiredbooleanWhether registration needs approval.
instance.invitesEnabledbooleanWhether the instance reports enabled invites.
instance.limitsobjectPublished service limits, not Actor settings.
instance.limits.maxPostCharactersintegerMaximum characters per post.
instance.limits.maxMediaAttachmentsintegerMaximum media attachments per post.
instance.limits.charactersReservedPerUrlintegerCharacters reserved per URL.
instance.limits.maxImageBytesintegerMaximum image size in bytes.
instance.limits.maxVideoBytesintegerMaximum video size in bytes.
instance.limits.maxImagePixelsintegerMaximum image pixel count.
instance.limits.maxVideoPixelsintegerMaximum video pixel count.
instance.limits.maxVideoFrameRateintegerMaximum video frames per second.
instance.limits.maxPollOptionsintegerMaximum poll options.
instance.limits.maxPollOptionCharactersintegerMaximum characters per poll option.
instance.limits.minPollExpirationintegerMinimum poll duration in seconds.
instance.limits.maxPollExpirationintegerMaximum poll duration in seconds.
instance.limits.supportedMimeTypesarray of stringsSupported media MIME types.
instance.rulesarray of objectsPublished rules in source order.
instance.rules.idstringSource rule ID.
instance.rules.textstringPublished rule text.

Example profile row

This complete row comes from a successful current-beta profile search. Only whitespace has changed.

{
"resultType": "profile",
"id": "AgfvKUqz1e5AfCdbSy",
"handle": "hellbeast@pleroma.envs.net",
"displayName": "Regalia :neodog_science: ",
"url": "https://pleroma.envs.net/users/hellbeast",
"biography": "We power the overlap where the heart and technology merge I'm like if you took trauma and whitelabeled it as character Expect my thoughts about tech, Linux, Social VR and other shit transmitted to you over JSON-LD This account is chatty, often about weird and disconnected stuff, keep that in mind when if you want to follow me otherwise feel free to. Feel free to be affectionate / flirt (why would you) but don't expect anything, I'm fairly non-committal with that stuff. 18 but do not be lewd here, won't post NSFW things here. Come with a non-after-dark / SFW account if you can. I'm a dog, my ears are fluffy, my paws are soft, ruffle my hair :3 :therian: :transgender_flag: :pansexual_flag: :polyamory_flag: :neodog_floof:",
"avatarUrl": "https://pleroma.envs.net/media/91dda770437bb6c52a9b53a8e862e0f204028716b7e49084a856a91169bc41c8.jpg",
"headerUrl": "https://pleroma.envs.net/media/d8cb349c35c4624816c2f3a364d56512f2bfa5d3489b70a2d2bac6939e0c1b86.webp",
"locked": false,
"bot": false,
"followersCount": 109,
"followingCount": 125,
"postsCount": 2654,
"createdAt": "2024-04-08T10:16:34.000Z",
"emojis": [
{
"shortcode": "neodog_floof",
"url": "https://pleroma.envs.net/emoji/neodog/neodog_floof.png",
"staticUrl": "https://pleroma.envs.net/emoji/neodog/neodog_floof.png"
},
{
"shortcode": "neodog_science",
"url": "https://pleroma.envs.net/emoji/neodog/neodog_science.png",
"staticUrl": "https://pleroma.envs.net/emoji/neodog/neodog_science.png"
},
{
"shortcode": "pansexual_flag",
"url": "https://pleroma.envs.net/emoji/pride_flags/pansexual_flag.png",
"staticUrl": "https://pleroma.envs.net/emoji/pride_flags/pansexual_flag.png"
},
{
"shortcode": "polyamory_flag",
"url": "https://pleroma.envs.net/emoji/pride_flags/polyamory_flag.png",
"staticUrl": "https://pleroma.envs.net/emoji/pride_flags/polyamory_flag.png"
},
{
"shortcode": "therian",
"url": "https://pleroma.envs.net/emoji/custom/therian.png",
"staticUrl": "https://pleroma.envs.net/emoji/custom/therian.png"
},
{
"shortcode": "transgender_flag",
"url": "https://pleroma.envs.net/emoji/pride_flags/transgender_flag.png",
"staticUrl": "https://pleroma.envs.net/emoji/pride_flags/transgender_flag.png"
}
],
"metadataFields": [
{
"name": "Website",
"value": "<a href=\"https://hellbeast.eu.org\" rel=\"ugc\">https://hellbeast.eu.org</a>",
"verifiedAt": "2024-04-24T00:43:38.132185Z"
},
{
"name": "NSFW Account",
"value": "Ask if we know each other"
},
{
"name": "pronouns.page",
"value": "<a href=\"https://en.pronouns.page/@hellbeast\" rel=\"ugc\">https://en.pronouns.page/@hellbeast</a>",
"verifiedAt": "2024-04-24T00:43:38.505756Z"
},
{
"name": "Contacts",
"value": "<a href=\"https://hellbeast.eu.org/contacts\" rel=\"ugc\">https://hellbeast.eu.org/contacts</a>"
}
],
"avatarDescription": "",
"headerDescription": "",
"lastPostDate": "2026-10-25",
"instance": {
"title": "Akkoma on envs.net",
"shortDescription": "A Pleroma/Akkoma instance on envs.net, an alternative fediverse server.",
"description": "A Pleroma/Akkoma instance on envs.net, an alternative fediverse server.",
"contactEmail": "hostmaster@envs.net",
"languages": [
"en"
],
"version": "2.7.2 (compatible; Akkoma 3.20.1-0-gbc62dd8--stable-)",
"accountsCount": 366,
"postsCount": 72560,
"registrationsOpen": true,
"approvalRequired": true,
"limits": {}
}
}

💳 Pricing

The Actor charges for each post or profile saved to the dataset.

Charged outcomeFree planBronze, Silver, Gold, Platinum, or Diamond
One post$0.0004$0.00035
One profile$0.0004$0.00035

Both prices are per saved row. Nested data has no separate Actor event. No post or profile event is charged for an empty search, skipped duplicate, or diagnostic message. The local pricing has no separate setup event. Check the Pricing tab for current prices. A run can stop at your charge limit before it reaches maxItems.

🔌 Integrations

Download the dataset as JSON, CSV, or Excel from Apify Console. Read its rows through the Apify API, or use Apify schedules and webhooks as part of your workflow.

❓ FAQ

Why does keyword search return fewer rows than I asked for?

The instance controls public search and its available pages. Some instances restrict post search or later search pages. The Actor can return the rows it read before that restriction. A limit is a cap, not a promise of that many matches.

Can I collect older account or hashtag posts?

Yes, where the instance provides more public feed pages. Leave maxItems empty or use 0 to collect all available rows. This does not promise a complete historical archive.

Can I collect an account on another instance?

Use its full user@host handle or exact public profile URL. It must be available through the chosen instance's public coverage. A bare username refers to the chosen instance.

What if two inputs find the same post?

The Actor saves the first eligible occurrence of that public URL once. It skips later occurrences and does not combine their boost context or other data.

Why are quoted-post details missing?

An instance may supply only a quote ID or some quote fields. The row keeps those available details and the parent post. The Actor does not fetch missing quote details separately.

No. The output contains file and preview URLs hosted by the public source. It does not copy the files into Apify storage.

Can this replace a full Mastodon API client?

It collects the public posts and profiles described here without a Mastodon login or source API key. It does not post content, access private messages, or provide complete fediverse coverage.

Can one run return posts and profiles?

No. Choose one result type per run. Post rows include author details, but a separate profile run returns profile rows.

📝 Changelog

v0.0 (28-10-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré