Facebook Video Search Scraper
Pricing
Pay per event
Facebook Video Search Scraper
Find public Facebook Watch and Reel videos by keyword, with clean deduplicated records for social listening and creator research.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Discover public Facebook Watch and Reel videos by keyword.
Use it for social listening, creator research, campaign discovery, and trend tracking.
This actor collects only public anonymous search results.
What does it do?
- Searches Facebook's public video search pages.
- Saves one deduplicated row per public video.
- Keeps the originating keyword on every row.
- Does not require Facebook credentials.
Who is it for?
- Social-listening analysts monitoring topics.
- Creator agencies researching video formats.
- Brand teams tracking public campaigns.
- Researchers building repeatable discovery datasets.
Why use it?
- Turn manual Watch searches into a dataset.
- Deduplicate by video ID and clean URL.
- Retain visible metadata with the search context.
- Export to CSV, JSON, Google Sheets, or an API workflow.
What public data do I get?
| Field | Meaning |
|---|---|
query | Keyword that found the video |
videoId | Facebook public reel/watch ID |
url | Clean public video URL |
title | Visible video caption or title |
creator | Visible page or creator label |
thumbnailUrl | Public thumbnail URL where rendered |
duration | Visible duration where rendered |
| engagement fields | Visible views, reactions, comments, shares |
Quick start
- Add one or more search keywords.
- Keep the first
maxItemsvalue low. - Run the actor.
- Export the default dataset.
- Repeat on a schedule for monitoring.
Input: video search keywords
searchQueries accepts a list of public Facebook video topics.
Use clear phrases such as marketing, sustainable fashion, or creator economy.
Each resulting row contains the query that discovered it.
Input: maximum videos
maxItems caps all output rows across your queries.
Start with 10 to validate your workflow.
Increase the value only after reviewing sample output.
The maximum supported value is 500.
Input: sorting
Choose TOP for Facebook's default public ordering.
Choose RECENT when Facebook exposes its public recent ordering.
Facebook can change its user-interface filters at any time.
Input: advanced scrolling
maxScrolls bounds result-page scrolling per query.
Lower values reduce request time and cost.
Use a higher value only when you need more results.
Output: identity and deduplication
The actor deduplicates public results by videoId and clean url.
Tracking both prevents duplicate cards from entering your dataset.
Use videoId as a stable key in downstream systems.
Use url for human review and linking.
Output: visible metadata
Facebook may omit or vary fields by video, region, or UI experiment.
Unavailable public fields are returned as null.
Engagement values are preserved as visible text instead of guessed numbers.
This prevents accidental conversion of abbreviated UI values.
Social listening workflow
- Search a campaign keyword every day.
- Store the dataset in your warehouse.
- Deduplicate on
videoId. - Compare new IDs against the prior run.
- Alert your team about newly discovered videos.
Creator research workflow
- Search a niche or competitor topic.
- Sort public results as needed.
- Review creator labels and thumbnails.
- Group titles by hook or content pattern.
- Build a shortlist for manual analysis.
Campaign discovery workflow
Search brand names, slogans, and campaign phrases.
Retain the original query for attribution.
Use the public URL to open the video for a human review.
Do not use this actor to access non-public content.
Integrations
Send results to Google Sheets for a lightweight tracker.
Use Make, Zapier, or webhooks to notify analysts about new IDs.
Call the actor API from a data pipeline for daily snapshots.
Connect the dataset to an LLM only after applying your own review rules.
API usage: Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/facebook-video-search-scraper').call({searchQueries: ['marketing'], maxItems: 10});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage: Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("automation-lab/facebook-video-search-scraper").call(run_input={"searchQueries": ["marketing"], "maxItems": 10})print(list(client.dataset(run["defaultDatasetId"]).iterate_items()))
API usage: cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~facebook-video-search-scraper/runs?token=$APIFY_TOKEN" \-H 'content-type: application/json' \-d '{"searchQueries":["marketing"],"maxItems":10}'
MCP
Use the scoped Apify MCP HTTP endpoint so your assistant exposes this actor's tools:
https://mcp.apify.com?tools=automation-lab/facebook-video-search-scraper
Claude Code
claude mcp add --transport http apify-facebook-videos \"https://mcp.apify.com?tools=automation-lab/facebook-video-search-scraper"
Claude Desktop, Cursor, or VS Code
Add this HTTP server to your MCP configuration, then restart or reload your client:
{"mcpServers": {"apify-facebook-videos": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/facebook-video-search-scraper"}}}
Example prompts: “Find 25 public Facebook videos about sustainable fashion.” and “Create a deduplicated public Facebook marketing-video dataset.”
Reliability notes
Facebook controls the public UI and may change selectors or available fields.
The actor uses a browser session and conservative collection limits.
A result page with no visible public rows completes with no output.
It never attempts to defeat a login, checkpoint, or CAPTCHA.
Legality and responsible use
Only collect public information you are entitled to access.
Respect Facebook terms, applicable laws, and your internal privacy policy.
Do not use output to identify, profile, or contact individuals unlawfully.
Do not use this actor for private or authenticated content.
Troubleshooting
Why are some fields null?
Facebook does not show every metadata field on every public result card.
The actor returns null rather than fabricate a value.
Why did I get fewer results than requested?
Public search availability varies by keyword, region, and Facebook UI changes.
Try a more specific keyword or lower the requested number.
Why did a run return zero rows?
Facebook may not expose anonymous results for that query at that time.
The actor does not log in or bypass access controls.
FAQ
Does it need a Facebook account?
No. It is designed for anonymous public Watch/Reel search pages.
Can I scrape private groups or private profiles?
No. This actor intentionally excludes private and authenticated content.
Are engagement numbers guaranteed?
No. They are included only when Facebook visibly renders them.
Related scrapers
For public Facebook advertising workflows, see related tools at Automation Lab.
For other social research tasks, browse Automation Lab actors.
Choose a source-specific actor when your workflow needs a different public surface.
Pricing: How much does it cost to scrape Facebook videos?
This actor uses pay-per-event pricing.
Each run has a small start charge and each saved public video is charged separately.
Tier discounts are applied by Apify account tier.
Review the live Apify pricing panel before running large collections.
Data retention
Your output is stored in the Apify dataset for the retention period of your plan.
Export or integrate records if you need longer-term history.
Use scrapedAt to distinguish repeated monitoring runs.
Support
Include the input, run ID, and a short description when reporting an issue.
Do not share credentials because this actor does not use them.
A sample output row helps diagnose public UI changes.
Changelog
See .actor/CHANGELOG.md for user-visible release notes.
