
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Search public Facebook posts, pages, and places by keyword. Returns authors, reactions, comments, and profile links without a browser.
Search Facebook by keyword and get public results as structured data: posts with reactions and comment counts, pages, places, or all of them at once. No login and no cookies. $0.003 per result, which is $3 per 1,000.
| Field | Key | Description |
|---|---|---|
| Search query | query | Keyword to search for. |
| Search type | search_type | posts, pages, places, or global. |
| Maximum results | max_posts | How many results to save. Default 10. |
| Recent posts | recent_posts | Sort posts by most recent. Applies to posts and global search; when a date is set, the date filter is used instead. |
| Location | location | City and country, such as Berlin, Germany. Passed as a search filter. |
| Date from / to | start_date, end_date | YYYY-MM-DD window for posts and global search, sent to Facebook as its own date filter. Either one alone is fine. |
| Proxy configuration | proxyConfiguration | Datacenter by default. Switch to residential if a search only loads from a residential IP. |
{
"query": "Mausritter",
"search_type": "posts",
"max_posts": 10,
"recent_posts": false,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": ["DATACENTER"]
}
}
Post results include:
| Field | Description |
|---|---|
post_id, type, url | Post id, result type, and permalink |
message, message_rich | Post text |
timestamp | Unix time of the post |
reactions_count, reactions | Total reactions and the split by type |
comments_count, reshare_count | Comment and share counts |
author | Author id, name, profile URL, and picture |
image, video, video_files | Attached media when present |
external_url, attached_post | Linked content when present |
Page and place searches return a row per page or place with its name and details. Example post (trimmed):
{
"post_id": "122121471735295264",
"type": "post",
"url": "https://www.facebook.com/permalink.php?story_fbid=pfbid0o43JUZ...&id=61588857940219",
"message": "Hey everyone! We are opening our mobile coffee trailer next month. Stay tuned for updates. ...",
"timestamp": 1791414785,
"comments_count": 56,
"reactions_count": 1974,
"reshare_count": 52,
"reactions": { "angry": 2, "care": 11, "haha": 1, "like": 1429, "love": 531, "sad": 0, "wow": 0 },
"author": {
"id": "100000000000001",
"name": "Example Coffee Co.",
"url": "https://www.facebook.com/people/Example-Coffee-Co/100000000000001/"
},
"image": { "height": 1440, "width": 1080, "id": "122121471507295264" },
"video": null
}
$0.003 per result saved ($3 per 1,000 results). Platform usage is billed on top at standard rates: compute $0.30 per GB-hour and datacenter proxy $1 per GB.
Worked example: 10 results cost 10 × $0.003 = $0.03 in result fees. In our measured run, compute and proxy traffic added about $0.0035, so the job came to about $0.033.
The actor only reads results that Facebook shows to logged-out visitors. Check Facebook's terms and privacy laws such as GDPR for your use case, especially for personal data in posts.
No login. Datacenter proxies are used by default and billed per GB. Residential is optional.
As many as you set, until Facebook has no more results. Facebook ends a logged-out search after a few hundred results, and returns fewer for narrow queries.
Fields such as video or external_url are null when the post has no such attachment.
Yes. Use Schedules for recurring runs, or start it through the REST API and read the dataset as JSON, CSV, or Excel.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
querystringRequiredSearch query
Keyword to search for, the same text you would type into Facebook search.
search_typeenumRequireddefault "posts"Search type
Which public results to return.
max_postsintegerRequireddefault 10Maximum results
How many results to save. The run stops when it reaches this number or when Facebook has no more results (a logged-out search ends after a few hundred).
Optional date, recency, and location filters.
recent_postsbooleanOptionaldefault falseRecent posts
Sort post results by most recent instead of relevance. Applies to posts and global search. When a date is set, Facebook's date filter is used instead.
locationstringOptionalLocation
City and country, for example Berlin, Germany. Passed through as a Facebook location filter.
start_datestringOptionalDate from
Only posts from this date onward. Use YYYY-MM-DD. Applies to posts and global search.
end_datestringOptionalDate to
Only posts up to this date. Use YYYY-MM-DD. Applies to posts and global search.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are used by default. Switch to residential if a search only loads from a residential IP. Proxy traffic is billed per GB, and compute is billed separately.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | null | post, page, or place. |
| url | string | null | Public Facebook URL for the result. |
| name | string | null | Page or place name. |
| message | string | null | Post text. |
| timestamp | integer | null | Unix publish time. |
| reactions_count | integer | null | Total reactions on a post. |
| comments_count | integer | null | Comment count on a post. |
| reshare_count | integer | null | Share count on a post. |
| facebook_id | string | null | Page or place id. |
| is_verified | boolean | null | Whether the page or place is verified. |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One public Facebook search result saved to the dataset. | $0.003 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/facebook-search-scraper').call({
"query": "Mausritter",
"search_type": "posts",
"max_posts": 10,
"recent_posts": false,
"location": "Berlin, Germany",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/facebook-search-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/facebook-search-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Search the newest public Facebook posts for a keyword.
Search Facebook places by keyword.
Posts about a keyword published between two dates.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.