Apify Facebook scraper: what a run actually costs
Apify publishes 16 official Facebook Actors, one per object type: Pages, Posts, Comments, Groups, Reviews, Ads Library, Marketplace and nine more (api.apify.com/v2/store?search=facebook, checked 2026-09-09). Fifteen of the 16 bill pay-per-event; the exception, Facebook URL to ID, is free. The Posts Scraper charges $0.005 per post on the Free plan and $0.002 on Business, plus $0.001 to start a run. None of them log in, so private groups, friends-only posts and inboxes stay out of reach.
What this page is not: a ranked shortlist. It covers the official apify/* Actors and what they cost you specifically. For third-party alternatives and a head-to-head ranking, read the best Facebook scrapers on Apify.
Which Facebook Actor do you need?
One Actor per object type. Picking the wrong one is the most common way to overpay, because the Pages Scraper costs 2.4x the Posts Scraper per row and returns a different shape of data.
Prices below are the primary charged event, read live from api.apify.com/v2/store?search=facebook on 2026-09-09. "Free" is the no-subscription rate; "Business" is the $999/month plan rate, which is the figure Apify prints on the listing.
| You want | Actor | Charged per | Free plan | Business |
|---|---|---|---|---|
| Page profile, contacts, follower counts | Facebook Pages Scraper | page | $12.00 / 1,000 | $5.40 / 1,000 |
| Posts and engagement from a Page | Facebook Posts Scraper | post | $5.00 / 1,000 | $2.00 / 1,000 |
| Comment threads on a post | Facebook Comments Scraper | comment | $2.50 / 1,000 | $1.40 / 1,000 |
| Posts inside a public group | Facebook Groups Scraper | post | $5.00 / 1,000 | $2.60 / 1,000 |
| Star ratings and review text | Facebook Reviews Scraper | review | $2.50 / 1,000 | $1.40 / 1,000 |
| Creatives from Meta's Ad Library | Facebook Ads Library Scraper | ad | $5.80 / 1,000 | $3.40 / 1,000 |
| Marketplace listings | Facebook Marketplace Scraper | listing | $6.20 / 1,000 | $2.60 / 1,000 |
| Finding Pages by keyword | Facebook Search Scraper | page or profile | $12.00 / 1,000 | $10.00 / 1,000 |
All eight shipped a build on 2026-09-09 and none carries a deprecation notice (api.apify.com/v2/acts/apify~<name>, checked 2026-09-09). The Events Scraper, which is not in the table, is the laggard of the set at 2026-07-04.
If you only need one number from one Page, the Pages Scraper at $0.012 is fine. If you are pulling thousands of rows a month, the object you choose matters more than the plan you are on.
Why the price on the listing is not the price you pay
Every Apify Store listing shows one headline figure. The Pages Scraper card reads "from $5.40 / 1,000 pages". That is the Business-plan rate, and the listing says why in the next line: "Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have" (apify.com/apify/facebook-pages-scraper, checked 2026-09-09). A Free-plan account pays $12.00 for the same thousand pages.
The gap between what is advertised and what a new account pays:
| Actor | Listing headline (Business) | Free plan | Multiple |
|---|---|---|---|
| Posts Scraper | $2.00 / 1,000 | $5.00 / 1,000 | 2.50x |
| Pages Scraper | $5.40 / 1,000 | $12.00 / 1,000 | 2.22x |
| Groups Scraper | $2.60 / 1,000 | $5.00 / 1,000 | 1.92x |
| Comments Scraper | $1.40 / 1,000 | $2.50 / 1,000 | 1.79x |
| Marketplace Scraper | $2.60 / 1,000 | $6.20 / 1,000 | 2.38x |
Headline figures spot-checked against each listing page on 2026-09-09; the per-tier rates come from the same Store API response. Each listing's Pricing tab shows a column per plan. Estimate from your own column, not from the card.
What does a real monitoring job cost?
Take a concrete job: 20 competitor Pages, 50 posts each, once a week. That is 1,000 posts per run and roughly 4.33 runs a month.
| Plan | Rate per post | Cost per run | Per month | Fits inside included usage? |
|---|---|---|---|---|
| Free ($0, $5 credits) | $0.005 | $5.00 | $21.65 | No. One run empties the month's credits. |
| Starter ($19, $19 credits) | $0.004 | $4.00 | $17.32 | Yes, with about $1.70 of headroom. |
| Business ($999, $999 credits) | $0.002 | $2.00 | $8.66 | Yes, trivially. |
Each run also carries a flat $0.001 actor-start charge, which rounds away at this volume. Starter is $19/month subject to change · verified 2026-09-09 billed monthly, $17 billed annually, and the subscription fee doubles as the credit balance rather than sitting on top of it (apify.com/pricing, checked 2026-09-09).
The date filter is a separate charge. Setting onlyPostsNewerThan or onlyPostsOlderThan fires a billable filter-applied event on top of the post charge: $0.002 per post on the Free plan, $0.001 on Starter. On the weekly job above that turns $21.65 a month into $30.31, a 40% increase for a filter most people assume is free. The Comments Scraper carries the same add-on, where $0.002 on a $0.0025 comment is an 80% surcharge.
Cheaper alternative: leave the date filter off, set resultsLimit low, and drop old posts in your own code after the export. You pay for the same rows either way; you just skip the add-on event.
If your monthly Facebook volume is under about 1,000 posts, stay on the Free plan and its $5 of monthly credits. Above that, Starter pays for itself on this job alone.
How do you run one?
- Open the Actor. Start from the object you want, not from a search. For post monitoring that is the Facebook Posts Scraper.
- Check the target logged out. Open the Page in a private window. What you see there is what the Actor sees. This one step prevents most empty runs.
- Fill
startUrls. The field takes an array of objects, each with aurlkey, for examplehttps://www.facebook.com/humansofnewyork/. - Set
resultsLimit. Leave it unset and there is no limit, which under pay-per-event means no cost ceiling. Set it on the first run. - Run it, then open Billing. The run detail page itemises every charged event, so you can confirm the per-post rate your account actually got before you scale up.
- Export. Storage gives you JSON, CSV, Excel and XML.
How do you call it from the API?
One request, blocking, rows returned inline. Replace the token and the Actor name:
curl -X POST \
"https://api.apify.com/v2/acts/apify~facebook-posts-scraper/run-sync-get-dataset-items?token=APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"startUrls": [{ "url": "https://www.facebook.com/humansofnewyork/" }],
"resultsLimit": 20
}'
run-sync-get-dataset-items returns HTTP 408 if the run passes 300 seconds (docs.apify.com, checked 2026-09-09). For anything larger, start the run asynchronously and poll, which the Apify API tutorial walks through end to end.
How do you run it on a schedule?
Save the input as a Task, then attach a Schedule. Tasks and schedules covers the mechanics.
One caveat before you fan out across many Pages at once. Apify's own two sources disagree on Free-plan concurrency: apify.com/pricing lists 5 concurrent runs, while docs.apify.com/platform/limits lists 25 (both checked 2026-09-09). Starter, Scale and Business agree at 32, 128 and 256. Assume 5 when you design a Free-plan schedule, and confirm on your account's Limits page before you depend on it.
What can these Actors not get?
Public content only, and the boundary is not a policy this site invented. The Groups Scraper listing states it directly: "Only public Facebook groups can be scraped… Private group scraping would require login credentials, which goes against Facebook's Terms of Service" (apify.com/apify/facebook-groups-scraper, checked 2026-09-09).
So: no private groups, no friends-only posts, no Messenger, no follower lists that Facebook hides from logged-out visitors, no account you do not own.
When Meta's own APIs are the better tool. If you administer the Page, the Graph API gives you post-level insights, reach and demographics that no scraper can see, because that data is never rendered publicly. It requires an app and a token: "Almost all endpoints of the Graph API require an access token of some kind" (developers.facebook.com, checked 2026-09-09). Scrapers win when you need data on Pages you do not control. For your own Pages, use the Graph API and skip the per-row cost entirely.
Meta's Terms of Service and your local law still apply, and nothing here is legal advice. Our scraping legality overview has the framing to take to counsel.
Why do runs come back empty?
Three causes, in the order they actually happen.
- The target is not public. Confirm in a logged-out browser. This is most of it.
- The URL shape is wrong. A Posts Scraper wants a Page URL, not a single post permalink; a Comments Scraper wants the post URL, not the Page.
- Facebook served a challenge instead of content. Apify's own anti-scraping guide lists the mechanisms sites use: IP rate limiting, header checking and browser fingerprinting, which it calls "one of the most successful and advanced methods" (docs.apify.com/academy/anti-scraping, checked 2026-09-09).
We have not measured a block rate for Facebook, and we are not going to publish a number we did not measure. What we can say is that the official Actors manage proxying internally, so there is no proxy field to tune on most of them. If runs degrade, reduce the URL list and the results limit rather than reaching for a setting that is not exposed. The anti-scraping techniques guide explains what the other side is doing.
What changed, and when
Worth reading if you are following an older tutorial. The billing model under these Actors was rebuilt between July 2025 and September 2026, so anything written before that describes a product that no longer exists. All dates from pricingInfos on api.apify.com/v2/acts/apify~<name>, read 2026-09-09.
| Date | Change |
|---|---|
| 2025-07-31 | Posts, Comments, Groups and Reviews Scrapers dropped flat monthly rental ($35, $40, $45 and $30) for pay-per-event. |
| 2026-03-04 | Pages Scraper and Ads Library Scraper moved from per-dataset-item to pay-per-event. |
| 2026-09-01 | Pages Scraper added a second billable event, page, for results returned through the Standby API. |
Any guide quoting "$35/month for the Facebook Posts Scraper" predates July 2025. The monthly rental is gone; you now pay per row.
What fields come back?
These are the keys in the Facebook Pages Scraper's own sample output (apify.com/apify/facebook-pages-scraper, checked 2026-09-09). Blank fields mean the Page did not publish that detail, not that the run failed.
| Field | What it holds |
|---|---|
facebookUrl | Canonical Page URL |
title | Page name |
pageId | Facebook's internal Page ID |
likes, followers | Like and follower counts |
email, phone, address, website | Contact block, only when the Page publishes it |
intro, categories | Bio text and Page classification |
profilePictureUrl, coverPhotoUrl | Image URLs |
creation_date | When the Page was created |
ad_status | Whether the Page is currently running ads |
rating | Star rating, when the Page has reviews enabled |
messenger | Messenger contact link |
For local-business research, the contact block is the whole reason to pay $0.012 a page rather than $0.005 a post. The other Actors return different shapes, so read each listing's output example before you build a schema on top of it.
Start with one Page
Run the Facebook Posts Scraper against a single competitor Page with resultsLimit: 20. That costs $0.10 on the Free plan and tells you within a minute whether the data is the shape you need. Scale after, not before.
The usual objection is that the free credits will vanish on the first attempt. At $0.005 a post, the $5 free credit covers roughly 1,000 posts before you have entered a card.
It depends on the object and your plan. The Facebook Posts Scraper charges $0.005 per post on the Free plan and $0.002 on Business, plus $0.001 per run start. The Pages Scraper charges $0.012 per page on Free and $0.0054 on Business. All rates read from api.apify.com/v2/store on 2026-09-09.
The headline 'from $X / 1,000' on an Apify listing is the Business-plan rate. Free-plan accounts pay 1.8x to 2.5x that, depending on the Actor. The Pricing tab on each listing shows a column per plan, which is the number to budget from.
No. The Facebook Groups Scraper listing states that only public groups can be scraped, because private groups would require login credentials, which conflicts with Facebook's terms. No official Apify Facebook Actor authenticates.
No. onlyPostsNewerThan and onlyPostsOlderThan fire a separate billable event. On the Posts Scraper that is an extra $0.002 per post on the Free plan, on top of the $0.005 post charge. Filtering after export costs nothing.
Yes, if you administer the Page. The Graph API returns reach, impressions and demographics that are never rendered publicly, so no scraper can reach them. It needs an app and an access token. Scrapers are for Pages you do not control.
The Facebook Marketplace Scraper, at $0.0062 per listing on the Free plan and $0.0026 on Business. Requesting full listing details fires a second event at the same rate, which doubles the per-listing cost.
Common mistakes and fixes
The run finishes but the dataset is empty.
Open the target URL in a logged-out browser first. If Facebook shows a login wall there, the Actor sees the same wall and there is nothing to extract. Private groups and friends-only posts always fail this test.
The bill is higher than the price on the Actor listing.
The headline 'from $X / 1,000' on a listing is the Business-plan rate. Free-plan users pay roughly 1.8x to 2.5x that. Check the Pricing tab, which shows a column per plan.
Costs jumped after I added a date range.
onlyPostsNewerThan and onlyPostsOlderThan trigger a separate billable event. On the Posts Scraper that adds $0.002 per post on the Free plan, on top of the $0.005 post charge.
I need data behind a login.
No official Apify Facebook Actor authenticates. Use Meta's Graph API for Pages you own or manage, or the Ad Library for advertising data.