Facebook Scraper — Pages, Posts, Comments & Marketplace
Pricing
from $0.015 / post
Facebook Scraper — Pages, Posts, Comments & Marketplace
Scrape Facebook pages, posts, comments and Marketplace listings without logging in. Marketplace monitoring flags new listings and price drops between runs.
Pricing
from $0.015 / post
Rating
0.0
(0)
Developer
Yuliia Kulakova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Four Facebook scrapers in one actor: page profiles, page posts, post comments and Marketplace listings. No login, no cookies, no browser extension — just a URL and a mode. Marketplace runs can also watch prices and tell you what is new or cheaper since your last run.

What you get
- Four modes, one subscription. Switch
modebetweenpage-details,page-posts,post-commentsandmarketplaceinstead of paying for four separate tools. - No login anywhere. Every mode reads public Facebook data. You never hand over an account, a session cookie or a password, and nothing in your output depends on one.
- All seven reactions, separately. Every post and comment returns
like,love,care,haha,wow,sadandangryas their own counts, plus the total — not one lumped number. - Real view counts.
viewsCountis the genuine play count on videos and Reels, and staysnullon photo and text posts instead of a misleading0. - Comments from any post type. Text posts, photos, videos and Reels all work — Facebook serves each of them through a different internal query, and all four are handled.
- Deep pagination. Posts and comments page far past the first batch, with automatic IP rotation when Facebook throttles.
- Marketplace price monitoring. Turn on
monitorModeand each run compares against the previous one, flagsisNewlistings and price drops, and can POST the changes to yourwebhookUrl. - Fails loudly. If Facebook blocks a run, it ends as FAILED with the reason. It never finishes green with an empty dataset and leaves you guessing.
Modes
mode | What you get | Output _type |
|---|---|---|
page-details | Profile: name, id, category, followers, likes, bio, pictures, verified owner, contact fields where public | page |
page-posts | Posts from a page: text, timestamp, all reactions, comments/shares/views, media, author | post |
post-comments | Comments on one post: text, author, reactions, reply count, permalink | comment |
marketplace | Listings by keyword or category: price, price drops, photos, location, condition, delivery, seller when shown | listing |
Quick start
Posts from a page:
{"mode": "page-posts","startUrls": [{ "url": "https://www.facebook.com/nintendo" }],"maxItems": 50}
Comments on a post:
{"mode": "post-comments","startUrls": [{ "url": "https://www.facebook.com/NintendoAmerica/posts/1489262726562658" }],"maxCommentsPerPost": 100}
Marketplace search with filters:
{"mode": "marketplace","searchKeywords": "iphone 13","location": "Seattle","priceMax": 400,"condition": ["used_good", "used_like_new"],"sortBy": "price_asc","maxItems": 50}
Watch a search for new listings and price drops — run it on a schedule:
{"mode": "marketplace","searchKeywords": "macbook pro","location": "Chicago","monitorMode": true,"webhookUrl": "https://your-endpoint.example.com/hook"}
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | enum | page-posts | page-details / page-posts / post-comments / marketplace |
startUrls | array | [] | Page, post or listing URLs. Vanity and tracking-laden URLs are cleaned up automatically |
entityIds | array | [] | Numeric Facebook IDs instead of URLs |
names | array | [] | Page handles, e.g. nintendo |
maxItems | integer | 50 | Cap on dataset rows. 0 = unlimited |
onlyPostsNewerThan | string | — | ISO date or relative (2026-01-01, 7 days) |
onlyPostsOlderThan | string | — | ISO date or relative |
maxCommentsPerPost | integer | 50 | Comment ceiling per post |
commentsRanking | enum | all | all, or most_relevant for Facebook's curated subset |
searchKeywords | string | — | Marketplace keyword query |
location | string | — | Marketplace city, e.g. Seattle |
category | string | — | Marketplace category slug, e.g. vehicles. Ignored when keywords are set |
priceMin / priceMax | integer | — | Marketplace price range |
condition | array | [] | new, used_like_new, used_good, used_fair |
sortBy | enum | best_match | best_match, date, price_asc, price_desc, distance |
daysSinceListed | integer | — | Only listings posted within N days |
includeListingDetails | boolean | true | Open each listing for description, condition, coordinates and category |
monitorMode | boolean | false | Flag new listings and price drops against the previous run |
webhookUrl | string | — | POST the new and cheaper listings here |
proxyConfiguration | object | — | Optional. Proxies are included and configured automatically |
Output
Every row carries _type, mode, inputUrl and scrapedAt.
Post
{"_type": "post","postId": "1489262726562658","url": "https://www.facebook.com/reel/2595533354220747/","text": "Three classic games are now available to play...","timestamp": "2026-09-02T01:01:17.000Z","reactions": { "like": 1521, "love": 480, "care": 12, "haha": 74, "wow": 38, "sad": 3, "angry": 1, "total": 2129 },"commentsCount": 267,"sharesCount": 190,"viewsCount": 58357,"postType": "reel","media": [{ "type": "thumbnail", "url": "https://scontent.xx.fbcdn.net/...", "thumbnail": "https://scontent.xx.fbcdn.net/..." }],"author": { "name": "Nintendo of America", "id": "100064368354094", "url": "https://www.facebook.com/NintendoAmerica", "profilePic": "https://..." },"topLevelUrl": "https://www.facebook.com/NintendoAmerica/posts/pfbid02..."}
postId, url, text, timestamp, reactions{like,love,care,haha,wow,sad,angry,total}, commentsCount, sharesCount, viewsCount (videos and Reels only, else null), feedbackId, media[]{type,url,thumbnail}, ocrText (the alt text Facebook generates for images), link, textReferences[], author{}, collaborators[], topLevelUrl, postType (status/photo/video/reel).
Media entries are deduplicated — Facebook serves the same asset under several size parameters, and you get each one once. A type of photo is a picture, thumbnail is a video's cover image.
Comment
{"_type": "comment","id": "1058329573485954","text": "Where did their hair go","url": "https://www.facebook.com/reel/2595533354220747/?comment_id=1058329573485954","timestamp": "2026-09-02T01:13:47.000Z","likesCount": 1,"reactions": { "like": 1, "love": null, "care": null, "haha": null, "wow": null, "sad": null, "angry": null, "total": 1 },"author": { "name": "Jack Treese III", "id": "pfbid0...", "url": "https://www.facebook.com/...", "pic": "https://..." },"replyCount": 13,"postId": "1489262726562658"}
id, text, url (deep-links to the comment itself), timestamp, likesCount, reactions{}, feedbackId, author{}, replyCount, depth, isReply, postUrl, postId.
Marketplace listing
{"_type": "listing","listingId": "1725486794715446","title": "iPhone 13 Anti Spy Tempered Glass Screen Protector","url": "https://www.facebook.com/marketplace/item/1725486794715446","priceCurrent": 5,"priceOriginal": 10,"priceDropped": true,"currency": "USD","description": "When viewing from a side angle...","images": ["https://scontent.xx.fbcdn.net/..."],"location": { "city": "Edmonds", "state": "WA", "coords": { "lat": 47.7987, "lng": -122.3712 } },"condition": "New","category": "Mobile phones","categoryId": "1557869527812749","listingDate": "2025-05-25T18:41:56.000Z","availability": "live","deliveryTypes": ["IN_PERSON", "PUBLIC_MEETUP", "SHIPPING_ONSITE"]}
listingId (always matches the id in url), title, url, priceCurrent, priceOriginal, priceDropped, currency, description, images[], video, location{city,state,coords}, seller{name,id,profileUrl,rating,ratingCount,sellerType,joinDate}, condition, category, categoryId, listingDate, availability (live/sold/pending/off), deliveryTypes[], vehicleAttrs{make,model,year,...}, propertyAttrs{beds,baths,sqft}. With monitorMode, rows also carry isNew.
Page
{"_type": "page","name": "Nintendo of America","id": "100064368354094","url": "https://www.facebook.com/NintendoAmerica/","category": ["Video Game"],"followers": 5600000,"likes": 5632799,"talkingAbout": 20364,"about": "Welcome to the official Nintendo of America Facebook Page...","profilePic": "https://...","coverPic": "https://...","website": "https://www.nintendo.com/us/","confirmedOwner": true,"confirmedOwnerName": "NINTENDO OF AMERICA, INC."}
Plus email, phone, address, coordinates, rating, ratingCount, hours, priceRange, messenger, verified, info[], relatedPages[] — see the note below on which pages expose these. Outbound links such as website are unwrapped from Facebook's redirect, so you get the real destination.
Pricing
You pay per result, by what the result is. Nothing else — no monthly fee, no charge for runs that return nothing.
| Result | Price per 1,000 |
|---|---|
| Post | $15 |
| Marketplace listing | $20 |
| Page profile | $15 |
| Comment | $10 |
What that means in practice:
- 500 posts from a competitor's page — $7.50
- 1,000 comments under a viral post — $10
- 200 Marketplace listings with full details — $4
- A daily price monitor on 50 listings, run 4× a day — $120/month
Marketplace costs more per row because each listing is opened individually for its description, condition, coordinates, delivery options and price history — a search card alone would tell you far less.
Use cases
- Competitor tracking — run
page-postson a schedule and watch what a rival publishes, how much engagement each post earns, and which formats get views. - Deal hunting and reselling —
marketplacewithmonitorModealerts you the moment a matching listing appears or drops in price. Built for flippers, car and property hunters. - Audience research — pull
post-commentswith full reaction breakdowns to read sentiment on a campaign or announcement. - Lead lists — collect
page-detailsfor local businesses: category, contact details where public, rating and page owner. - Price intelligence — track the going rate for a product across a metro area, with
priceOriginalshowing what sellers first asked.
Good to know
Everything below is how Facebook itself behaves for public visitors, not a gap in the scraper:
- Seller identity on Marketplace appears intermittently. Facebook includes
seller.name, rating and join date on some responses and omits them on others — the same listing can return a seller on one run and not the next. When it is served, you get it. - Vehicle listings expose
year,makeandmodel;mileage,transmissionandfuelare not published on public listing pages, so they staynullrather than being guessed. Facebook also serves no category name for vehicles, onlycategoryId. - Page contact fields (
email,phone,rating,hours) are published mainly by local business pages. Large brand pages returnnull— they simply do not list them.followers,category,likes,about,websiteand pictures come through for any page that shows them. verifiedisnullunless Facebook states it. The blue-badge flag is not published to logged-out visitors for every page, and an unknown badge is reported asnullrather than guessed asfalse.- Video files themselves are not published to logged-out visitors. For Reels and videos you get the cover image (
type: "thumbnail"), the real view count, and every engagement metric — but not the .mp4. - Comments are collected at the top level, each with a
replyCount. Facebook throttles very deep comment pagination at roughly 2–3k per post. - Marketplace radius is not a public filter — Facebook returns the whole metro area for a city regardless of any distance setting, so the actor does not pretend to offer one. Price, condition, sort order and "listed within N days" all work.
FAQ
Do I need a Facebook account, cookies or a token? No. Every mode reads public data, and there is no field to put an account into.
How do I target a page?
Any of startUrls (full or vanity URLs), names (nintendo), or entityIds (numeric ids). Tracking parameters are stripped automatically.
Can it watch prices for me?
Yes — set monitorMode: true on a marketplace run and schedule it. Each run compares against the previous one, marks isNew listings, sets priceDropped with the old price in priceOriginal, and POSTs the changes to webhookUrl if you provide one.
Does it return all reaction types? Yes, all seven separately plus the total, for both posts and comments.
Comments on a Reel or a video — do those work? Yes. Facebook serves those posts through different internal queries than text posts, and all of them are handled.
Why did my run fail instead of returning an empty dataset? Because Facebook blocked it, and you should know that rather than receive a silent empty result. The status message says what happened. Blocks are usually momentary — rerunning generally works.
Do I need to configure a proxy? No. Proxies are included and configured automatically.
Support & feedback
Something not working? Open an issue on the Actor's Issues tab. Include the run ID and the input you used — that is usually enough to reproduce and fix it. Facebook changes its internals regularly, and issues are how those changes get spotted quickly.
Missing a field or a filter? Issues are the right place for that too. Several fields in this actor exist because users asked for them.
If this actor saved you time, a review on the Store page would mean a lot. Reviews are what keep a small independent actor visible next to the big ones.
Legal
Scraping Facebook is contrary to Meta's Terms of Service, and this actor collects public data only. Personal data such as names and comment text falls under GDPR and CCPA — make sure you have a lawful basis for collecting it and honour deletion and opt-out requests. This actor is not affiliated with or endorsed by Meta.
Maintained by brilliant_gum.