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

Extract public comments from Facebook posts, reels, photos, and videos. Returns comment text, timestamps, likes, and basic profile details.
Extract public comments from any Facebook post, photo, video, or reel and get clean rows with the comment text, timestamp, like count, and the commenter's public name and profile link. No login, no cookies, no browser to manage. Pay only for the comments you save: $1.40 per 1,000 comments.
2 weeks.| Field | Key | What it does |
|---|---|---|
| Facebook URLs | startUrls | Public post, photo, video, or reel URLs. One comment thread is read per URL. |
| Maximum comments | resultsLimit | Top-level comments to save per URL. Default 10. |
| Comments mode | viewOption | RANKED_THREADED (most relevant), RECENT_ACTIVITY (newest), RANKED_UNFILTERED (all comments, default). |
| Comments newer than | onlyCommentsNewerThan | YYYY-MM-DD, an ISO timestamp, or a relative value like 2 weeks. UTC. Forces newest-first. |
| Include comment replies | includeNestedComments | Save replies and replies-to-replies as extra rows, up to three levels. Default off. |
| Proxy configuration | proxyConfiguration | Datacenter by default. Choose residential if Facebook refuses the datacenter pool. |
{
"startUrls": [
{
"url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"
}
],
"resultsLimit": 10,
"viewOption": "RANKED_UNFILTERED",
"includeNestedComments": false,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": ["DATACENTER"]
}
}
Each comment is one dataset row.
| Field | Description |
|---|---|
text | Comment text. |
date | When the comment was posted (UTC, ISO format). |
likesCount | Like count reported for the comment. |
profileName, profileUrl, profileId, profilePicture | Public details of the commenter. |
commentId, commentUrl | Comment id and direct link. |
facebookUrl, inputUrl, facebookId, postTitle | The post the comment belongs to. |
threadingDepth | 0 for a top-level comment, 1 for a reply, 2 for a reply to a reply. |
author | The raw author object Facebook returns. |
Reply rows also carry replyToCommentId, parentComment, and parentReply.
{
"facebookUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl",
"commentUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0BHNjuF1BS5YXFqxRboHf6eEDcufYmoqGuFkSDmc1iNHeeZMNCvwBKrxEVKSV7KDQl?comment_id=544774060005183",
"commentId": "544774060005183",
"date": "2021-08-16T14:41:35.000Z",
"text": "Great post, thanks for sharing.",
"profileName": "Jane Doe",
"profileUrl": "https://www.facebook.com/jane.doe.example",
"likesCount": "0",
"threadingDepth": 0,
"facebookId": "6375219342552112",
"inputUrl": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"
}
(Trimmed. The real row also contains the full post title, the profile picture URL, and the raw author object.)
You pay $0.0014 per comment saved, replies included. That is $1.40 per 1,000 comments. A date filter adds $0.0014 per post that is read with that filter. Platform usage (compute and proxy) is billed on top of the events.
Worked example: one post, 10 comments, datacenter proxy, default memory. That is 10 × $0.0014 = $0.014 in events plus about $0.003 of platform usage, around $0.017 in total.
The actor only reads content that is publicly visible without logging in. You are responsible for using the data in line with privacy law and Facebook's terms, especially for personal data.
No login or cookies. Datacenter proxy is the default and works for most public posts. Switch to residential only if Facebook refuses the datacenter pool.
The count on Facebook includes replies and comments that are not public. The actor saves public comments only.
The limit caps top-level comments. With replies switched on, replies are saved as additional rows.
Public post, photo, reel, and video URLs. A page home URL, a private post, or a non-Facebook link is skipped.
Yes. Schedule runs from the console, or start them and read the dataset through the API.
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 post, photo, video, or reel URLs. One comment thread is read per URL.
resultsLimitintegerOptionaldefault 10Maximum comments
How many top-level comments to save per URL. Replies are saved in addition to this number when comment replies are included.
Choose a sort order, a date cutoff, and whether to include replies.
viewOptionenumOptionaldefault "RANKED_UNFILTERED"Comments mode
How Facebook orders the comments before they are saved.
onlyCommentsNewerThanstringOptionalComments newer than
Keep comments posted after this time. Use YYYY-MM-DD, an ISO timestamp, or a relative value such as 2 weeks or 3 days. Times are UTC. When this is set, comments are read newest first.
includeNestedCommentsbooleanOptionaldefault falseInclude comment replies
Save replies and replies-to-replies as their own rows, up to three levels.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are the default. Use residential only when Facebook refuses the datacenter pool.
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 |
|---|---|---|
| text | string | null | Text of the comment. |
| profileName | string | null | Display name of the commenter. |
| date | string | null | When the comment was posted, in UTC. |
| likesCount | string | null | Like count reported for the comment. |
| threadingDepth | integer | null | 0 for a top-level comment, 1 for a reply, 2 for a reply to a reply. |
| commentUrl | string | null | Direct link to the comment. |
| facebookUrl | string | null | Post URL the comment belongs to. |
| commentId | string | null | Facebook comment id. Reply rows use the parent comment id. |
| profileUrl | string | null | Public profile link when Facebook exposes one. |
| profileId | string | null | Facebook profile id of the commenter. |
| postTitle | string | null | Text of the parent post. |
| facebookId | string | null | Numeric Facebook id of the post. |
| inputUrl | string | null | URL submitted in the input. |
| commentsCount | integer | null | Number of public replies under this comment. |
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 |
|---|---|---|
| Comment | One public comment or reply saved to the dataset. | $0.0014 |
| Date filter | A post read with a date filter. | $0.0014 |
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-comments-scraper').call({
"startUrls": [
{
"url": "https://www.facebook.com/humansofnewyork/posts/pfbid0BbKbkisExKGSKuhee9a7i86RwRuMKFC8NSkKStB7CsM3uXJuAAfZLrkcJMXxhH4Yl"
}
],
"resultsLimit": 10,
"viewOption": "RANKED_UNFILTERED",
"onlyCommentsNewerThan": "2024-01-01",
"includeNestedComments": false,
"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-comments-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-comments-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.
Top comments and their replies from the last 3 years.
Comments in threaded order.
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.