Facebook Pages Scraper: Followers, Contacts, Creation Date avatar

Facebook Pages Scraper: Followers, Contacts, Creation Date

Pricing

from $4.86 / 1,000 pages

Go to Apify Store
Facebook Pages Scraper: Followers, Contacts, Creation Date

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

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Facebook Page details with creation date, ad status, About text, contacts and map pin, one row per Page

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.

Run it on Apify

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 includeCreationDate on, the Page's transparency tab is read and gives creation_date as YYYY-MM-DD, Facebook's own ad_status line and running_ads as true or false.
  • Short bio and full About text. intro is the short bio under the Page name; about_text is the long description from the About details tab, when the Page has one.
  • Map pin. latitude and longitude for 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, blocked or skipped, with a plain reason, in the facebook-page-status dataset 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

ParameterTypeDefaultWhat it does
startUrlsarray of links3 sample Pages (the ones in "Try it in one minute")Facebook Page links. Up to 5,000 Pages per run across startUrls and pages.
pagesarray of stringsemptyUsernames, @names or numeric Page ids, one per line. Read together with startUrls.
includeCreationDatebooleantrueReads the transparency tab: creation_date, ad_status, running_ads. About 0.5 MB and 2 seconds more per Page.
includeAboutTextbooleantrueReads 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.
includeCoordinatesbooleantrueAdds latitude and longitude for Pages with an address, from the Contact info tab when the map link has no pin.
proxyConfigurationobject{"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:

FieldWhat it holds
inputYour entry exactly as you gave it
statusAlways ok in this dataset
namePage name
page_urlLink to the Page
page_idFacebook profile id of the Page
classic_page_idClassic Page id, used by the Ad Library
categoryCategories joined with commas
categoriesCategories as a list
followersFollower count
verifiedTrue when the Page has the verified badge
ad_library_urlMeta Ad Library link for the Page
intro_loadedTrue when the Intro section was read
details_loadedWhich extra reads worked, as a list
scraped_atWhen 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 likes is 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.

StatusMeaning
not_availableFacebook 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_profileA personal profile, not a business Page. Skipped; nothing is extracted.
not_a_pageA group, event, Marketplace, watch, share or photo link, or a link to another site.
invalid_inputNot a Facebook link, name or id.
duplicateThe same Page as an earlier entry in the run (same_as names it).
incompleteFacebook sent the page without its Page data on every try.
blockedFacebook showed a security checkpoint on every try.
skippedNot 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.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
page-scrapedOnce 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-startOnce 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

  1. Open the actor in Apify Console, set your input and click Save as a new task.
  2. In the task, open Schedules, click Add schedule and pick how often (every day, every Monday at 08:00 and so on).
  3. Compare runs on page_id and followers to see growth, and on running_ads to see when a competitor starts or stops advertising.
  4. 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"

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

Leads and business directories

Marketing, SEO and reviews

LinkedIn

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.