Apify Facebook Scraper Alternative: Cost per 1,000 Results, Measured

1,000 Facebook page posts cost $5.00 on Apify's Free tier and $0.056 in our live test. We also measured comments, Marketplace, search and page profiles.

Illustration: on the left, a conveyor belt moves photo cards through a gate, and each card drops one gray coin into a glass jar that is almost full. In the middle, a cork board holds post cards and price tags. On the right, a drawer pulls out a full stack of the same cards, and its handle holds only one teal coin. A dashed line on the floor separates the two sides to show two billing models.

The most used Facebook scraper in the Apify Store is Facebook Posts Scraper by Apify, with 18,261 users in 30 days. It lists 1,000 page posts at $5.00 on the Free tier and $2.00 on the Gold tier. On November 7, 2026, one call to the EveryInfra facebook/user_posts capability returned 50 posts for $0.002778, which is $0.0556 per 1,000. That is 90 times less than Apify Free and 27 times less than the cheapest Store post scraper with 100+ monthly users ($1.50). Comments came to the same $0.0556 per 1,000, and Marketplace listings to $0.0077. Apify wins in two places.

Keyword search cost us $2.91 per 1,000, and one Store search scraper costs $1.90. For page profiles, the Apify Diamond tier ($2.00) beats our $2.78. Also, our post and comment calls stop at 50 rows with no next page. Deep history on one page still needs a tool like Apify.

"Cost per 1,000" here means the charge in the response (charged_usd) divided by the unique rows returned, times 1,000. EveryInfra charges per request: 1 row or 50 rows cost the same, except keyword search, which charges per block of 10 rows. Apify Store scrapers charge per result, a model Apify calls pay per event. For Apify we used only public material: Store pages, the pricing page, the docs and the public endpoint api.apify.com/v2/acts/<author>~<name>, which needs no account. We did not sign up or run its actors (Apify's name for cloud scrapers). So Apify numbers are public unit prices, and our numbers are live charges.

Illustration of three trays side by side. The left tray holds one card and one gray coin, which shows one result per charge. The middle tray holds a tall stack of cards and only one teal coin, which shows a full page for one charge. The right tray is empty, and a gray coin jumps back into a small cup, which shows a refund for a failed request.
With per-call billing, a capability that returns a full page has the lowest cost per 1,000, and a request with no data costs nothing. Illustration made for EveryInfra

Apify Facebook scraper vs EveryInfra: the summary table

The table holds two kinds of numbers only: Apify Store unit prices (read at 00:15 Singapore time on November 7, 2026, with the tier in each cell) and our live calls (Singapore time, capability, rows, charge). Apify tiers follow the plan. The pricing page lists Free ($5 of monthly usage), Starter at $19 (Bronze tier), Scale at $199 (Silver) and Business at $999 (Gold); Platinum and Diamond are custom contracts. We fixed the "cheapest in Store" rule before we saw results. The Store search endpoint gave 195 Facebook items. From those, we took the one with 100+ users in 30 days and the lowest Free price.

DataApify official (30-day users)Official per 1,000: Free / Gold / DiamondCheapest in StoreEveryInfra capabilityLive call (SGT, rows, charge)Ours per 1,000Official Free / ours
Page postsPosts Scraper (18,261)$5.00 / $2.00 / $0.80, +$0.001 per startcurious_coder, $1.50facebook/user_posts00:28:54, 50 rows, $0.002778$0.055690x
CommentsComments Scraper (5,458)$2.50 / $1.40 / $0.40, +$0.001 per startthedoor, dami_studio, $0.25facebook/comments00:31:04 and 00:31:54, 100 rows, $0.005556$0.055645x
MarketplaceMarketplace Scraper (1,092)$6.20 / $2.60 / $0.80; details extracurious_coder, $0.50facebook/marketplace00:30:14, 181 unique rows, $0.001389$0.0077808x
Keyword searchSearch Scraper (1,597)$6.00 / $3.00 / $2.00, +$0.001 per startmemo23, $1.90, +$0.005 per startfacebook/search00:33:17 and 00:34:58, 11 rows, $0.032$2.912.1x
Page profilesPages Scraper (9,130)$12.00 / $5.40 / $2.00premiumscraper, $3.00facebook/profile00:34:04, 1 page, $0.002778$2.7784.3x
Horizontal bar chart on a log scale of US dollars per 1,000 results in five groups. Page posts: Apify official Free $5.00, Gold $2.00, cheapest in Store $1.50, EveryInfra $0.056. Comments: $2.50, $1.40, $0.25 and $0.056. Marketplace: $6.20, $2.60, $0.50 and $0.0077. Keyword search: $6.00, $3.00, $1.90 and $2.91. Page profiles: $12.00, $5.40, $3.00 and $2.78. EveryInfra bars are teal. In the last two groups the gap is small or Apify is cheaper.

Read the ratios with care. The fields differ, so a ratio compares the cost of one result, not its content. Each scenario below shows our fill rates and the field list that each Apify page publishes. Apify bills also include start fees, date-filter add-ons, the $5 Free cap and repeated runs, while our number is the real charge over real rows. And the large ratios come only from capabilities that return a full page per call. Search (per block of 10) and profiles (one per call) drop to 1 to 4 times. There, a cheap Store scraper or a large Apify tier costs less than we do.

How we tested and how we calculated

All calls ran on November 7, 2026, from 00:16:18 Singapore time. Our test key allowed 10 requests per minute and was shared, so we spaced requests by at least 8 seconds and waited out every retry_after. We fixed targets in advance: the National Geographic page for posts and comments, "iphone 15" in New York for Marketplace, and two lifestyle phrases for search.

Calls 1 and 2 were errors we made on purpose (no key, a misspelled parameter). Calls 3 to 12 hit a temporary outage, which we treat as data in the failure section.

#Singapore timeCapabilityResultRowsCharge
100:16:18facebook/user_posts (no key)401 missing_key0$0
200:16:25facebook/user_posts ("limt" typo)422 unknown_param, did you mean limit0$0
3–1200:16:33–00:27:39user_posts, marketplace, search5 x 503, 5 x 4290$0
1300:28:54facebook/user_posts (natgeo, async)Success, about 72 s50$0.002778
1400:30:14facebook/marketplace (iphone 15, nyc, 200)Success, 25.3 s181 unique$0.001389
1500:31:04facebook/comments (993-comment post)Success, about 42 s50$0.002778
1600:31:54facebook/comments (718-comment post)Success, about 75 s50$0.002778
1700:33:17facebook/search (air fryer recipe, 10)Success, 20.3 s6$0.016
1800:34:04facebook/profile (natgeo, async)Success, about 46 s1$0.002778
1900:34:58facebook/search (meal prep ideas, latest, 20)Success, 26.8 s; 1 block charged, 1 refunded5$0.016

One formula covers every cost per 1,000: total charge divided by unique rows, times 1,000. Posts and listings are unique by id; comments by comment_url (the comments section explains why). Failed calls add cost and no rows, so they can only make us look worse. For Apify, we read pricingInfos (the price of each event on each tier) and stats (30-day users and run outcomes) from each public endpoint, and multiply the per-result event price by 1,000. Start, date-filter and detail fees stay on separate lines.

How Apify prices its Facebook scrapers

The Apify doc Actors in Store says each Store scraper uses either pay per event (the author prices events such as one result or one start) or pay per usage (you pay platform compute, storage and proxies). Most pay-per-event scrapers include platform usage, but some charge it on top. All 14 Facebook scrapers we read use pay per event.

Apify's own five Facebook scrapers share one structure: a main event per result, a $0.001 start fee and optional add-ons. In the Posts Scraper endpoint, the post event costs $0.005, $0.004, $0.0025, $0.002, $0.0016 and $0.0008 on the six tiers. A date range adds a filter-applied event per post, $0.002 on Free, so 1,000 posts go from $5.00 to $7.00. People who want "posts from the last 7 days" are the ones who pay this add-on.

Tier (plan)PostsCommentsMarketplaceKeyword searchPage profilesDate filter (posts)
Free ($0, $5 usage)$5.00$2.50$6.20$6.00$12.00$2.00
Bronze (Starter, $19)$4.00$2.00$5.00$5.00$8.20$1.00
Silver (Scale, $199)$2.50$1.70$3.80$4.00$6.50$0.80
Gold (Business, $999)$2.00$1.40$2.60$3.00$5.40$0.60
Platinum (custom)$1.60$0.90$1.50$2.50$4.00$0.40
Diamond (custom)$0.80$0.40$0.80$2.00$2.00$0.20
EveryInfra, measured$0.0556$0.0556$0.0077$2.91$2.778None
Line chart. The x-axis shows the six Apify tiers from Free to Diamond and the y-axis shows US dollars per 1,000 results on a log scale. Gray lines show posts falling from $5.00 to $0.80, comments from $2.50 to $0.40 and Marketplace from $6.20 to $0.80. Teal dashed lines show EveryInfra at $0.056 for posts and comments and $0.0077 for Marketplace, flat across tiers and below the gray lines.

Apify gives discounts to higher plans: Business at $999 per month still pays $2.00 per 1,000 posts, and $0.80 needs a custom contract. On Free, $5 covers about 1,000 posts. The pricing page says a Free account stops when its credit runs out, while paid plans carry the excess to the next invoice. Tier discounts are optional for third-party authors, so many cheap Store scrapers (curious_coder Marketplace at $0.50, for example) cost the same on every tier.

Why do scrapers for the same data differ by 10 times? The pay-per-event guide for authors says authors keep 80% of event revenue and pay the platform cost, while Apify covers the cost of Free users. Authors can also pass platform usage on to users, with 14 days of notice. The rest is our inference, because we have no cost data from any author. A scraper that renders pages in a browser costs more to run than one that reads JSON, so its price is probably higher.

For you, the point is simple: compare several scrapers for the same data. The price gap comes mostly from how each author builds the scraper, not from data quality.

One Apify cost is hard to size from public pages: reading and exporting a dataset after the run counts as platform usage. The pricing page lists $0.0004 per 1,000 dataset reads and $0.005 per 1,000 writes. For 1,000 results that is a fraction of a cent, so it does not move any ratio here. Teams that keep months of results on Apify will see it as a storage line. We leave it out of the tables and mention it once.

Scenario 1: 1,000 page posts (Apify Facebook Posts Scraper)

The catalog lists facebook/user_posts at $0.002778 per call, async, default 10 rows, maximum 50. We sent the request at 00:28:54 Singapore time, got a job_id at once and polled every 8 seconds. The job finished at about 00:30:06 with 50 unique posts from October 28 to November 6, 2026 (UTC). That is every post on the page in 10 days. Cost: $0.0556 per 1,000.

bash
curl -s https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"facebook","action":"user_posts","mode":"async",
       "params":{"url":"https://www.facebook.com/natgeo","limit":50}}'
# Returns 202 and a job_id at once and charges $0.002778.
# Then GET /api/v1/jobs/<job_id> to read the 50 posts.

Eleven of the 50 posts are Reels, and only those 11 carry view_count. The top Reel (November 3, UTC) had 2,447,538 views and 65,875 likes. The photo post with the most comments (993) asked people to look through their camera roll; we used it for the comment test. Fill rates: text 96%, media 92%, link 76%, comment_count 98%, group_name 0% (page posts have no group), and 100% for the other 13 fields. Photo and link posts had a median of 1,142 likes.

The official Posts Scraper charges $5.00 per 1,000 on Free plus $0.001 per start. The cheapest Store option with 100+ users is the curious_coder post scraper. It charges $1.50 plus a start fee and has a public rating of 3.06 out of 5. We cost 90 times less than official Free, 36 times less than Gold, 14.4 times less than Diamond and 27 times less than curious_coder.

The limit matters as much as the price. user_posts returns the latest 50 posts, with no next page. To reach 1,000 posts you need 20 pages, or daily calls over time. For "every post on this page in two years", the Apify Posts Scraper takes a row count and a date range; its page says 500 posts in under 2 minutes. We cannot do deep history on one page today. Our fit is wide monitoring: many pages, the newest posts, every day.

Scatter chart. The x-axis is post time from October 28 to November 6, 2026 and the y-axis is likes on a log scale. Fifty dots show the latest 50 posts on the National Geographic page. Eleven Reels are teal and other posts are gray. The top Reel has 65,875 likes, posted November 3 (UTC). Photo and link posts have a median of 1,142 likes, from 83 to 10,588.

Monitoring changes the math. This page posts about 5 times per day, so a daily call returns about 5 new posts and 45 repeats. Counted on new posts only, we pay $0.002778 for 5, about $0.56 per 1,000. On Apify you can set the limit to 5 and pay for 5 results plus one start. That is $0.026 per page per day on Free, $0.011 on Gold and $0.005 on Diamond. We still cost 9.4, 4 and 1.8 times less.

Now take a page that posts once a day. Apify Free costs $0.006 per day, and we cost 2.2 times less. Apify Diamond costs $0.0018 per day and beats our $0.002778. Quiet pages and high Apify tiers shrink our lead; busy pages and small volumes grow it.

Scenario 2: 1,000 comments (Apify Facebook Comments Scraper)

We tested two natgeo posts that showed 993 and 718 comments. Each facebook/comments call returned the full 50 rows for $0.002778, so 100 rows cost $0.005556, or $0.0556 per 1,000. The first call held 30 top-level comments, 18 replies and 2 replies to replies; the second held 11, 21 and 18. The 50-row allowance mixes levels.

We found a problem on our side. In a reply row, id holds the parent comment ID and the reply's own ID is in reply_to_id, the opposite of what the names suggest. Deduplicate by id and the first call drops to 30 rows. All 50 comment_url values were unique (a reply URL adds reply_comment_id), so deduplicate by comment_url. We logged the field names for a fix.

Stacked horizontal bar chart with one bar of 50 comments per post. Post showing 993 comments: 30 top-level, 18 replies, 2 replies to replies. Post showing 718 comments: 11 top-level, 21 replies, 18 replies to replies. A note says deduplication by id leaves 30 and 11 rows, and by comment_url 50 and 50.

The official Facebook Comments Scraper costs $2.50 per 1,000 on Free and $0.40 on Diamond, and can sort and filter by date (filter at extra cost). The thedoor and dami_studio scrapers cost $0.25 (we took the dami_studio price and users from its public API, not from its Store page). The thedoor page says it gets every comment a logged-out visitor can see. It also says it gets more than 10,000 comments from one large post in about 15 minutes. Repeat runs charge only for new comments.

We cost 45 times less than official Free, 7.2 times less than Diamond and 4.5 times less than thedoor. But our 50 rows covered only 5.0% of the 993 comments and 7.0% of the 718. For every comment under one viral post, choose thedoor. For a daily sample of fresh comments on many posts, we cost less.

What do the 100 comments say? We read every row and sorted them by hand. One comment can fit more than one group.

The first post asked people for their favorite nature subject in their camera roll. Its 30 top-level comments were almost all positive. Of these, 16 named landscapes, sky, trees or water, and 12 named animals or pets. The other 7 named subjects such as buildings, people or a backyard. The 20 replies were mostly short praise with 7 likes in total. Two replies said that a shared photo looked AI-generated.

The second post covered a study. In one US region, strokes in adults aged 20 to 54 nearly doubled over three decades. Researchers are checking a possible link to cannabis. Of its 11 top-level comments, 6 defended cannabis (4 with personal stories), 3 turned the topic to alcohol, and 2 were jokes. The median top-level comment had 87 likes, more than 12 times the 7 on the first post. The 39 replies were mostly arguments, and 1 was in Spanish.

So 50 comments can carry very different moods. Count sentiment per post, not as one average for a whole page. We did not keep commenter names in our analysis table.

Here is a common pattern. Each morning, a brand team picks the 20 most commented competitor posts and pulls 50 comments from each. An AI model then sorts them into praise, complaints and questions. That is 20 calls, $0.0556 a day, or about $1.67 a month. The same 1,000 comments a day on the official Apify Free tier would be $2.50 a day before start fees. For this job the 50-row cap is not a problem, because the newest and most active comments are the ones the team reads.

Scenario 3: 1,000 Marketplace listings

One sync call (New York, iphone 15, limit 200) took 25.3 seconds and returned 200 rows, 181 unique, for $0.001389: $0.0077 per 1,000. Listings were in New York State (105), New Jersey (69), Pennsylvania (5) and Connecticut (2). The 134 iPhone 15 listings priced at $100 or more had a median of $459.50. By model: base $400 (56 listings), Pro $489 (33) and Pro Max $550 (37). If you price used phones around New York, that snapshot cost a fraction of a cent.

FieldFill rate (181 rows)Note
id, url, name, price, city, state, image_url100%Price is a string, such as "459.50"
currency0%Empty in every row
condition0%Read it from the title
posted_at0%Cannot sort by age

The catalog lists these three fields, and none came back. The official Marketplace Scraper page lists price ranges, location, seller, status (Sold, Live, Pending) and delivery type. Its listing-details add-on charges the list price again per listing.

The curious_coder scraper (654 users, rating 4.92) shows coordinates, ZIP code, sold status and seller ID. On our side, details mean one facebook/marketplace_item call per listing at $0.000958, so list plus details comes to about $0.966 per 1,000. That is above curious_coder's $0.50 list price, and 12.8 times below the official scraper with details ($12.40). For list rows only, we cost 808 times less than official Free and 65 times less than curious_coder.

Scenario 4: keyword post search with a Facebook scraper API

facebook/search costs $0.016 per block of 10 rows (rows_per_unit is 10). At 00:33:17 Singapore time, "air fryer recipe" with limit 10 returned 6 posts in 20.3 seconds and charged one block. At 00:34:58, "meal prep ideas" (latest, limit 20) returned 5 posts in 26.8 seconds. The response showed 2 blocks reserved, 1 billed and 1 refunded at once. Together: 11 rows, $0.032, or $2.91 per 1,000.

The official Search Scraper costs $6.00 per 1,000 on Free, $3.00 on Gold and $2.00 on Diamond. The memo23 search scraper costs $1.90 plus a $0.005 start.

So we cost 2.1 times less than official Free, about the same as Gold, and more than Diamond and memo23. Two reasons: a half-full block costs a full block, and Facebook search returned few posts (6 of 10, 5 of 20). Full blocks would put us at $1.60, but our test did not show that, so we do not claim it. Most authors in the results are private people, so we do not show names. Of 11 posts, 8 were from the last 30 days.

Page profiles: the Apify Diamond tier beats us

A profile call returns one page, so per-call billing gives no edge: $2.778 per 1,000 pages. At 00:34:04 Singapore time the natgeo profile returned in about 46 seconds with name, bio, categories, 51,441,764 followers and website. is_verified, phone, email and rating were empty, and like_count came back as 0, which looks like a missing value. The official Pages Scraper costs $12 per 1,000 on Free (416 pages fit the Free plan), $5.40 on Gold and $2.00 on Diamond (endpoint).

We cost 4.3 times less than Free and 1.9 times less than Gold. But Diamond is 1.39 times cheaper than us, and premiumscraper ($3.00) is only 8% above us. For bulk business profiles with phone and rating, a large Apify customer should stay on Apify.

The basket: 1,000 posts, 1,000 comments, 1,000 listings

A brand-monitoring team needs 1,000 competitor posts, 1,000 comments and 1,000 used-price listings a month. Apify official on Free: $5.00 + $2.50 + $6.20 = $13.70. On Gold: $6.00, after a $999 plan fee. On Diamond: $2.00. Cheapest Store mix: $1.50 + $0.25 + $0.50 = $2.25.

EveryInfra at measured rows: 20 post calls ($0.0556), 20 comment calls ($0.0556) and 6 Marketplace calls ($0.0083), or $0.119. That is 115 times less than official Free, 16.7 times less than Diamond and 18.8 times less than the cheapest mix.

Horizontal bar chart of the API cost for 1,000 posts, 1,000 comments and 1,000 Marketplace listings. Apify official Free $13.70, Apify official Gold $6.00, cheapest Store mix $2.25, Apify official Diamond $2.00, EveryInfra at measured rows $0.119 in teal.

The conditions: 20 different pages, 20 different posts and 6 different searches, because the same request within 5 minutes returns the earlier result. If 1,000 posts must come from one page, we cannot fill this basket. And the $5 Free plan cannot run a $13.70 basket; Starter on Bronze prices costs $11.00.

Facebook scraper API: how each side is called

On Apify you start a run and read its dataset, or use the sync endpoint that does both:

python
# Apify: run the official Posts Scraper (config example, not run by us)
import requests, os
r = requests.post(
    "https://api.apify.com/v2/acts/apify~facebook-posts-scraper/run-sync-get-dataset-items",
    params={"token": os.environ["APIFY_TOKEN"], "maxTotalChargeUsd": 0.50},
    json={"startUrls": [{"url": "https://www.facebook.com/natgeo"}], "resultsLimit": 50},
    timeout=300,
)
posts = r.json()  # $0.005 per post on Free, plus $0.001 per start

We have no Apify account, so the input names come from the Store page and this is a configuration example. On EveryInfra it is one POST /api/v1/social; async capabilities return a job_id to poll. This script exports comments from many posts to CSV with the standard csv module, deduplicated by comment_url:

python
# Export comments from several Facebook posts to comments.csv
import csv, json, os, time, urllib.request

KEY = os.environ["EVERYINFRA_API_KEY"]
API = "https://api.everyinfra.com"

def call(path, body=None):
    req = urllib.request.Request(API + path, data=json.dumps(body).encode() if body else None,
        headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"},
        method="POST" if body else "GET")
    with urllib.request.urlopen(req, timeout=120) as r:
        return json.loads(r.read())

def comments(post_url):
    job = call("/api/v1/social", {"platform": "facebook", "action": "comments", "mode": "async",
                                  "params": {"url": post_url, "limit": 50}})
    while True:
        time.sleep(8)
        res = call(job["poll_url"])
        if res["status"] in ("succeeded", "failed"):
            return res.get("results", [])

seen, rows = set(), []
for url in open("post_urls.txt").read().split():
    for c in comments(url):
        if c["comment_url"] not in seen:
            seen.add(c["comment_url"])
            rows.append({k: c.get(k) for k in ("comment_url", "depth", "text", "like_count",
                                                "reply_count", "posted_at")})
with open("comments.csv", "w", newline="", encoding="utf-8") as f:
    w = csv.DictWriter(f, fieldnames=rows[0].keys())
    w.writeheader(); w.writerows(rows)
print(len(rows), "comments")
Screenshot of API responses. Top: the 202 response to facebook/user_posts at 00:28:54, with charged_usd 0.002778 in a teal box. Middle: the 200 response to facebook/marketplace at 00:30:14, with count 200 and charged_usd 0.001389 in boxes and the image URL truncated. Bottom: the 503 unavailable response at 00:16:33, with Not charged in next_steps and charged_usd 0 in boxes.
Three real responses: success charges per call; failure shows Not charged and a charge of 0 (excerpts of our raw responses, Singapore time, November 7, 2026). EveryInfra raw API responses

Beyond price, three things differ. Parameters: each Apify scraper has its own input names, while our 16 Facebook capabilities share one format. A wrong name returns 422 with did_you_mean (call 2 in our table).

Output: Apify samples keep raw Facebook structures such as textReferences and feedbackId, while we return 19 post fields and 13 comment fields ready for CSV. Speed: by their own pages, Apify scrapers are built for big runs, and thedoor claims up to 1,300 comments per minute. Our calls took 20 to 75 seconds, about 40 posts or 40 to 70 comments per minute. That suits daily jobs of a few dozen rows per page. We did not measure the Apify claims.

Apify also limits parallel work. Its limits doc allows 5 concurrent runs on Free (32 on Starter, 128 on Scale, 256 on Business) and 100 schedules per user. To watch hundreds of pages, put many page URLs into one run instead of one schedule per page.

Stacked horizontal bar chart of catalog fields that had values in this test. Comments 13 of 13. Page posts 18 of 19, group_name empty. Keyword post search 12 of 19, with avatar, media, reactions and view count empty. Page profile 10 of 15, with verified, phone, email and rating empty. Marketplace 8 of 11, with currency, condition and post time empty. Filled parts are teal and empty parts light gray.

This chart lists our own gaps: search rows lack media and view counts, and profiles and Marketplace lack some business details. Check it before you buy.

Do failures and empty results cost money?

From 00:16:33 to 00:27:39 Singapore time, the Facebook capabilities failed 10 times: 5 times 503 and 5 times 429 (one from our shared key going over its limit). Every response had charged_usd 0 and refund.status "succeeded". On the third failure, next_steps said "3 failures in 10 minutes for facebook/search; none was charged" and offered a sample request to try first. With the 401 and 422, 12 failures cost $0.

Timeline scatter chart from 00:16 to 00:36 Singapore time on November 7, 2026, with three rows: failed, success charged per call, and success charged per 10 rows. The first 12 dots are gray in the failed row at $0. Later successful calls are teal, with charges from $0.001389 to $0.016.

On Apify, the result event charges only when a result is saved. The start event charges when the run starts, and it stays if the run fails or times out. Official scrapers charge $0.001 per start; the highest start fee we saw in the Store was $0.09. The Posts Scraper stats list 6,050,949 runs in 30 days, with 14,398 timeouts and a 99.69% success rate.

On Apify, one parameter does the most to stop overspend: maxTotalChargeUsd on the sync run endpoint. It caps the total cost of one run. For example, 1,000 posts on the official Posts Scraper Free tier cost $5.00 plus a $0.001 start fee. Set maxTotalChargeUsd to $5.50, and a bad input or a runaway row count cannot cost more than $5.50. The runs doc lists how a run can end and how to continue a finished run with its storage. Some scrapers charge start fees by memory; the resources doc lists the memory sizes.

One more cost trap is storage time. The dataset docs say unnamed datasets expire after 7 days, while named datasets stay. Do this: export or name your dataset within 7 days of the run. If you do not, you must run the scraper again and pay for the results again. Our async results are also short-lived, so save them to your own database when you get them.

Both sides charge nothing for results that do not exist; we also have no start fee. Our failure responses also tell an AI agent what to do next. retry_after gives the wait in seconds, and retryable says whether a retry makes sense. next_steps says whether the call was charged and when a ticket is useful. An agent that reads these fields can back off on its own instead of looping, which matters when nobody watches the run. For search, set limit to a multiple of 10 so blocks can fill.

Connect MCP and AI tools

The Apify MCP docs give https://mcp.apify.com, with OAuth or a token. With it, an AI can search the Store, run actors and read results. The apify-mcp-server repo had a commit on November 6, 2026, and 15,051 stars on November 7, 2026. Our server is https://api.everyinfra.com/mcp. A free tools/list call returned 12 tools, including everyinfra_call_api and everyinfra_get_job. In Claude Code, per the Claude Code MCP docs:

json
{
  "mcpServers": {
    "everyinfra": {
      "type": "http",
      "url": "https://api.everyinfra.com/mcp",
      "headers": { "Authorization": "Bearer ${EVERYINFRA_API_KEY}" }
    }
  }
}

Then ask: "Pull the latest 50 natgeo posts, take the 3 with the most comments, get 50 comments each, dedupe by comment_url and summarize." That is one post call and three comment calls, $0.011112 at today's prices.

Both servers follow the Model Context Protocol. With per-call prices, the most one call can cost is $0.016. With per-result prices, set a cap such as maxTotalChargeUsd, as the thedoor page advises for AI use.

Graph API or open-source code: can you do it yourself?

The Meta Page Feed reference requires a task on the page, such as create content, manage or moderate. For pages you do not manage, you need Page Public Content Access with App Review and business verification. Even then, it returns about 600 ranked posts per year and at most 100 per request.

Open-source code is the other route. The best-known library is kevinzg/facebook-scraper, with 3,323 stars. But it has had no commit since June 22, 2024, and its latest PyPI release, 0.2.59, dates from August 31, 2022. In How We Combat Scraping, Meta describes a team of 100+ people that uses rate limits, data limits, bot detection, account bans and lawsuits. A homemade scraper spends most of its time on those defenses. If you stay on Apify, its Python client retries 429 and 5xx errors with backoff.

Meta terms and public page scraping: what to watch

This is not legal advice; it lists what public documents say. Section 3.2 of the Meta Terms forbids automated collection without prior permission, "regardless of whether" you are logged in. The notice at the top of robots.txt says the same and blocks crawlers such as ClaudeBot and GPTBot.

Screenshot of the first lines of facebook.com/robots.txt. A teal box marks the notice that collection of data on Facebook through automated means is prohibited unless you have express written permission from Facebook. User-agent and Disallow lines follow.
The notice at the top of facebook.com/robots.txt (read November 7, 2026). Meta

US courts have been less one-sided. On January 23, 2024, a federal court in Northern California ruled against Meta in its case against a data company (case 3:23-cv-00077). Meta's contract claim on logged-out scraping failed. hiQ v. LinkedIn (2022) and Van Buren (2021) also lean toward public pages needing no authorization. These are US rulings on specific claims, not a general permission.

Personal data is a separate risk. The GDPR applies to public personal data, and in November 2022 the Irish regulator fined Meta 265 million euros over scraped Facebook data. In October 2024, 17 privacy regulators issued a follow-up joint statement. It asks platforms to update anti-scraping measures. It also says that permitted commercial scraping must be lawful and follow strict contract terms.

Keep only the fields you need; for sentiment counts, keep text and time, not author names. In practice, three habits cover most of the risk. Drop author_name, author_url and avatar links at import time if your analysis does not need them. Set a retention period for raw rows and keep only the aggregates after it. And write down, in one paragraph, why you collect each field. That note helps if you must show that your use is lawful, which the joint statement asks of permitted scraping.

Approved channels exist if you qualify. Page Public Content Access needs App Review. The Meta Content Library serves academic and nonprofit researchers. Its access page gives about 2 to 3 weeks of review and 2 to 3 weeks of processing.

The Content Library replaced CrowdTangle, which closed on August 14, 2024. The Bellingcat toolkit cites a SOMAR newsletter (we did not read the original) at $1,000 setup and $371 per month for a new data environment. A company that tracks competitors usually cannot use either route.

When Apify is the better choice

Use caseBetter choiceWhy
Hundreds of old posts from one pageApify Posts ScraperRow counts and date ranges; we return the latest 50
Every comment under one viral postthedoor and similarAll logged-out comments; we got 5.0% of 993
Bulk profiles on a Diamond contractApify Pages Scraper$2.00 per 1,000 against our $2.778
Small keyword searchesmemo23 and similar$1.90 against our measured $2.91
Marketplace condition, seller, sold statuscurious_coder or official with detailsOur list rows lacked these fields
Existing n8n or Make flows on ApifyStay on ApifyMigration can cost more than you save
Long-tail data outside our 16 capabilitiesApify Store (3,141 results for "facebook")Our Facebook catalog has 16 capabilities

Our 16 capabilities cover search, profile, page posts, single post, comments and followers. They also cover ad creatives, group posts, Marketplace list and item, reviews, advertiser search, ad details, event search, page events and video transcripts. Inside that list, compare prices; outside it, use Apify. One Reddit user said the Apify Facebook scrapers got more expensive after a pricing change. Another user in the same r/n8n thread warned that cheap scraping may not stay stable. Our 10 errors (503 and 429) early this morning make the same point: build retries into any workflow that matters.

How this article differs from our other Apify articles

Apify pricing explained covers plans and pay per event in general. Apify alternatives covers all platforms. Apify TikTok Scraper alternative and Apify LinkedIn Scraper alternative measure other networks, and replace Apify in n8n covers workflows. This is our first item-by-item Facebook test. All options are on the alternatives page.

Recent changes

DateWhat happenedWhat to do
2026-10-15Nieman Lab reported new Meta commercial terms that let Meta crawl sites linked to business accountsIf you have a Meta business account, do not change your contracts for these terms yet
2026-10-27Graph API v26.0 changes applied to all versions, including errors for ?ids= root requestsIf you use the Graph API, search your code for ?ids= root requests and fix them
2026-10-30UK CMA opened an investigation into the Meta termsIf you work in the UK, record your data sources and uses so you can adjust if the terms change
2026-10-28 to 2026-11-07Meta paused the terms on 2026-10-28 (the start date had moved to 2026-11-20). On 2026-11-07, a Meta business help notice said the updates will not take effect on 2026-11-20, the current terms stay, and site owners can still use robots.txtTo keep Meta crawlers off your site, add Disallow rules for meta-externalagent and meta-externalads now, as the Meta crawler docs show. Two crawlers can skip robots.txt in some cases
2026-10-29 and 2026-10-31thedoor and curious_coder changed Store prices (per pricingInfos)Open the public API of the scraper and check its price again before you buy

FAQ

Is the Apify Facebook Posts Scraper free?

(From the autocomplete phrase "apify facebook posts scraper free".) Not fully. The Free plan gives $5 per month. At $0.005 per post that is about 1,000 posts minus start fees, and then the account stops until the next cycle. At our measured $0.002778 per 50 posts, $5 buys about 90,000 posts across 1,800 pages.

How many comments can the Apify Facebook Comments Scraper get?

(From the autocomplete phrase "apify facebook comments scraper".) The official page says thousands, with sorting and date filters; thedoor says more than 10,000 from one large post in about 15 minutes. Our facebook/comments returns up to 50 per call, with no next page.

Is there an open-source Facebook scraper on GitHub for Python?

(From "apify facebook posts scraper github" and "how to scrape facebook posts using python".) The best-known option is kevinzg/facebook-scraper (see the Graph API section above). It has 3,323 stars, but no commit since 2024, no PyPI release since 2022, and 447 open issues. The real cost is keeping up with page and anti-bot changes.

Is it legal to scrape Facebook data?

(From "is it legal to scrape facebook data".) This is not legal advice. Meta terms forbid automated collection without permission. In 2024, a US court did not uphold Meta's contract claim against logged-out scraping. And the GDPR applies to public personal data in the EU. Check the law where you work.

Can you scrape Facebook Marketplace?

(From "can you scrape facebook marketplace", also asked on Reddit's r/learnpython.) Meta offers no public Marketplace API for third parties. Our facebook/marketplace call returned 181 unique New York listings for $0.001389; Apify options start at $0.50 per 1,000.

Can the Facebook Graph API get page posts?

(From "facebook graph api get page posts".) Only for pages you manage, or with Page Public Content Access after review. The feed returns about 600 ranked posts per year and at most 100 per request.

Get started

  1. Sign up in the EveryInfra console, get a key and add credit on the pricing page. Failed calls and empty results cost nothing.
  2. Read the free catalog, GET /api/v1/social/catalog?platform=facebook, or the Facebook platform page. Field lists are on the capability pages for user_posts, comments, marketplace, search and post.
  3. Run the curl command above. Do not resend the same request within 5 minutes to wait for results; you get a "replayed" 202.
  4. For AI tools, follow the MCP setup page, or try calls in the browser in the data market.
  5. The same key calls the Instagram data API and 100+ other platforms with the same billing.

References

  1. Facebook Posts Scraper (Store page), Apify, read November 7, 2026, https://apify.com/apify/facebook-posts-scraper
  2. apify~facebook-posts-scraper public endpoint, Apify, read November 7, 2026, https://api.apify.com/v2/acts/apify~facebook-posts-scraper
  3. Facebook Comments Scraper (Store page), Apify, read November 7, 2026, https://apify.com/apify/facebook-comments-scraper
  4. apify~facebook-comments-scraper public endpoint, Apify, read November 7, 2026, https://api.apify.com/v2/acts/apify~facebook-comments-scraper
  5. Facebook Marketplace Scraper (Store page), Apify, read November 7, 2026, https://apify.com/apify/facebook-marketplace-scraper
  6. apify~facebook-marketplace-scraper public endpoint, Apify, read November 7, 2026, https://api.apify.com/v2/acts/apify~facebook-marketplace-scraper
  7. Facebook Pages Scraper (Store page), Apify, read November 7, 2026, https://apify.com/apify/facebook-pages-scraper
  8. apify~facebook-pages-scraper public endpoint, Apify, read November 7, 2026, https://api.apify.com/v2/acts/apify~facebook-pages-scraper
  9. apify~facebook-search-scraper public endpoint, Apify, read November 7, 2026, https://api.apify.com/v2/acts/apify~facebook-search-scraper
  10. Facebook Comments Scraper by thedoor, Apify Store, read November 7, 2026, https://apify.com/thedoor/facebook-comment-scraper
  11. dami_studio~facebook-comments-scraper public API, Apify, read November 7, 2026, https://api.apify.com/v2/acts/dami_studio~facebook-comments-scraper
  12. curious_coder~facebook-marketplace public endpoint, Apify, read November 7, 2026, https://api.apify.com/v2/acts/curious_coder~facebook-marketplace
  13. curious_coder~facebook-post-scraper public endpoint, Apify, read November 7, 2026, https://api.apify.com/v2/acts/curious_coder~facebook-post-scraper
  14. memo23~facebook-search-scraper public endpoint, Apify, read November 7, 2026, https://api.apify.com/v2/acts/memo23~facebook-search-scraper
  15. Store search endpoint (search=facebook), Apify, read November 7, 2026, https://api.apify.com/v2/store?search=facebook&limit=200
  16. Apify pricing, Apify, read November 7, 2026, https://apify.com/pricing
  17. Actors in Store, Apify docs, read November 7, 2026, https://docs.apify.com/platform/actors/running/actors-in-store
  18. Pay-per-event pricing model, Apify docs, read November 7, 2026, https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event
  19. Dataset, Apify docs, read November 7, 2026, https://docs.apify.com/platform/storage/dataset
  20. Actor runs and builds, Apify docs, read November 7, 2026, https://docs.apify.com/platform/actors/running/runs-and-builds
  21. Run Actor synchronously and get dataset items, Apify API docs, read November 7, 2026, https://docs.apify.com/api/v2/act-run-sync-get-dataset-items-post
  22. Actor usage and resources, Apify docs, read November 7, 2026, https://docs.apify.com/platform/actors/running/usage-and-resources
  23. Apify MCP server, Apify docs, read November 7, 2026, https://docs.apify.com/platform/integrations/mcp
  24. apify/apify-mcp-server, GitHub, read November 7, 2026, https://github.com/apify/apify-mcp-server
  25. apify/apify-client-python, GitHub, read November 7, 2026, https://github.com/apify/apify-client-python
  26. kevinzg/facebook-scraper, GitHub, read November 7, 2026, https://github.com/kevinzg/facebook-scraper
  27. facebook-scraper 0.2.59, PyPI, August 31, 2022, https://pypi.org/project/facebook-scraper/
  28. Meta Terms of Service, Meta, read November 7, 2026, https://www.facebook.com/terms/
  29. robots.txt, Facebook, read November 7, 2026, https://www.facebook.com/robots.txt
  30. Page Public Content Access, Meta for Developers, read November 7, 2026, https://developers.facebook.com/docs/features-reference/page-public-content-access/
  31. Page Feed, Meta for Developers, read November 7, 2026, https://developers.facebook.com/docs/graph-api/reference/page/feed/
  32. Graph API Version 26.0 changelog, Meta for Developers, updated July 31, 2026, https://developers.facebook.com/docs/graph-api/changelog/version26.0/
  33. How We Combat Scraping, Meta Newsroom, April 2021, https://about.fb.com/news/2021/04/how-we-combat-scraping/
  34. CrowdTangle, Meta Transparency Center, August 16, 2024, https://transparency.meta.com/researchtools/other-data-catalogue/crowdtangle/
  35. Meta Content Library and API, Meta Transparency Center, read November 7, 2026, https://transparency.meta.com/researchtools/meta-content-library/
  36. Get access: Meta Content Library and API, Meta for Developers, read November 7, 2026, https://developers.facebook.com/docs/content-library-and-api/get-access/
  37. Meta Platforms, Inc. case against a data company (3:23-cv-00077), US District Court, N.D. Cal. (govinfo), January 23, 2024, https://www.govinfo.gov/app/details/USCOURTS-cand-3_23-cv-00077/USCOURTS-cand-3_23-cv-00077-7
  38. hiQ Labs v. LinkedIn, Ninth Circuit, April 18, 2022, https://cdn.ca9.uscourts.gov/datastore/opinions/2022/04/18/17-16783.pdf
  39. Van Buren v. United States, US Supreme Court, June 3, 2021, https://www.supremecourt.gov/opinions/20pdf/19-783_k53l.pdf
  40. Decision in Facebook data scraping inquiry, Irish Data Protection Commission, November 28, 2022, https://www.dataprotection.ie/en/news-media/press-releases/data-protection-commission-announces-decision-in-facebook-data-scraping-inquiry
  41. General Data Protection Regulation, EUR-Lex, April 27, 2016, https://eur-lex.europa.eu/eli/reg/2016/679/oj
  42. Follow-up joint statement on data scraping, OAIC, October 29, 2024, https://www.oaic.gov.au/news/media-centre/global-privacy-authorities-issue-follow-up-joint-statement-on-data-scraping
  43. CMA opens investigation into Meta's commercial terms, UK CMA, October 30, 2026, https://www.gov.uk/government/news/cma-opens-investigation-into-metas-commercial-terms--2
  44. Meta's new commercial terms will allow the scraping of news sites, Nieman Lab, October 15, 2026, https://www.niemanlab.org/2026/10/metas-new-commercial-terms-will-allow-the-scraping-of-news-sites-legal-experts-say/
  45. Updates to Meta's Commercial Terms will not take effect on November 20, 2026, Meta Business Help Center, read November 7, 2026, https://www.facebook.com/business/help/2481113349080785
  46. Meta Web Crawlers, Meta for Developers, updated May 21, 2026, https://developers.facebook.com/documentation/sharing/webmasters/web-crawlers
  47. Limits, Apify docs, read November 7, 2026, https://docs.apify.com/platform/limits
  48. Alternative to Apify for FB scraping, Reddit r/n8n, read November 7, 2026, https://www.reddit.com/r/n8n/comments/1mlgpna/alternative_to_apify_for_fb_scraping/
  49. Facebook capability catalog, EveryInfra, read November 7, 2026, https://api.everyinfra.com/api/v1/social/catalog?platform=facebook
  50. Model Context Protocol: Introduction, modelcontextprotocol.io, read November 7, 2026, https://modelcontextprotocol.io/docs/getting-started/intro
  51. Connect Claude Code to tools via MCP, Anthropic docs, read November 7, 2026, https://code.claude.com/docs/en/mcp
  52. csv: CSV File Reading and Writing, Python docs, read November 7, 2026, https://docs.python.org/3/library/csv.html
  53. Meta Content Library, Bellingcat Online Investigation Toolkit, read November 7, 2026, https://bellingcat.gitbook.io/toolkit/more/all-tools/meta-content-library

Reference BL-106

Our own visit stats are always on. Google Analytics loads only if you choose “Allow analytics”. Privacy policy