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

Extract public Facebook Reels from pages and profiles: captions, play counts, publish times, owners, and playback URLs.
Get the public Reels of any Facebook page or profile as structured data: caption, play count, publish time, owner, video size and duration, and the reel link. No login, no cookies. $0.003 per reel, which is $3 per 1,000.
7 days.| Field | Key | Description |
|---|---|---|
| Facebook URLs | startUrls | Public page or profile URLs. A direct reel URL is also accepted. |
| Reels per URL | resultsLimit | How many reels to save for each URL. Default 10. |
| Reels newer than | onlyPostsNewerThan | YYYY-MM-DD, an ISO timestamp, or a relative value like 7 days. |
| Proxy configuration | proxyConfiguration | Datacenter by default. Switch to residential if a page only loads from a residential IP. |
{
"startUrls": [
{ "url": "https://www.facebook.com/9GAGCute" }
],
"resultsLimit": 10,
"onlyPostsNewerThan": "30 days",
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": ["DATACENTER"]
}
}
One row per reel.
| Field | Description |
|---|---|
topLevelReelUrl, shareable_url | Link to the reel |
text | Caption |
time, creation_time | Creation time (ISO and Unix) |
playCountRounded | Play count as Facebook rounds it |
ownerName, facebookUrl | Page or profile that posted the reel |
playback_video | Duration, width, height, aspect ratio, and thumbnail |
post_id, inputUrl | Post id and the input URL that produced the row |
If a URL has no public reels, you get one row with url, error, and errorDescription.
Example item (trimmed):
{
"facebookUrl": "https://www.facebook.com/9GAGCute",
"inputUrl": "https://www.facebook.com/9GAGCute",
"topLevelReelUrl": "https://facebook.com/reel/1075123955136862/",
"text": "Me after using my wife's shampoo and conditioner",
"time": "2026-09-30T07:55:35.000Z",
"playCountRounded": 15000,
"post_id": "1104997192084392",
"creation_time": 1790754935,
"ownerName": "9GAG Cute",
"shareable_url": "https://www.facebook.com/reel/1075123955136862",
"playback_video": {
"aspect_ratio": 0.5625,
"height": 1920,
"width": 1080,
"length_in_second": 23.039
}
}
$0.003 per reel ($3 per 1,000 reels). Platform usage is billed on top at standard rates: compute $0.30 per GB-hour, datacenter proxy $1 per GB.
Worked example: 10 reels cost 10 × $0.003 = $0.03 in reel fees. Including measured platform usage of about $0.003, the job came to about $0.033.
The actor reads only public Reels that Facebook shows to logged-out visitors. Follow Facebook's terms and privacy laws such as GDPR for your use.
No login. Datacenter proxies are used by default and billed per GB.
As many as you set per URL, as long as the page has that many public reels.
A direct reel URL returns the reel without a play count. Fields that Facebook does not publish stay empty.
Yes. Use Schedules for recurring runs, or start it with the REST API and read the dataset in any format.
tracking field holds Facebook's raw tracking JSON, and is_passive_content is left empty because the public data omits it.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.
startUrlsarrayRequiredFacebook URLs
Public Facebook page or profile URLs, such as https://www.facebook.com/9GAGCute. A direct reel URL is also accepted.
resultsLimitintegerOptionaldefault 10Reels per URL
How many reels to save for each Facebook URL.
Optional limit on how recent the reels must be.
onlyPostsNewerThanstringOptionalReels newer than
Only save reels created on or after this time. Use YYYY-MM-DD, an ISO timestamp such as 2025-09-23T10:02:01, or a relative value such as 7 days, 2 weeks, or 1 hour.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are used by default. Switch to residential if a page 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 |
|---|---|---|
| topLevelReelUrl | string | null | Direct URL of the reel. |
| text | string | null | Caption of the reel. |
| time | string | null | When the reel was created, in UTC. |
| playCountRounded | number | null | Play count rounded the way Facebook displays it. |
| ownerName | string | null | Name of the page or profile that posted the reel. |
| facebookUrl | string | null | Public Facebook URL of the owner. |
| inputUrl | string | null | URL from the input that produced this reel. |
| shareable_url | string | null | Share link for the reel. |
| play_count_reduced | string | null | Play count as Facebook prints it, such as 15K. |
| url | string | null | Input URL that produced an error row. |
| error | string | null | Error code when a URL returned no public reels. |
| errorDescription | string | null | Why that URL returned no public reels. |
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 |
|---|---|---|
| Reel | One public Facebook reel 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-reels-scraper').call({
"startUrls": [
{
"url": "https://www.facebook.com/9GAGCute"
}
],
"resultsLimit": 10,
"onlyPostsNewerThan": "2024-01-01",
"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-reels-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-reels-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.
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.