Facebook Posts Search Scraper
Pricing
from $3.60 / 1,000 public post saveds
Facebook Posts Search Scraper
Find public Facebook posts by keyword, phrase or hashtag. Export post text, author details, dates, engagement and media with date and location filters.
Pricing
from $3.60 / 1,000 public post saveds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
Facebook Post Search Scraper
Find public Facebook posts by keyword, phrase or hashtag, then export their text, authors, publication dates, engagement and media.
This Facebook post search scraper returns Facebook’s search results, with date filters, recent-post selection and city or place-ID filtering. No Facebook account or cookies are required.
Who is it for? Brand researchers and campaign analysts can use it to monitor public brand mentions, review campaign discussions, discover posts about a topic, or build a repeatable research dataset. Search relevance can include the author and related context, so each row distinguishes literal text matches from author-name matches.
What you can export
- Original post IDs and Facebook permalinks.
- Post text, publication timestamps and public author details.
- Reaction totals and available reaction breakdowns, comment counts and share counts.
- Photo and video attachments, image URLs and available video URLs and durations.
- Public outbound links, source ranking and collection time.
Media-only posts can have no text. Missing counts stay null; a missing count is not represented as zero.
Quick start
Enter a query and a small result limit, then run the Actor:
{ "query": "coffee shop", "resultsCount": 20, "searchType": "top" }
After the run, open the dataset and export JSON, CSV or Excel. JSON preserves nested authors, reactions and attachments. CSV users can select the nested columns they need in Apify’s export settings.
The maximum is 200 unique posts per run. The Actor can return fewer when Facebook exhausts its available results. Public search is not an exhaustive archive of every matching post.
Example output
This shortened example shows fields from an observed public result:
{"postId": "122328142718011695","publishedAt": "2026-08-24T18:50:56Z","postText": "Monday called… and said you need a Moody Cat pick-me-up. 🐱☕️💗","author": {"id": "61550350854900","name": "Moody Cat Coffee Shop"},"reactionsCount": 53,"commentsCount": 7,"sharesCount": 5,"searchQuery": "coffee shop"}
Counts and availability can change after collection. The full dataset also includes the post permalink, timestamps, media, ranking and match evidence.
Input recipes
Recent hashtag posts
{ "query": "#coffee", "resultsCount": 20, "searchType": "latest" }
Posts within a date range
{ "query": "bronco", "resultsCount": 20, "startDate": "2025-01-01", "endDate": "2025-01-31" }
Posts associated with a city
{ "query": "coffee", "resultsCount": 10, "location": "London, United Kingdom" }
An exact Facebook place ID
{ "query": "coffee", "resultsCount": 10, "location": "106078429431815" }
Input settings
| Field | Meaning |
|---|---|
query | Required keyword, phrase or hashtag, from 1 to 100 characters. |
resultsCount | Maximum unique posts, from 1 to 200; default 20. |
searchType | top uses native relevance. latest selects Facebook’s recent-post filter. |
startDate | Optional inclusive publication date, YYYY-MM-DD. |
endDate | Optional inclusive publication date, YYYY-MM-DD. |
location | Qualified city name, region name or numeric Facebook place ID. |
maxRunSeconds | Processing deadline, from 30 to 600 seconds; default 110. Set the platform timeout at least 15 seconds higher. |
proxyConfiguration | Optional Apify Proxy settings. Direct access is the default. Proxy usage adds platform costs. |
Date limits apply to the returned post or share, rather than the date of an attached original. Invalid dates, reversed ranges and unsupported inputs fail before searching or charging.
Ranking and location matching
latest means Facebook’s recent-post selection. It does not promise strictly descending timestamps. You can sort collected rows by publishedAt, but that does not make a limited sample an exhaustive chronological feed.
Use a qualified location such as London, United Kingdom or Lisbon, Portugal. An ambiguous city name fails with an explanation; the Actor never quietly removes your location filter.
A region such as Alaska selects the first matching city supplied by Facebook. The resolved name and ID appear in searchLocation; use an exact place ID when that choice matters.
Location filtering follows Facebook’s association of a post with a place. It is not a verified author residence or a radius search.
Output fields
| Field | Description |
|---|---|
postId, url | Stable source post identifier and permalink. |
postText | Source text; null for posts without available text. |
timestamp, publishedAt | Publication time as milliseconds since Unix epoch and UTC ISO date-time. |
author | Public ID, name, profile URL, profile picture and raw source entity type. The entity type is not an inferred account category. |
reactionsCount, reactions | Total reactions and the available named reaction counts. A breakdown may not include every reaction type. |
commentsCount, sharesCount | Available engagement totals; null if the source omits them. |
attachments | Media ID, type, permalink and available image URL, dimensions, caption, video URL and duration. |
attachments[].enrichmentStatus | For video detail lookup: complete or unavailable. Base post data remains available if optional media details cannot be retrieved. |
externalUrls | Deduplicated public links from the post and its attachments. |
privacy | Source visibility description when present. |
sharedPost | Separate original-post identity when the result is a reshare. |
searchQuery, rank, sourcePage | Query and position in this collected native result sequence. |
matchEvidence | Whether the literal query appears in post text or the author name; native relevance can use other context. |
searchLocation | Resolved location input, ID, name and resolution method when a location was requested. |
collectedAt | UTC collection timestamp. |
Photo permalinks can be formed from the public photo ID when the source omits a separate link. Media download links may expire. Download permitted media promptly if you need a durable copy.
Pricing
The result event is charged once per unique post saved to the dataset. Duplicate results are not charged again. There is no separate fee for a successful location lookup or available video enrichment.
See the Pricing tab for current rates. Apify platform usage and any proxy use follow your plan.
A failed run may contain saved and charged posts. The Actor preserves useful output instead of discarding rows when a later request fails. Check the run status and summary before treating a dataset as complete.
Facebook post search API usage
Use the Apify API to run the Actor and retrieve its dataset. These examples require your Apify API token; they do not require a Facebook token.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/facebook-post-search-scraper').call({query: 'coffee shop', resultsCount: 20});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/facebook-post-search-scraper').call(run_input={'query': 'coffee shop', 'resultsCount': 20})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl --fail --request POST \"https://api.apify.com/v2/acts/fetch_cat~facebook-post-search-scraper/run-sync-get-dataset-items" \--header "Authorization: Bearer $APIFY_TOKEN" \--header "Content-Type: application/json" \--data '{"query":"coffee shop","resultsCount":20}'
For larger requests, start an asynchronous run and wait for its terminal status before exporting the dataset.
Use with an AI assistant
Connect your client to the official Apify MCP server. For a supported client, the Apify CLI can install its configuration:
$apify mcp install cursor --tools fetch_cat/facebook-post-search-scraper
A remote MCP configuration can use OAuth:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/facebook-post-search-scraper"}}}
Example prompt: “Find 20 public Facebook posts about coffee shops in London, United Kingdom. Export the authors, dates and engagement. Separate literal text matches from other search matches.”
Only accounts with access to this Actor can run it. A private Actor is not publicly discoverable in the Store.
Export Facebook post search data on a schedule
Save a tested input as an Apify task and attach a schedule in your account. Use date windows to control the collection period, then deduplicate successive exports by postId.
Search ranking and visibility can change between runs. A post newly returned by a search is not necessarily newly published; use publishedAt to distinguish those events.
Limits and failure behavior
The Actor collects public results available without a Facebook login. It does not collect private posts, private-group content, restricted comments or a complete author timeline.
Access restrictions, unavailable public results, malformed source responses and processing deadlines can stop a run. Previously saved rows remain in the dataset. RUN-SUMMARY reports the final status, saved count, pages, warnings and whether work remains.
An explicitly empty search can finish with zero rows. An access denial or missing search response fails instead of pretending that the query had no matches.
Search results are deduplicated within a run. Restarted execution reuses saved IDs and checkpoints. Separate scheduled runs are independent datasets.
FAQ
What data can I export with facebook post search scraper?
Public post text, source IDs and links, authors, publication dates, available engagement, media and query provenance. The output field table explains nullable values and optional video details.
Can I run Facebook Posts Search Scraper through an API, schedule, or MCP client?
Yes, when your account has access to the Actor. Use its real input keys with the Apify API, a saved task and schedule, or the official MCP server.
Does it search only hashtags?
No. It accepts ordinary words and phrases as well as hashtags. Search relevance follows Facebook; it is not an exact-text-only filter.
How much does it cost to use Facebook Posts Search Scraper?
You pay for the unique posts saved through the result event. Consult the Pricing tab for current rates, and inspect partial output when a run fails.
Related Actors
- Facebook Groups Search Scraper
- Facebook Group Insights Scraper
- Facebook Photos Scraper
- Instagram Profile Scraper
- Tweet Scraper
Support
Include the run URL, non-sensitive input JSON, expected output, actual output and a reproducible public post URL when reporting a problem. Do not send passwords, cookies or browser session data.
This Actor is not affiliated with or endorsed by Meta or Facebook.