Facebook Hashtag Scraper avatar

Facebook Hashtag Scraper

Pricing

$2.65 / 1,000 hashtag posts

Go to Apify Store
Facebook Hashtag Scraper

Facebook Hashtag Scraper

Collect available public Facebook posts that match one or more hashtags. Filter by post format and time range, then review post text, author details, engagement, media, and source links when Facebook exposes them.

Pricing

$2.65 / 1,000 hashtag posts

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

#️⃣ Search Facebook posts by hashtag

Social media researchers, marketers, and developers can search one or more public Facebook hashtags and collect available matching posts in structured dataset rows. Review post text, public author details, engagement counts, media details, publication time, and source links when Facebook exposes them. Shared format and time filters help focus one run on the posts you need.

📊 Facebook hashtag post data

What you get

Each saved row is one available public Facebook post that matched the submitted hashtag settings. It includes the post ID and URL, the available post format, text, author details, engagement counts, attached media, and publication time. Some optional values are not present when Facebook does not expose them.

  • Post identity: postId, postUrl, and postFormat identify the source post and its available format.
  • Post content: postText holds the title, caption, text, or description when available.
  • Author details: author holds public author names, IDs, profile links, and avatar links when available.
  • Engagement: engagement holds reported reaction, comment, share, and view values, plus the reported total.
  • Media details: media lists available attached media types, IDs, links, and thumbnails.
  • Publication time: publishedAt holds the source publication time when available.

How it works

  1. Add one or more hashtag values.
  2. Choose post formats or leave the format list empty to include all available formats.
  3. Choose any time, the last month, or the last year.
  4. Set an optional maximum number of posts and start the run.
  5. Open the default dataset from the run output.

The same format and time settings apply to every hashtag in the run. The Actor saves the first eligible occurrence of a source post. If the same post appears again through another submitted hashtag, the later match is ignored. The saved row describes only that first match and does not combine later matches.

⚙️ Input

Input fields

FieldTypeWhat it does
hashtagsarray of stringsRequired. Add one or more hashtags to search. The same filters apply to every value.
postFormatsarray of stringsChoose reels, videos, or photos. Leave the list empty to include all available formats.
timeRangestringChoose any, lastMonth, or lastYear. The filter uses each post's available publication time.
maxItemsintegerOptional run limit with a minimum of 1. Leave it empty to return all available posts until the source is exhausted. Otherwise, stop after this many posts. The schema has no upper bound.

Default input example

This example is copied from the public input of a successful current-beta run that used the hosted default input:

{
"hashtags": [
"travel"
],
"postFormats": [
"reels",
"videos",
"photos"
],
"timeRange": "any",
"maxItems": 100
}

🧾 Output

Run output link

FieldTypeWhat it does
datasetItemsstringOpens the default dataset overview with the saved public Facebook post rows.

Dataset row

All saved rows use one shape. Optional fields are omitted when Facebook does not expose them.

FieldTypeWhat it does
postIdstringGives the source ID of the Facebook post.
postUrlstring (URL)Gives a direct link to the Facebook post.
postFormatstringGives the available format, such as reel, video, or photo.
postTextstringGives the title, caption, text, or description when available.
authorobjectHolds public author details when available.
author.idstringGives the public author's source ID when available.
author.namestringGives the public author's name when available.
author.urlstring (URL)Gives a direct link to the public author profile when available.
author.avatarUrlstring (URL)Gives a link to the author's public avatar image when available.
engagementobjectHolds engagement values reported for the post when available.
engagement.reactionsobjectHolds counts for the reaction types reported by the source.
engagement.reactions.likeintegerGives the number of Like reactions when reported.
engagement.reactions.loveintegerGives the number of Love reactions when reported.
engagement.reactions.hahaintegerGives the number of Haha reactions when reported.
engagement.reactions.wowintegerGives the number of Wow reactions when reported.
engagement.reactions.sadintegerGives the number of Sad reactions when reported.
engagement.reactions.angryintegerGives the number of Angry reactions when reported.
engagement.commentsintegerGives the number of comments reported for the post.
engagement.sharesintegerGives the number of shares reported for the post.
engagement.totalEngagementintegerGives the aggregate engagement value reported by the source.
mediaarray of objectsLists attached media details when available.
media[].typestringGives the type of an attached media item, such as photo, video, or reel.
media[].idstringGives the source ID of an attached media item when available.
media[].urlstring (URL)Gives a direct source link to an attached media item when available.
media[].thumbnailUrlstring (URL)Gives a link to a thumbnail for an attached media item when available.
publishedAtstring (date-time)Gives the date and time when the source post was published, when available.

Example Facebook post

This complete row is genuine output from the latest successful current-beta run. It is shown without invented or redacted source data.

{
"postId": "1526323986202837",
"postUrl": "https://www.facebook.com/CNNArabic/posts/pfbid02Ckyxw6GQVof8G1ckuNTmBsmS6JyxQod5nTDmzUEWReKwkwdwJCeGn7oADb1pu6B4l",
"postFormat": "photo",
"postText": "البيت الأبيض يستبعد شبكة CNN من مهمتها المقررة ليوم الاثنين، والتي كانت تتضمن تمثيل المجموعة التلفزيونية المشتركة (pool) نيابة عن كامل هيئة الصحافة المعتمدة https://cnn.it/4ApHYfS",
"author": {
"id": "100064757498431",
"name": "CNNArabic",
"url": "https://www.facebook.com/CNNArabic",
"avatarUrl": "https://scontent-arn2-1.xx.fbcdn.net/v/t39.30808-1/342200996_189496030550854_7062570227724457374_n.jpg?stp=cp0_dst-jpg_tt6&cstp=mx2048x2048&ctp=s50x50&_nc_cat=1&ccb=1-7&_nc_sid=2d3e12&_nc_ohc=cUtgm7iDeq8Q7kNvwFFntyl&_nc_oc=AdrUrfni-pFpdv1ltmdjFCK16zO5Hj2T7PRphnGrR7JQmvtZEmKfaAsSXMkTF-iEk-E&_nc_zt=24&_nc_ht=scontent-arn2-1.xx&_nc_gid=wcMbzAjiLNwsao0-LA_BTw&_nc_ss=70289&oh=00_AQIR4b55SiqmtBKLdmhpLw4qIacbDSPJoKsP9MnkjK1oGA&oe=6AB67236"
},
"engagement": {
"comments": 1,
"shares": 2,
"reactions": {
"like": 17,
"haha": 6,
"wow": 1
},
"totalEngagement": 27
},
"media": [
{
"type": "photo",
"id": "1526323962869506",
"url": "https://scontent-arn2-1.xx.fbcdn.net/v/t39.99422-6/796527992_1584024433502671_839914819866181719_n.png?stp=dst-jpg_tt6&cstp=mx1080x1350&ctp=s640x640&_nc_cat=100&ccb=1-7&_nc_sid=127cfc&_nc_ohc=URELPtjkRGIQ7kNvwEFzmBx&_nc_oc=AdrNlwY_2dX44np32DeoQuxO4iAqAkwMd4FxiDMjG9-Uivr6R8QSK9eGAE9IqTEbExc&_nc_zt=14&_nc_ht=scontent-arn2-1.xx&_nc_gid=wcMbzAjiLNwsao0-LA_BTw&_nc_ss=70289&oh=00_AQKThG9bSr-8xm-IGELh93nWVUMIZlAe5HDOK3XdiO6PSQ&oe=6AB67D64",
"thumbnailUrl": "https://scontent-arn2-1.xx.fbcdn.net/v/t39.99422-6/796527992_1584024433502671_839914819866181719_n.png?stp=dst-jpg_tt6&cstp=mx1080x1350&ctp=s640x640&_nc_cat=100&ccb=1-7&_nc_sid=127cfc&_nc_ohc=URELPtjkRGIQ7kNvwEFzmBx&_nc_oc=AdrNlwY_2dX44np32DeoQuxO4iAqAkwMd4FxiDMjG9-Uivr6R8QSK9eGAE9IqTEbExc&_nc_zt=14&_nc_ht=scontent-arn2-1.xx&_nc_gid=wcMbzAjiLNwsao0-LA_BTw&_nc_ss=70289&oh=00_AQKThG9bSr-8xm-IGELh93nWVUMIZlAe5HDOK3XdiO6PSQ&oe=6AB67D64"
}
],
"publishedAt": "2026-09-21T04:34:31.000Z"
}

💳 Pricing

How charges work

This Actor uses pay-per-event pricing. The primary event is facebook-hashtag-post, priced at $0.00265 per event. Each event covers one post matching the requested Facebook hashtag filters.

🔌 Integrations

Use the Apify Console or API to start runs and read the default dataset. The run output links to the saved public post rows.

❓ FAQ

What happens when the same post matches more than one hashtag?

The Actor saves the first eligible occurrence and ignores later matches for the same source post. The saved row describes only that first match and does not combine later hashtags or submitted values.

Can I search more than one hashtag in one run?

Yes. Add several hashtags to the list. All of them use the same post format, time range, and maximum-post setting.

What does an empty post format list do?

An empty postFormats list includes all available post formats. Add reels, videos, or photos when you want to narrow the saved rows.

What happens when I leave Maximum posts empty?

The Actor returns all available posts until the source is exhausted. The schema has no upper bound for maxItems, so a run can return fewer posts when the source has fewer eligible results.

Why is a field missing from a row?

Facebook does not expose the same fields for every public post. Optional author, engagement, media, text, and publication values are included only when they are available.

Can it collect private or deleted Facebook posts?

No. The Actor is for available public hashtag results. Private, restricted, deleted, and otherwise unavailable content is outside its scope.

Does it include comments or lists of people who reacted?

No. It includes engagement counts and available reaction counts. It does not collect comments, replies, commenter lists, liker lists, or sharer lists.

Does it download Facebook photos or videos?

No. It returns available media metadata, links, and thumbnails. It does not download or mirror source photo and video files.

Will it always return every Facebook post for a hashtag?

No. The Actor returns available matching posts and does not promise an exhaustive list of every post Facebook could associate with a hashtag.

📝 Changelog

v0.0 (21-09-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é