Skip to content
    ↑↓ to choose · Enter to open

    September 24, 2026 · 15 min read

    Facebook Pages Scraper: Up to 1,000 Free Results a Month (2026)

    By Crawlerbros Engineering Team

    Records return 32 fields in the Sample Output schema, capturing page identities, follower counts, and public contact metadata. The free-plan price is $5.00 per 1,000 results, while an initial verification run with maxItems set to 10 costs at most $0.05 in result charges. Search engines and Facebook's internal discovery query businesses across keywords and locations, using residential proxies automatically. This setup serves teams mapping local markets, tracking competitor reach, or gathering public business profiles. It is not for anyone who needs private group posts or personal profile timelines, which the records do not include.

    Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 1,000 results at $0.005 each before platform usage. Open Facebook Pages Scraper on Apify and run the prefilled example.

    How reliable is Facebook Pages Scraper in production?

    Across the last 30 days of public runs on the Apify platform, Facebook Pages Scraper recorded 99 runs with the following outcomes.

    Outcome Runs Share
    Succeeded 94 94.9%
    Failed 0 0.0%
    Aborted by the user 2 2.0%
    Timed out 3 3.0%
    Total 99 100.0%

    In the last 30 days, 3.0% of runs failed or timed out, about 3 in a hundred. Schedule automated pipelines with standard retries to absorb the occasional timeout. Because zero runs failed outright, transient platform network delays represent the primary operational interruption to plan around.

    What does it cost to run Facebook Pages Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.05 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Worked example: collecting 10,000 results costs $50.00 in result charges before run-start fees and platform usage. With 3.0% of runs failing or timing out in the last 30 days, budget for re-running a portion of those batches rather than assuming every run completes.

    The primary billing driver is maxItems, which caps the total number of dataset rows written to storage. Because result charges apply only to items delivered to your dataset, setting a conservative item cap prevents excess spending during exploratory queries. Test discovery terms with maxItems set to 10 to inspect data richness before deploying large keyword lists.

    How do you run Facebook Pages Scraper from the API?

    None of its 6 controls is strictly required, so the defaults below produce a valid run on their own. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Facebook Pages Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~facebook-pages-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"searchTerms":["Coffee Shop"],"locations":["London"],"maxItems":10,"includeReviews":true,"cookies":""}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "searchTerms": [
        "Coffee Shop"
      ],
      "locations": [
        "London"
      ],
      "maxItems": 10,
      "includeReviews": True,
      "cookies": ""
    }
    
    run = client.actor("crawlerbros~facebook-pages-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "searchTerms": [
        "Coffee Shop"
      ],
      "locations": [
        "London"
      ],
      "maxItems": 10,
      "includeReviews": true,
      "cookies": ""
    }
    
    const run = await client.actor('crawlerbros~facebook-pages-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which Facebook Pages Scraper inputs matter, and which can you skip?

    The controls that govern your output volume are searchTerms, locations, and startUrls. Supplying startUrls skips search discovery entirely, while pairing searchTerms with locations queries candidate intersections. For a first run, leave includeReviews at its default and focus only on setting valid cookies and a low maxItems cap.

    • startUrls (array): Direct list of Facebook page URLs to scrape (skips keyword/location discovery entirely for these). Accepts full page URLs, e.g. https://www.facebook.com/McDonalds. Can be combined with searchTerms - results from both are merged. Either startUrls or searchTerms is required.
    • searchTerms (array): Search terms for page discovery. Each term is combined with each location (if provided) to find matching Facebook pages. Either searchTerms or startUrls is required.
    • locations (array): Optional locations to combine with each search term for location-aware discovery. For example, adding 'London' will search for 'Coffee Shop London'.
    • maxItems (integer): Maximum number of page rows to output. For 500-1000+ results, provide Facebook session cookies and use multiple search terms or locations to maximize discovery. Also scales SERP pagination depth automatically. Default: 60.
    • includeReviews (boolean): Fetch and include real reviews (reviewer name, recommend/don't-recommend verdict, review text, date) for each page, when available. Adds one extra request per page. Disable for faster/cheaper runs if you don't need reviews. Default: true.
    • cookies (string): Facebook session cookies. STRONGLY RECOMMENDED - without valid cookies, Facebook blocks ~94% of discovered pages with a login wall, most contact/business fields (phone, email, address, hours) will be empty, and page discovery itself is far less reliable. Accepts EITHER (1) a JSON array of Playwright-style cookie objects, OR (2) a raw name=value; name2=value2 Cookie header string. Required cookies: c_user, xs, datr, fr, sb. Export them from your logged-in Facebook session via browser DevTools (Application > Cookies > facebook.com). Example: [{"name":"c_user","value":"1000...","domain":".facebook.com","path":"/"}]

    What does Facebook Pages Scraper return?

    Output rows provide structured business snapshots containing page identifiers, follower counts, category tags, and verified contact links. They are ideal for building B2B directories or monitoring social proof metrics. They conspicuously do not contain personal Facebook profile timelines or private group membership rosters.

    Sample Output

    • facebookUrl (e.g. https://www.facebook.com/ozonecoffeeuk)
    • pageUrl (e.g. https://www.facebook.com/ozonecoffeeuk)
    • pageName (e.g. ozonecoffeeuk)
    • pageId (e.g. 191234567)
    • facebookId (e.g. 191234567)
    • title (e.g. Ozone Coffee Roasters | Facebook)
    • categories
    • category (e.g. Coffee Shop)
    • info
    • intro (e.g. Specialty coffee roaster and cafe in London.)
    • phone
    • email
    • messenger (e.g. https://m.me/191234567)
    • priceRange
    • address
    • addressUrl
    • website
    • websites
    • followers (e.g. 9100)
    • followings (e.g. 12)
    • checkins
    • talkingAboutCount
    • profilePictureUrl
    • coverPhotoUrl
    • ratingOverall
    • ratingCount
    • ratingText
    • recommendPercentage
    • ownerOrganization
    • business_hours
    • pageAdLibrary (e.g. https://www.facebook.com/ads/library/?active_...)
    • reviews

    Classification

    • categories: Array or null - Page categories
    • category: String or null - Primary category
    • info: Array or null - Short info lines from the page
    • intro: String or null - Page introduction or description

    Contact & Business

    • phone: String or null - Public phone number
    • email: String or null - Public contact email
    • messenger: String or null - Messenger link
    • address: String or null - Address or coordinates
    • addressUrl: String or null - Google Maps link for the address
    • website: String or null - Primary linked website
    • websites: Array or null - All detected website links
    • priceRange: String or null - Price range (e.g. "££")

    Engagement

    • followers: Number or null - Follower count
    • likes: Number or null - Like count
    • followings: Number or null - Following count
    • checkins: Number or null - Check-in count ("were here")
    • talkingAboutCount: Number or null - Talking-about count

    Media

    • profilePictureUrl: String or null - Profile picture URL
    • coverPhotoUrl: String or null - Cover photo URL

    Business Details

    • business_hours: String or null - Business hours info
    • ratingOverall: Number or null - Overall rating score, synthesized to a 0-5 scale for compatibility (Facebook Pages actually use a recommend %, not 1-5 stars - see recommendPercentage)
    • ratingCount: Number or null - Review/rating count
    • ratingText: String or null - Human-readable rating text
    • recommendPercentage: Number or null - Raw recommend percentage (0-100) as shown on the page - the authentic Facebook Pages rating metric
    • ownerOrganization: String or null - Confirmed owning organization/business ("X is responsible for this Page"), when Facebook discloses it
    • pageAdLibrary: Object or null - Ad library metadata or link
    • reviews: Array or null - Real reviews when available: [{reviewerName, recommends, reviewText, reviewDate}]. Controlled by the includeReviews input (default on)

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Facebook Pages Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Export session cookies from a logged-in Facebook browser profile, ensuring c_user, xs, datr, fr, and sb are present, then paste them into the cookies parameter as a JSON array.
    2. Set searchTerms to a targeted array of business categories and locations to a small list of target cities, leaving startUrls empty for general discovery.
    3. Keep maxItems capped at 10 for the initial test run to verify authentication and parsing while keeping result charges at or below $0.05.
    4. Run the Actor and inspect the dataset to ensure the output contains 32 fields in the Sample Output schema with populated values for pageName, pageId, and category.
    5. Verify that contact fields like email, phone, and address are not consistently arriving as null, which indicates cookie failure or aggressive login walls.
    6. Scale up discovery by increasing maxItems and expanding searchTerms and locations, calculating approximately 40 potential candidate pages per keyword-location pair.
    7. Export the structured dataset to JSON or CSV for downstream processing, filtering out records that lack vital outreach fields.

    How do you apply it? Three worked playbooks

    These are Facebook Pages Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Local business discovery

    Outcome: Local business discovery: find businesses in specific cities or regions

    Configure: Set searchTerms to ["Bakery", "Artisan Bread"], locations to ["London", "Bristol"], maxItems to 40, and supply valid Facebook cookies in cookies.

    Working method: Execute the run across the cross-product of terms and locations. Check that returned items match regional entities by inspecting address and title fields before widening the search array.

    Deliverable: A structured dataset containing localized business profiles with addressUrl, business_hours, and categories.

    Stop condition: Abort if returned address fields consistently reflect locations outside the configured locations parameter.

    Use case 2: Competitive intelligence

    Outcome: Competitive intelligence: build datasets of competitor pages in your industry

    Configure: Populate startUrls with exact URLs like [{"url": "https://www.facebook.com/McDonalds"}], leave searchTerms empty, and set includeReviews to true.

    Working method: Directly target explicit brand pages to bypass external discovery. Compare follower count, likes, talkingAboutCount, and reviews across the competitors.

    Deliverable: A benchmark dataset comparing engagement metrics, ratingOverall, and ad library links in pageAdLibrary.

    Stop condition: Stop the run if pageUrl targets return unavailable and are skipped without generating output rows.

    Use case 3: Lead generation

    Outcome: Lead generation: collect pages with contact info for outreach

    Configure: Set searchTerms to ["HVAC Repair", "Plumber"], locations to ["Manchester"], maxItems to 100, and includeReviews to false to speed up throughput.

    Working method: Run discovery with session cookies provided to unlock contact containers. Review the first 10 rows to verify email, phone, and messenger values are extracting properly.

    Deliverable: An outreach-ready CSV containing business identities paired with populated email and phone columns.

    Stop condition: Pause execution if consecutive records have null values for both phone and email despite valid session cookies.

    What breaks, and how do you design around it?

    • Over the last 30 days, 0.0% of public runs failed and 3.0% timed out. Build retries and alerting around those rates rather than assuming every run completes.

    When Facebook serves login walls that block public scrapers, supply valid session cookies containing c_user and xs to unlock restricted business views. If discovery yield drops below maxItems, expand the search space by multiplying terms across adjacent locations. When scraping specific targets without discovery overhead, pass direct page URLs into startUrls instead of guessing keywords.

    When should you not use Facebook Pages Scraper?

    Do not use this Actor if you require commercial directory contacts from regional yellow pages rather than social profiles; instead, use PaiPt Scraper - Portugal Business Directory (Paginas Amarelas) for Portuguese businesses or Vrisko Scraper - Greek Business Directory (vrisko.gr) for Greek markets. If your goal is tracking creative assets and sponsored messaging rather than company profiles, use Facebook Ads Library Scraper. Finally, avoid this Actor if your target list demands verified email addresses enriched from local maps; a dedicated tool like Google Maps Email Extractor extracts map-listed corporate emails directly without depending on Facebook profile configurations.

    What should you check before trusting the output?

    • Check that pageId and facebookId are populated; null values across entire batches signal blocked page fetches or dead redirect loops.
    • Monitor the null rate across phone, email, and website; if these exceed 90% across known commercial targets, the cookies parameter likely expired.
    • Verify that recommendPercentage contains numeric values between 0 and 100 rather than corrupted text when ratingOverall is analyzed.
    • Halt execution or reject output batches if the dataset row count remains 0 after consuming over 20 search discovery queries.

    None of this proves a record is correct. It gives a scheduled Facebook Pages Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What is the cost of running Facebook Pages Scraper on Apify?

    Results cost $0.005 each, which equals $5.00 per 1,000 results on the free tier. Paid Apify tiers pay lower per-result rates. A run-start fee is charged whenever a run begins, regardless of whether results are produced, alongside standard platform usage. The free tier includes $5.00 in monthly usage credit, which covers up to 1,000 output records before start charges.

    Why are phone and email values returning as null?

    A null field occurs when a page owner omits contact details, or when Facebook serves a login wall. Providing session cookies through the cookies input parameter allows authenticated page parsing, which unlocks gated contact elements like email, phone, and street address.

    Can I target direct Facebook URLs instead of using keyword discovery?

    Yes. Pass full page links into the startUrls input array. Doing so bypasses search engine discovery entirely and routes the scraper directly to the target Facebook entities, outputting their structured data into your dataset.

    How reliable is Facebook Pages Scraper during scheduled operations?

    Over the last 30 days, 94 of 99 runs succeeded (94.9%), with 0 failing and 3 timing out. About 3 in a hundred runs encounter timeouts or failures. Production pipelines should implement automated retry logic to rerun interrupted tasks.

    Can this Actor scrape posts from Facebook Groups or personal profiles?

    No. This tool targets public Facebook Pages such as companies, organizations, and public figures. It cannot parse personal Facebook profiles or extract discussions from Facebook Groups due to different underlying layouts and permission models.

    Where to go next

    When you are ready to run it, open Facebook Pages Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Facebook Pages Scraper Actor page for the current input schema, pricing tier, and run history.

    It is part of the Facebook Scraping Suite, which puts every related Actor on one page with its price and run history.

    If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:

    Readers running Facebook Pages Scraper commonly pair it with:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-24.

    • Actor last updated by its maintainers on 2026-09-13.

    • Run outcome figures cover the 30 day public window ending 2026-09-24.

    • Facebook Pages Scraper on Apify

    Featured actors

    Facebook Pages Scraper

    Discover Facebook pages through search engines and extract structured page data including IDs, names, categories, addresses, follower counts, phone numbers, emails, websites, business hours, ratings, and media.

    Run on Apify ↗