Facebook Pages Scraper: Followers, Contacts, Creation Date
Pricing
from $4.86 / 1,000 pages
Facebook Pages Scraper: Followers, Contacts, Creation Date
Scrape public Facebook Pages: category, About text, followers, likes, rating, address and map pin, phone, email, websites, social links, price range, creation date, ad status, verification and pictures. One row per Page. No login.
Pricing
from $4.86 / 1,000 pages
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.
Updated 25 Oct 2026: first release. Page links, usernames or ids in, one row per public Page out, with creation date, ad status, the full About text and map pin on top of the contact and reputation fields. Bookmark this Actor on its Store page so it is one click away next time.
Why choose this actor?
- One row per Page with the fields people ask for. Name, categories, short bio and full About text, exact follower count, rating and recommend share, address with latitude and longitude, phone, email, websites, Instagram, X, YouTube, TikTok, LinkedIn and WhatsApp links, price range, opening status, verified badge, creation date, whether the Page is running ads right now, and profile and cover picture links.
- You pay only for Pages that came back. Pages that do not exist, were removed or are limited by age or country, personal profiles, groups, events and duplicates each get a free status row with the reason, in a separate dataset named
facebook-page-status. They never appear in your results and are never charged. - Honest about what Facebook shows. No Facebook account, no cookies of yours, no browser. In our test of 41 entries, 37 came back as Pages; 31 of those had a creation date and 19 had a long About text, and the rest are in the FAQ below with the reason. A field a Page does not show is left out of its row instead of filled with a guess.
Part of The Mine Works Social media and video family: Threads Scraper, Reddit Scraper, Threads Search Scraper, Instagram Profile Scraper, Instagram Followers & Following, Reddit Search Scraper.
Try it in one minute
Paste this into the JSON tab of the input page. It returns a restaurant, a Vancouver restaurant and a global brand. In our test it took 9 seconds for the three, with every extra read on; one of the three came back without its creation date because Facebook refused that tab read (see the FAQ).
{"startUrls": [{ "url": "https://www.facebook.com/copperkettleyqr" },{ "url": "https://www.facebook.com/kissatanto" },{ "url": "https://www.facebook.com/Visa" }]}
Each entry can be a Page link (https://www.facebook.com/<name>, with or without www, from m.facebook.com, web.facebook.com, fb.com or a language subdomain), a link to a tab or post of the Page (/about, /reviews, /posts/<id>, cut back to the Page), an old style link (facebook.com/pages/<name>/<id>), a profile.php?id=<id> link, a username such as copperkettleyqr or @copperkettleyqr, or a numeric Page id. Put usernames and ids in pages, links in startUrls, or mix them; both lists are read.
Apify's free plan includes $5 of credit every month, which covers about 460 results at this actor's price.
Copy to your AI assistant
themineworks/facebook-pages-scraper on Apify. Reads public Facebook Pages as a logged out visitor and returns one row per Page: name, categories, intro, about_text, followers, following, talking_about, were_here, address, city, country, latitude, longitude, phone, email, websites, Instagram, X, YouTube, TikTok, LinkedIn and WhatsApp links, price_range, rating_text, recommend_percent, review_count, hours_status, verified, creation_date, ad_status, running_ads, page ids, picture links and the Meta Ad Library link. Call ApifyClient("TOKEN").actor("themineworks/facebook-pages-scraper").call(run_input={"startUrls": [{"url": "https://www.facebook.com/copperkettleyqr"}]}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give startUrls (Page links) and or pages (usernames or numeric ids). Optional: includeCreationDate (default true), includeAboutText (default true), includeCoordinates (default true), proxyConfiguration. Skip rows with a _type field (info rows are never charged). Pages that could not be read are not in the results; each is listed with a status and reason in the key-value store record OUTPUT (status_rows) and in the named dataset facebook-page-status. Full spec: GET https://api.apify.com/v2/acts/themineworks~facebook-pages-scraper/builds/default (Bearer TOKEN). Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Creation date and ad status. With
includeCreationDateon, the Page's transparency tab is read and givescreation_dateas YYYY-MM-DD, Facebook's ownad_statusline andrunning_adsas true or false. - Short bio and full About text.
introis the short bio under the Page name;about_textis the long description from the About details tab, when the Page has one. - Map pin.
latitudeandlongitudefor Pages with an address. Most come from the map link Facebook shows with the address, so they cost nothing extra; the rest are read from the Contact info tab. - Exact follower counts. Read from the Page's own summary (3,317, not 3.3K), together with
following, people talking about it and check ins. - Contacts and links. Phone, email, the first website and every other website listed, and the accounts the Page lists on other networks, each in its own column.
- Ad Library link on every Page. Built from the classic Page id, so you can open a Page's ads in one click.
- Business Pages only. Personal profiles are recognised from the Page header and skipped with a status row. Nothing from a personal profile is extracted.
- A status for every entry.
not_available,personal_profile,not_a_page,invalid_input,duplicate,incomplete,blockedorskipped, with a plain reason, in thefacebook-page-statusdataset and in the run summary. None is charged.
How to use it
Basic: a handful of Pages
{"pages": ["copperkettleyqr", "kissatanto", "https://www.facebook.com/Visa"]}
Fast and light: counts and contacts only
Turn the three extra reads off. Each Page is then one request of about 1 MB, which is the quickest way through a long list. Creation date, ad status and About text come back empty; map pins still come back when the Page's map link carries one.
{"pages": ["copperkettleyqr", "kissatanto"],"includeCreationDate": false,"includeAboutText": false,"includeCoordinates": false}
Competitor and brand research
Run a list of brand Pages and sort on followers, creation_date and running_ads to see who is big, who is old and who is advertising today. Open ad_library_url for the ads themselves, or use our Meta Ad Library Scraper on the same Pages.
Enrich a lead list
If your leads come from a directory or a maps export that carries a Facebook link but no email, run those links here and join the rows back on input, which holds each entry exactly as you gave it. Restaurants, hotels, bars and shops fill phone, email and address most often, because Facebook asks local businesses for them.
Keep a list fresh every month
Save your input as a task and add a schedule (Console, this actor, Schedules, Add schedule, monthly). Each run reads every Page again, so follower counts, ad status and changed contact details show up; a closed Page moves to the status dataset and stops costing you anything.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
startUrls | array of links | 3 sample Pages (the ones in "Try it in one minute") | Facebook Page links. Up to 5,000 Pages per run across startUrls and pages. |
pages | array of strings | empty | Usernames, @names or numeric Page ids, one per line. Read together with startUrls. |
includeCreationDate | boolean | true | Reads the transparency tab: creation_date, ad_status, running_ads. About 0.5 MB and 2 seconds more per Page. |
includeAboutText | boolean | true | Reads the About details tab: about_text. About 0.5 MB more per Page, up to 1.2 MB for a Page that has no About text. |
includeCoordinates | boolean | true | Adds latitude and longitude for Pages with an address, from the Contact info tab when the map link has no pin. |
proxyConfiguration | object | {"useApifyProxy": true} | Apify datacenter proxy, which is all this actor needs. Residential proxy is not used, even if selected. |
The price is the same with all three extra reads on or off. There is no maximum results setting: you get one row for each Page you list that Facebook shows to logged out visitors.
What data do you get?
One row per Page. Fields that a Page does not show are left out of that row rather than filled with empty values.
Identity: name, page_url, username, page_id (the Page's profile id), classic_page_id (the id Meta's Ad Library and Graph API use), category and categories, verified, confirmed_owner (the organisation Facebook confirms is responsible for the Page), intro (short bio), about_text (full About text).
Contact and place: phone, email, website, websites, address, city, country, map_url, latitude, longitude, service_area.
Social accounts: instagram_url, x_url, youtube_url, tiktok_url, linkedin_url, whatsapp_url, and social_links, a list of every other account the Page shows, each with network, url and handle.
Reputation: followers, likes (only for Pages that still show a like count), following, talking_about, were_here (check ins), rating_text, recommend_percent, review_count, rating (for the few Pages that still show stars), price_range, hours_status (Open now, Closed now, Always open), services.
History and ads: creation_date, ad_status, running_ads, ad_library_url.
Media: profile_picture_url, cover_photo_url.
Run fields: input (your entry exactly as given), status (always ok in this dataset), intro_loaded, details_loaded (which extra reads worked for this row: transparency, about, location, map_link), scraped_at.
Stable fields for automations
These fields were present in every row of our test run and are safe to build on:
| Field | What it holds |
|---|---|
input | Your entry exactly as you gave it |
status | Always ok in this dataset |
name | Page name |
page_url | Link to the Page |
page_id | Facebook profile id of the Page |
classic_page_id | Classic Page id, used by the Ad Library |
category | Categories joined with commas |
categories | Categories as a list |
followers | Follower count |
verified | True when the Page has the verified badge |
ad_library_url | Meta Ad Library link for the Page |
intro_loaded | True when the Intro section was read |
details_loaded | Which extra reads worked, as a list |
scraped_at | When the row was read, ISO 8601 UTC |
These names will not change. New fields may be added; existing ones will not be renamed or removed.
What Facebook does not show a logged out visitor
- Opening hours as a schedule. Only the status (
hours_status: Open now, Closed now, Always open) is public. The day by day table is not. - Page admins and the country they are in. The transparency tab shows these only after login.
- Likes. Most Pages now show followers only, so
likesis usually missing. - Phone, email and address when the Page owner has not listed them. Big brands often list a website only.
The status dataset
Every entry that did not produce a row gets one status row in the named dataset facebook-page-status (open it from Storage, Datasets in Console) and in the run's OUTPUT record under status_rows. Each status row has input, status, reason, page_url, attempts, run_id and scraped_at. Filter on run_id to see one run, because a named dataset keeps rows from all your runs.
| Status | Meaning |
|---|---|
not_available | Facebook showed its login page on all 6 tries, in two passes, while other Pages loaded. It does this for Pages that do not exist, were removed or renamed, or are limited by age or country, and now and then for a working Page while it is refusing a connection. |
personal_profile | A personal profile, not a business Page. Skipped; nothing is extracted. |
not_a_page | A group, event, Marketplace, watch, share or photo link, or a link to another site. |
invalid_input | Not a Facebook link, name or id. |
duplicate | The same Page as an earlier entry in the run (same_as names it). |
incomplete | Facebook sent the page without its Page data on every try. |
blocked | Facebook showed a security checkpoint on every try. |
skipped | Not read because the run stopped (your spending limit, the run's time limit, or Facebook refusing the run's connections for several minutes). Run these entries again. |
Output examples
The Copper Kettle Restaurant (Pizza place), picture links trimmed:
{"input": "copperkettleyqr","status": "ok","page_url": "https://www.facebook.com/copperkettleyqr","page_id": "100064027242849","classic_page_id": "851606664870954","name": "The Copper Kettle Restaurant","username": "copperkettleyqr","category": "Pizza place","categories": ["Pizza place"],"followers": 3317,"following": 434,"talking_about": 39,"were_here": 1164,"intro": "Longstanding local restaurant. Mediterranean specialties, signature gourmet pizzas (Best of YQR for","about_text": "A downtown landmark housed in a heritage building designed circa 1920s with floor to ceiling windows capturing beautiful views of Victoria Park. Family owned...","address": "1953 Scarth Street, Regina, SK, Canada, Saskatchewan","city": "Regina","country": "Canada","map_url": "https://maps.google.com/maps?q=50.44777950%2C-104.61026997%281953+Scarth+Street%2C+Regina%2C+SK%2C+Canada%2C+Saskatchewan%29&hl=en","latitude": 50.4477795,"longitude": -104.61027,"phone": "+1 306-525-3545","email": "copperkettle.events@gmail.com","website": "http://www.thecopperkettle.online/","websites": ["http://www.thecopperkettle.online/"],"instagram_url": "https://www.instagram.com/copperkettleyqr","social_links": [{"network": "instagram","url": "https://www.instagram.com/copperkettleyqr","handle": "copperkettleyqr"}],"price_range": "$$","rating_text": "94% recommend (201 reviews)","recommend_percent": 94,"review_count": 201,"hours_status": "Open now","services": "Outdoor seating","verified": false,"creation_date": "2014-10-29","ad_status": "This Page is currently running ads.","running_ads": true,"profile_picture_url": "https://scontent.xx.fbcdn.net/...","cover_photo_url": "https://scontent.xx.fbcdn.net/...","ad_library_url": "https://www.facebook.com/ads/library/?view_all_page_id=851606664870954","intro_loaded": true,"details_loaded": ["transparency","about"],"scraped_at": "2026-10-25T03:58:57.218Z"}
Starbucks (Food & beverage company), picture links trimmed, About text shortened:
{"input": "Starbucks","status": "ok","page_url": "https://www.facebook.com/Starbucks","page_id": "100064487329582","classic_page_id": "22092443056","name": "Starbucks","username": "Starbucks","category": "Food & beverage company","categories": ["Food & beverage company"],"followers": 34061987,"following": 67,"talking_about": 111607,"were_here": 1902854,"intro": "The Starbucks Coffee Company ☕️","about_text": "Come on in. This space is not so different from your neighborhood Starbucks. It’s a place where people from all over come together for conversation and great...","website": "https://www.starbucks.com/","websites": ["https://www.starbucks.com/"],"social_links": [],"confirmed_owner": "STARBUCKS CORPORATION","verified": true,"creation_date": "2008-03-11","ad_status": "This Page is currently running ads.","running_ads": true,"profile_picture_url": "https://scontent.xx.fbcdn.net/...","cover_photo_url": "https://scontent.xx.fbcdn.net/...","ad_library_url": "https://www.facebook.com/ads/library/?view_all_page_id=22092443056","intro_loaded": true,"details_loaded": ["transparency","about"],"scraped_at": "2026-10-25T03:59:10.032Z"}
Tesla (a Page with no address), picture links trimmed:
{"input": "tesla","status": "ok","page_url": "https://www.facebook.com/tesla","page_id": "61557420848648","classic_page_id": "254515547747520","name": "Tesla","username": "tesla","category": "Tech","categories": ["Tech"],"followers": 113533,"following": 0,"talking_about": 7878,"intro": "Electric vehicles, giant batteries & solar, AI & robotics","about_text": "Electric vehicles, giant batteries & solar","address": "1 Tesla Road, Austin, TX, United States, Texas","city": "Austin","country": "United States","map_url": "https://maps.google.com/maps?q=1+Tesla+Road%2C+Austin%2C+TX%2C+United+States%2C+Texas&hl=en","website": "https://www.tesla.com/","websites": ["https://www.tesla.com/"],"social_links": [],"confirmed_owner": "Tesla Inc","verified": true,"creation_date": "2024-03-21","ad_status": "This Page is currently running ads.","running_ads": true,"profile_picture_url": "https://scontent.xx.fbcdn.net/...","cover_photo_url": "https://scontent.xx.fbcdn.net/...","ad_library_url": "https://www.facebook.com/ads/library/?view_all_page_id=254515547747520","intro_loaded": true,"details_loaded": ["transparency","about"],"scraped_at": "2026-10-25T04:09:36.748Z"}
Pricing
Pay per event: you pay for the Page rows you receive, plus a flat $0.003 per run, whatever memory you choose. The creation date, About text and map pin reads cost nothing extra.
| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
page-scraped | Once per Page row stored in your dataset | $10.80 per 1,000 | $7.38 per 1,000 | $5.85 per 1,000 | $4.86 per 1,000 |
run-start | Once per run, when the first Page row is delivered | $0.003 | $0.003 | $0.003 | $0.003 |
The price per single Page is the price per 1,000 divided by 1,000. A Page costs the same whether it lists one contact detail or twenty, and whether the extra reads are on or off.
Never charged:
- Pages that do not exist, were removed, or are limited by age or country;
- personal profiles, groups, events, Marketplace and other links that are not Pages;
- duplicates of a Page already in the run;
- Pages the run could not read (incomplete loads, checkpoints, Pages skipped when the run stopped);
- status rows and the information row at the end of the run;
- a run with no valid input, or one whose Pages all fail: the start fee is charged only once the first Page row is delivered;
- anything past your "Max cost per run". The actor checks the budget before each row and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.
Run it on a schedule
- Open the actor in Apify Console, set your input and click Save as a new task.
- In the task, open Schedules, click Add schedule and pick how often (every day, every Monday at 08:00 and so on).
- Compare runs on
page_idandfollowersto see growth, and onrunning_adsto see when a competitor starts or stops advertising. - Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.
FAQ
What does this actor read?
The public Facebook Page of a business, brand, venue or organisation, as Facebook shows it to someone who is not logged in: the header (name, followers, verified badge, pictures), the Intro box (category, address, phone, email, websites, other accounts, hours status, price range, rating) and, with the extra reads on, three of the Page's About tabs (transparency, details, contact info). It does not read posts, comments, reviews, groups, events or Marketplace. For reviews use our Facebook Reviews Scraper.
Do I need a Facebook account, cookies or a token?
No. The actor never logs in and never asks for your cookies. It reads what any visitor sees on the open web.
Why is creation_date or about_text missing on some Pages?
creation_date is missing when Facebook did not show the transparency tab to that visit. In our test of 37 Pages it came back on 31; the other tab reads were refused with Facebook's login page, and one retry on the same visitor did not change that. Running the missing Pages again usually fills them. about_text is missing when the Page has no About text of its own (19 of 37 Pages had one; many big brands do not) or when the tab was refused the same way. details_loaded on each row says which extra reads worked.
How long does a run take, and how much data does it download?
A Page takes about 2 to 4 seconds on its own; with all three extra reads on, about 10 seconds. The Page itself is about 1 MB. The creation date read adds about 0.4 MB, the About text read about 0.5 MB (up to 1.2 MB for a Page with no About text), because each tab is closed as soon as the part holding the field has arrived. In our test run that came to about 2.4 MB per delivered row with everything on, including the refused tries. Three Pages are read at the same time. The default run time limit is one hour; raise it in the run options for long lists, or turn the extra reads off.
Why did some of my Pages come back as not available?
Facebook sends logged out visitors to its login page for Pages that do not exist, were removed or renamed, and for Pages limited by age or country. In our test 3 of 38 entries that looked like real Pages ended this way after 6 tries in two passes, the second pass only after a known public Page had loaded on the same run. They are free. If you know the Page exists, run it again later.
What happens if Facebook starts refusing the run?
Facebook sometimes shows its login page to a whole connection for a while after many visits. When 6 Pages in a row fail, the actor loads a known public Page. If that loads, the run carries on. If it is refused too, every worker pauses for 1 minute, then 2, then 4, checking again each time. After 4 refused checks in a row, or 20 minutes of pauses in one run, the run stops, and the Pages it did not read are listed as skipped and not charged.
Is the data fresh?
Yes. Every run reads the live Page at that moment. Opening status (hours_status) and running_ads are as of the time in scraped_at. Picture links from Facebook's image servers expire after some days, so download pictures soon if you need them.
Are personal profiles included?
No. A personal profile is recognised from its header and returned only as a personal_profile status row. Its name, work, city and other details are not extracted.
Which proxy does it use?
Apify datacenter proxy, which comes with every Apify plan. You do not need to change anything. Each try of a Page is a new anonymous visitor on a new proxy session.
Can I get the data in Excel, CSV or Google Sheets?
Yes. Download the dataset as CSV, Excel, JSON, XML or HTML from the run page, or send it to Google Sheets with the Apify integration. The main columns are flat; lists such as websites, social_links and details_loaded are spread over numbered columns.
How is this different from your Facebook Page Contacts Scraper?
Facebook Page Contacts Scraper returns the header and Intro fields only and is the lighter, quicker choice when you need phone, email and website. This actor returns the same fields plus creation date, ad status, the full About text and the map pin.
Can I use it from Claude, ChatGPT or another AI assistant?
Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/facebook-pages-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http facebook-pages-scraper "https://mcp.apify.com/?tools=themineworks/facebook-pages-scraper"
Is it legal to scrape Facebook Pages?
The actor reads only public business Pages that Facebook shows to anyone without logging in, and it skips personal profiles. Facebook's terms restrict automated collection, so decide for yourself whether your use is acceptable to you. Business contact details can still be personal data in some cases (a sole trader's own phone number, for example). You are responsible for how you use the data and for following Facebook's terms and data protection law such as the GDPR and the CCPA. This is general information, not legal advice.
Integrations
- Google Sheets: send each run's rows to a sheet with the Google Sheets integration.
- Make, Zapier and n8n: start a run from a new row in your CRM or sheet, and pass the Page rows on when the run finishes.
- Webhooks: get a call when a run succeeds and fetch the dataset from it.
- API: start runs and read results from any language with the Apify API or the Python and JavaScript clients.
- MCP clients: Claude, ChatGPT, Cursor and others, through the connector URL above.
More from The Mine Works
Social media and video
- Threads Scraper
- Reddit Scraper
- Threads Search Scraper
- Instagram Profile Scraper
- Instagram Followers & Following
- Reddit Search Scraper
- Twitter / X Scraper
- YouTube Transcript
- Xiaohongshu (RED) Scraper
- Telegram Channel Scraper
- Telegram Channel Finder
- Pinterest Profile Scraper
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
Jobs and hiring
Company and business data
E-commerce and marketplaces
Food and local services
Developer and AI tools
More tools
Support
Found a Page that should work and does not, or a field you need? Open an issue in the Issues tab with the Page link and the run ID. For new sources or a custom version, email dmineworks@gmail.com.
Facebook Pages Scraper turns a list of Facebook Pages into one row each, with followers, contacts, map pin, creation date, ad status and About text, and charges only for the Pages that come back.

