๐ Facebook Hashtag Search Scraper
Pricing
from $3.99 / 1,000 results
๐ Facebook Hashtag Search Scraper
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperX
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Share
๐ Facebook Hashtag Search Scraper โ Find Posts, Reels & Engagement by Hashtag
Search Facebook by hashtag and export every matching post with its text, author, direct URL, reaction breakdown, comment and share counts, video views, timestamp and full attachments โ including enriched Reels metadata with soundtrack, duration and share links.
Enter plain hashtags or full Facebook hashtag URLs, in bulk, and set a per-hashtag post cap.
What you get
| ๐ Post | โค๏ธ Engagement | ๐ Attachments |
|---|---|---|
| Post ID and direct URL | Top reactions breakdown | Photos and albums |
| Full post text | Comments count | Videos with playback URLs |
| Author / page details | Shares count | Reels with full metadata |
| Publication time + timestamp | Video view count | Soundtrack and track title |
| Originating hashtag | Shared links and previews | |
| Run status | Thumbnails and durations |
Key features
- Hashtags or hashtag URLs. Type
football,#travel, or pastehttps://www.facebook.com/hashtag/footballโ all three are accepted, in bulk, in the same list. - Full Reels enrichment. Video attachments are enriched through Facebook's own Reels query, so you get playback URLs, duration, soundtrack information, track title, album art, original-audio flag, reshare context and shareable URL โ not just a thumbnail.
- Reaction breakdown, not a single number.
topReactionsshows how a post was received, which distinguishes genuine enthusiasm from polite acknowledgement. - Sticky residential networking. Once a fallback engages, the authenticated session stays on one stable residential IP for the whole run. Facebook's anti-abuse system expects a consistent IP for a logged-in session, and bouncing between IPs is what triggers "suspicious activity" account locks โ this design specifically avoids that.
- Account-checkpoint detection. If Facebook has locked the account, the Actor detects it immediately and reports it instead of looping and making things worse.
- Never a failed run. Missing or expired cookies, or a locked account, produce a clearly-labelled diagnostic record and a SUCCEEDED run โ not a crash. The diagnostic row is not charged.
- Live streaming output โ each post is pushed to the dataset as it is scraped.
- Automatic proxy chain โ none โ datacenter โ residential, with up to 3 retries.
Use cases
- Campaign and hashtag tracking โ measure reach and engagement on a branded hashtag.
- Trend research โ see what is being posted under a topic right now, and how it performs.
- Competitor monitoring โ track hashtags your competitors own or target.
- UGC discovery โ find user-generated content mentioning your campaign hashtag.
- Content research โ the best-performing posts for a hashtag show what works in that niche.
- Reels and audio trends โ soundtrack metadata reveals which audio is driving reach.
- Event coverage โ collect posts from an event hashtag as they appear.
- Lead generation โ authors posting under commercial hashtags are often businesses worth contacting.
How it works
- You supply hashtags or hashtag URLs and your Facebook session cookies.
- Each input is normalised to a hashtag slug (URLs are parsed and validated).
- The hashtag feed is queried through Facebook's own GraphQL interface using your authenticated session.
- Each post is extracted into a flat record with author, text, engagement and attachments.
- Video attachments are enriched through the Reels query for full media metadata.
- Rows stream into the dataset until your per-hashtag cap is reached; if cookies are invalid or the account is locked, a diagnostic record explains exactly what to fix.
Quick start
- Log in to facebook.com in your browser.
- Open DevTools โ Application โ Cookies โ
www.facebook.com. - Copy
c_user(numeric ID) andxsinto the Actor's fields. - Enter your hashtags and set Max Posts Per Hashtag.
- Click Start, then export the Output tab as JSON (recommended) or CSV.
Minimal input
{"searchQueries": ["football"],"maxItems": 25,"c_user": "<YOUR_C_USER_COOKIE>","xs": "<YOUR_XS_COOKIE>"}
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["football"] | Required. Hashtags (football, #travel) or full Facebook hashtag URLs (https://www.facebook.com/hashtag/football). Bulk input supported. |
maxItems | integer | 10 | Maximum posts to scrape per hashtag. |
c_user | string | โ | Your Facebook c_user cookie โ the numeric user ID. Needed to collect posts. |
xs | string | โ | Your Facebook xs cookie (URL-encoded session token) from the same session. |
proxyConfiguration | object | no proxy | Runs without a proxy by default. On a rejection or rate limit, falls back to datacenter, then residential (3 retries). Once residential engages, it stays for the rest of the run. |
โ ๏ธ Cookies are credentials.
c_userandxsgrant access to that Facebook account. Use a dedicated secondary account, never share the values, and note that automated activity can lead Facebook to lock accounts. Both must come from the same session, and cookies rotate โ refresh them if a run returns only a diagnostic record.
Cookies are not schema-required so the run always finishes cleanly with an actionable message rather than a hard failure โ but you do need them to collect posts.
Output data
One row per post.
| Field | Type | Description |
|---|---|---|
postId | string | Facebook post ID. |
url | string | Direct link to the post. |
text | string | Post text. |
user | object | Author / page details. |
topReactions | object | Reaction breakdown for the post. |
commentsCount | number | Comments. |
sharesCount | number | Shares. |
videoViewCount | number | Video views, where applicable. |
time | string | Human-readable publication time. |
timestamp | number | Unix timestamp. |
attachments | array | Photos, albums, videos, Reels and shared links (see below). |
searchQuery | string | The hashtag that produced this row. |
status | string | Row status โ present on diagnostic records. |
message | string | Explanatory message on diagnostic records. |
Attachment types
Photos, albums, external link shares, life events, videos and Reels. Reels attachments carry enriched metadata: playback video URLs, duration, video owner, audio availability, soundtrack_info, track_title, music_album_art_uri, is_original_audio_on_facebook, first-frame thumbnail, reshare context, shareable_url and branded-content info.
Example output (trimmed)
{"searchQuery": "football","postId": "1234567890123456","url": "https://www.facebook.com/examplepage/posts/1234567890123456","text": "What a finish to the season. Full highlights below ๐ #football","user": { "name": "Example Sports", "id": "100064123456789" },"topReactions": { "LIKE": 4821, "LOVE": 1204, "WOW": 318 },"commentsCount": 612,"sharesCount": 240,"videoViewCount": 184000,"time": "2026-08-06T14:22:31Z","timestamp": 1786451351,"attachments": [{"video": { "__typename": "Video", "id": "998877665544", "playable_duration_in_ms": 41000 },"track_title": "Original audio","is_original_audio_on_facebook": true,"shareable_url": "https://www.facebook.com/reel/998877665544"}],"status": "ok"}
Illustrative values โ a live run returns current Facebook data.
Usage examples
Track a campaign hashtag
{"searchQueries": ["yourcampaign", "yourbrand"],"maxItems": 200,"c_user": "<YOUR_C_USER_COOKIE>","xs": "<YOUR_XS_COOKIE>"}
Several topics in one run
{"searchQueries": ["football","https://www.facebook.com/hashtag/premierleague","#transfernews"],"maxItems": 100}
Reels and audio trend research
Run any hashtag, then filter the export for rows whose attachments contain track_title โ grouping by soundtrack shows which audio is spreading.
Find the best-performing posts
Export to CSV and sort by sharesCount and videoViewCount โ shares in particular indicate content people actively pass on.
Event coverage
Save the event hashtag as a Task, attach an hourly Schedule during the event, and deduplicate on postId for a live feed.
Run it from your own code
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperx/facebook-hashtag-search-scraper").call(run_input={"searchQueries": ["football"],"maxItems": 100,"c_user": "<YOUR_C_USER_COOKIE>","xs": "<YOUR_XS_COOKIE>",})for post in client.dataset(run["defaultDatasetId"]).iterate_items():if post.get("postId"):print(post["sharesCount"], "|", post["url"], "|", post["text"][:60])else:print("DIAGNOSTIC:", post.get("message"))
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperx/facebook-hashtag-search-scraper').call({searchQueries: ['football'],maxItems: 100,c_user: '<YOUR_C_USER_COOKIE>',xs: '<YOUR_XS_COOKIE>',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL
curl -X POST "https://api.apify.com/v2/acts/scraperx~facebook-hashtag-search-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["football"],"maxItems":100,"c_user":"<YOUR_C_USER_COOKIE>","xs":"<YOUR_XS_COOKIE>"}'
Integrations
Push posts into Google Sheets, Airtable, Slack, Make, Zapier, Google Drive or your own endpoint via webhooks, and use Schedules for continuous hashtag monitoring.
Pricing
Pay-per-event: a small Actor-start charge plus a charge per post row delivered. Diagnostic records are not charged โ if a run cannot authenticate, you pay nothing for the explanation.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run. Residential proxy traffic, when the fallback engages, is billed separately by the platform.
Limits & good to know
- Cookies are needed to collect posts. Without valid ones you get a single diagnostic record explaining what to fix โ a clean, un-charged outcome rather than a failure.
maxItemsis per hashtag, so three hashtags at 100 each can return up to 300 rows.- Facebook hashtag feeds are finite. A narrow hashtag may return fewer posts than your cap.
- Use a dedicated secondary account. Facebook locks accounts that look automated; the sticky-IP design reduces that risk but does not eliminate it.
- If the account is locked, the Actor reports it immediately โ resolve the checkpoint in a browser before running again.
- Public posts only. Posts restricted to friends or private groups are not accessible.
- Media URLs point at Facebook's CDN and expire โ download assets promptly if you need the files.
- Default run options are 4 GB memory and a 1-hour timeout โ raise the timeout for many hashtags at high caps.
FAQ
Why do I need Facebook cookies? Facebook's hashtag feeds are not available to anonymous visitors. The Actor uses your session exactly as your browser does.
Where do I find c_user and xs?
Log in to facebook.com โ DevTools โ Application โ Cookies โ www.facebook.com โ copy both values.
Can I paste hashtag URLs instead of hashtags?
Yes โ plain hashtags, #hashtags and full Facebook hashtag URLs all work, mixed in the same list.
My dataset has one row with a message and no post. Why? That is the diagnostic record: cookies are missing, expired, or the account is locked. It is not charged, and the message says exactly what to fix.
Do I get Reels data? Yes โ video attachments are enriched with playback URLs, duration, soundtrack, track title, album art and share links.
Will this get my account banned? Automated access always carries risk. Use a dedicated secondary account, keep caps modest, and let the sticky residential session work rather than forcing IP changes.
Do I need to configure a proxy? No. The Actor escalates automatically and then stays on a stable residential IP.
Which export format should I use?
JSON โ attachments, user and topReactions are nested. CSV works for text and engagement columns.
Legal & responsible use
This Actor reads public Facebook hashtag feeds through your own logged-in session โ the same posts you can see in your browser. It does not post, comment, or access private content. Post text, media, author names and profile pictures are personal data and remain the property of their authors. Ensure your use complies with Facebook's Terms of Service, copyright, and GDPR or comparable regulations. You are responsible for the account whose cookies you supply, including Facebook's restrictions on automated access.
Support
Need comment extraction, extra fields, or a custom Facebook monitoring pipeline? Open an issue on the Issues tab of this Actor.