Facebook Public Video Search Results Scraper avatar

Facebook Public Video Search Results Scraper

Pricing

from $2.40 / 1,000 video result extracteds

Go to Apify Store
Facebook Public Video Search Results Scraper

Facebook Public Video Search Results Scraper

Search Facebook public videos by keyword and export ranked titles, captions, creators, dates, durations, thumbnails, views, IDs, and canonical URLs.

Pricing

from $2.40 / 1,000 video result extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Search Facebook public videos by keyword and export ranked video metadata for trend research, media monitoring, and brand listening.

This Actor opens Facebook's anonymous Watch search experience in a real browser. It turns the rendered result cards into structured records with video IDs, titles or captions, creators, publication labels, durations, thumbnails, visible engagement, and canonical URLs. No Facebook account, cookies, or login credentials are required. The Actor does not use AI or send inputs or output to an AI model provider. It is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta or Facebook.

Use it when you need repeatable Facebook search data rather than a one-off manual scan. Results go to the default Apify dataset and can be downloaded as JSON, CSV, Excel, XML, or RSS.

What does this Facebook search Actor do?

For each supplied keyword, the Actor:

  1. Opens the public Facebook Watch search page.
  2. Waits for rendered public video cards.
  3. Scrolls through a bounded number of result batches.
  4. Extracts stable IDs and visible metadata.
  5. Deduplicates videos across queries.
  6. Saves typed records to the default dataset.

It searches videos by keyword. It does not download media files, transcribe speech, scrape private posts, or log in to Facebook.

Who is this Actor for?

Brand teams can monitor public videos that mention a brand, product, executive, or campaign.

Media analysts can collect ranked video results around a developing topic and compare scheduled runs.

Trend researchers can follow how creators and publishers cover themes such as artificial intelligence or renewable energy.

Journalists can build a source list from public videos returned for a specific phrase.

Data teams can feed structured search results into warehouses, spreadsheets, dashboards, or review queues.

Manual search is useful for browsing but difficult to repeat and compare. This Actor provides:

  • multiple keyword searches in one run;
  • deterministic output fields;
  • bounded deep scrolling;
  • stable video-ID deduplication;
  • scheduled execution on Apify;
  • JSON, CSV, and spreadsheet exports;
  • API and webhook integration;
  • one coherent anonymous browser session per run;
  • bounded fresh-session recovery for transient navigation, challenge, or incomplete-render failures.

The Actor preserves Facebook's displayed publication text instead of inventing an exact timestamp from an ambiguous label.

What Facebook video data is extracted?

FieldMeaning
querySearch phrase that produced the record
rankPosition among accepted results for that query
videoIdStable numeric video or Reel identifier
postIdVisible post identifier when Facebook exposes one
canonicalUrlClean Facebook video or Reel URL
titleRendered video title or primary descriptive text
captionAdditional rendered description when separately available
creatorNamePublic creator, Page, or publisher name
creatorUrlPublic Facebook creator or Page URL
publishedAtTextPublication label displayed by Facebook
durationTextDisplayed video duration
thumbnailUrlRendered thumbnail URL
viewCountParsed visible views, or null
reactionCountParsed visible reactions or likes, or null
commentCountParsed visible comments, or null
shareCountParsed visible shares, or null
scrapedAtUTC time when the card was extracted

Facebook does not display every metric on every search card. Nullable fields remain null; they are not replaced with zero.

How to search Facebook public videos

  1. Open the Actor in Apify Console.
  2. Add one or more phrases under Search queries.
  3. Choose the maximum number of unique records.
  4. Keep the default scroll depth for an ordinary search.
  5. Keep the default Apify Proxy configuration unless you have a specific routing need.
  6. Click Start.
  7. Open the Dataset tab to inspect or export results.

A practical first run is:

{
"searchQueries": ["artificial intelligence"],
"maxItems": 10,
"maxScrolls": 4
}

Input parameters

searchQueries

Required array of one to 20 non-empty phrases. Queries are trimmed and exact duplicates are removed. Use the wording you would enter into Facebook video search.

maxItems

Maximum unique records across all queries. The default is 50 and the allowed range is 1 to 1,000. The Actor stops accepting records once this limit is reached.

maxScrolls

Maximum scroll rounds for each query. The default is 8 and the allowed range is 1 to 50. The Actor also stops after two scroll rounds add no new videos.

proxyConfiguration

Uses Apify Proxy by default. Datacenter proxy sessions are normally sufficient. The browser keeps proxy identity and Facebook cookies coherent across queries. After two default datacenter sessions fail, the Actor can make one final direct-transport attempt. Explicit custom or residential proxy choices are opt-in and are never bypassed by that fallback.

Example output

A representative result looks like this:

{
"query": "artificial intelligence",
"rank": 1,
"videoId": "1017554081331805",
"postId": null,
"canonicalUrl": "https://www.facebook.com/reel/1017554081331805/",
"title": "AI experts discuss the speed of recent advances",
"caption": null,
"creatorName": "Today Show",
"creatorUrl": "https://www.facebook.com/today",
"publishedAtText": "Sep 14",
"durationText": "1:25",
"thumbnailUrl": "https://scontent.example.fbcdn.net/example.jpg",
"viewCount": 1900000,
"reactionCount": null,
"commentCount": null,
"shareCount": null,
"scrapedAt": "2026-09-19T03:37:15.361Z"
}

The thumbnail host and signed query string vary by run. The example shortens that transient URL for readability.

How much does it cost to search Facebook videos?

Pricing has a one-time $0.005 run-start event plus a tiered charge for each unique video-result saved. At the BRONZE tier, a result costs $0.004. Your active subscription tier is shown in Apify Console before the run starts.

BRONZE examples:

  • A one-result run charges one $0.005 start event and one $0.004 result event.
  • A ten-result run charges one start event and ten result events.
  • A hundred-result run charges one start event and one hundred result events.

Multiply the displayed tier's result price by the number of unique saved records, then add the single run-start event. Failed, rejected, or duplicate cards are not charged as results. Apify compute and proxy usage are covered by the Actor's PPE pricing rather than billed as separate result events.

Create one task per stable monitoring theme. For example:

{
"searchQueries": ["renewable energy", "solar power"],
"maxItems": 100,
"maxScrolls": 10
}

Schedule the task daily or weekly. Store each run's dataset ID and compare videoId values to identify newly surfaced results. Use rank, viewCount, and publishedAtText as source-visible signals, not as guarantees of platform-wide popularity.

Export and integration workflows

Common workflows include:

  • export CSV to Google Sheets for editorial review;
  • send dataset items to Make or Zapier;
  • write JSON records into a warehouse;
  • trigger a webhook after each scheduled run;
  • compare video IDs against a prior run;
  • pass selected canonical URLs to a separate authorized downloader or transcript Actor;
  • enrich creator URLs in a later, purpose-specific workflow.

The default dataset remains the canonical output for all integrations.

Run from the Apify API with cURL

Replace APIFY_TOKEN with your token:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~facebook-public-video-search-results/runs?token=APIFY_TOKEN&waitForFinish=120" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["Nike"],"maxItems":10,"maxScrolls":4}'

Use the returned dataset ID to fetch items from the dataset API.

Run from JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/facebook-public-video-search-results').call({
searchQueries: ['artificial intelligence'],
maxItems: 25,
maxScrolls: 6,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run from Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/facebook-public-video-search-results').call(
run_input={
'searchQueries': ['renewable energy'],
'maxItems': 25,
'maxScrolls': 6,
}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/facebook-public-video-search-results"

Claude Desktop

Add this server object to Claude Desktop's MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/facebook-public-video-search-results"
}
}
}

Cursor

Open Settings → Tools & MCP → New MCP Server and use the same Apify MCP URL shown above.

VS Code

Add the same HTTP server URL to your workspace or user MCP configuration, then enable the automation-lab/facebook-public-video-search-results tool.

Example prompts:

  • “Search public Facebook videos for artificial intelligence and return ten creator and URL records.”
  • “Collect Facebook video results for Nike and format the titles, publication labels, and view counts as a table.”
  • “Run the renewable-energy monitoring task and highlight video IDs not present in my previous dataset.”

Reliability and retry behavior

The Actor waits for a rendered video link inside a result card rather than treating an early page shell as complete. It uses bounded scrolling and stops when results become stagnant. One browser context preserves cookies and proxy identity across queries.

In the default mode, a failed navigation, explicit challenge, or unrecognized empty render first rotates to a fresh datacenter browser session and can then try one direct connection. Explicit proxy configurations get one fresh-session retry and are never bypassed. Exhausting the bounded attempts ends the run with a non-zero status instead of returning a misleading empty success. Malformed input is rejected without retrying Facebook.

Limits and responsible expectations

Only anonymously visible public search cards are supported. Facebook can vary results by time, geography, experiments, and public availability. Rank is the observed order in that run, not a permanent search position.

Some cards omit title, caption, date, duration, thumbnail, or engagement fields. Signed thumbnail URLs can expire. Publication text may be relative or omit a year. The Actor intentionally preserves that text instead of guessing an ISO date.

The maximum is 1,000 accepted records per run and 20 queries per run. Search depth also depends on what Facebook renders for the phrase.

Scrape only public data you are permitted to collect and process. Follow Facebook's terms, applicable privacy and database laws, and your organization's policies. Do not use the Actor to profile people, evade access controls, collect private content, or make automated high-impact decisions.

Minimize retained personal data. Define a legitimate purpose and retention period. Honor deletion and access requests where applicable. You are responsible for your inputs and downstream use.

The Actor creates no external cache or company-operated copy of results. Run datasets, input, and logs remain in Apify storage under your account's retention settings and can be deleted with Apify storage controls. Search phrases are sent to Facebook through the selected network route; public result metadata is returned to your Apify dataset.

Troubleshooting

Why did a query return fewer records than maxItems?

maxItems is a ceiling, not a promise. Facebook may expose fewer cards, or scrolling may stop after two stagnant rounds. Try a broader phrase or increase maxScrolls gradually.

Why are engagement fields null?

Facebook does not render every metric on every search card. null means the value was not visible; it does not mean zero.

Why did the run fail with a challenge message?

The Actor already rotates to a fresh coherent session and, for the default route, can make one final direct attempt. If those bounded attempts are challenged or incomplete, the run fails explicitly. Retry later or review your selected proxy configuration rather than treating an empty dataset as success.

Why does a thumbnail URL stop working later?

Facebook CDN URLs can be signed and temporary. Use them for immediate review or download permitted thumbnails during your own retention window.

FAQ

Does this Actor need a Facebook account?

No. It uses anonymous public Watch search pages and accepts no login credentials.

Does it download videos?

No. It exports result metadata and canonical Facebook URLs. Use a separate authorized media workflow when you have rights to download content.

Can I search multiple keywords?

Yes. Supply up to 20 queries. Videos repeated across queries are saved once, under the first query that accepts them.

Can I schedule recurring searches?

Yes. Create an Apify Task and schedule it in Console. Compare stable videoId values across run datasets.

Are the results real time?

They reflect the public search cards rendered during the run. The Actor does not claim an exhaustive or real-time index of all Facebook videos.

Use this Actor for discovery, then pass only selected, authorized URLs to a purpose-specific downstream Actor.