Facebook Profile Scraper API
for page details and public posts
Get public Facebook profile details, follower counts and posts with reaction data as JSON, without maintaining scrapers or parsers.
of requests succeed
median response
95% finish faster
per 1k requests at volume
Facebook changes its pages. Your code shouldn't care.
- Proxies and retries for blocked requests
- Profile details buried in page markup
- Post text mixed with nested media data
- Reaction breakdowns to extract
- Broken selectors after layout changes
Get structured data with one request
Add public profile information and posts to your application with a single HTTP call.
Facebook Profile Scraper API
curl -G 'https://api.hasdata.com/scrape/facebook/profile' \
--data-urlencode 'handle=nike' \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'handle * Facebook Handlelanguage LanguagenextPageToken Next Page TokenProfile and post data, ready for your pipeline
Work with profile details, post text and engagement counts in structured fields for your database, dashboards or content analysis.
Profile details
facebook-profile response excerpt
{
"profile": {
"id": "100044541544829",
"name": "Nike",
"username": "nike",
"category": "Sportswear Store",
"biography": "Just Do It.",
"likesCount": 39544938,
"talkingAboutCount": 167456,
"followersCount": "39M followers",
"followingCount": "24 following",
"verified": true,
"websiteUrl": "http://nike.com/",
"phone": "+48 58 881 27 61"
}
}profile.id / profile.name / profile.username stringProfile identifiers and display name for matching records to the requested Facebook account.
profile.category / profile.biography stringPublished category and bio. Availability depends on what the Page or profile makes public.
profile.websiteUrl / profile.phone stringPublic website and phone details when available. Neither field is guaranteed for every target.
profile.followersCount / profile.followingCount stringLocalized display strings that may be abbreviated, not exact numeric totals or account lists.
profile.likesCount / profile.talkingAboutCount numberNumeric Page likes and talking-about counts, separate from followers and reactions on individual posts.
profile.verified booleanVerification indicator returned for the Page or profile.
Public posts
facebook-profile response excerpt
{
"posts": [
{
"id": "1393461115481927",
"url": "https://www.facebook.com/reel/2166091230582141/",
"text": "Leave your limits at the surface. #JustDoIt",
"timestamp": "2025-09-15T16:01:59.000Z",
"hashtags": [
"#JustDoIt"
]
}
]
}posts[].id stringIdentifier of the returned post, preserved as a string.
posts[].url stringFacebook URL for the post or reel. Retain the source alongside the extracted text.
posts[].text stringPublic post text as returned, including inline hashtags.
posts[].timestamp stringPublication timestamp in the returned ISO date-time format.
posts[].hashtags string[]Hashtags extracted from the post text.
Post engagement
facebook-profile response excerpt
{
"posts": [
{
"id": "1393461115481927",
"reactionsCount": 7896,
"commentsCount": 2479,
"sharesCount": 1124,
"reactions": [
{
"type": "Like",
"count": 6500
},
{
"type": "Love",
"count": 1148
},
{
"type": "Care",
"count": 136
},
{
"type": "Wow",
"count": 44
},
{
"type": "Angry",
"count": 33
},
{
"type": "Haha",
"count": 31
},
{
"type": "Sad",
"count": 4
}
]
}
]
}posts[].id stringIdentifies the post these engagement counts belong to.
posts[].reactionsCount numberTotal reactions on this post, distinct from Page likes.
posts[].commentsCount numberNumber of comments, not comment text, authors or replies.
posts[].sharesCount numberNumber of shares, not a list of people who shared the post.
posts[].reactions object[]Like, Love and other reaction counts, not identities of the people who reacted.
Photos & media
facebook-profile response excerpt
{
"profile": {
"id": "100044541544829",
"profilePicUrl": "https://scontent.fssa5-1.fna.fbcdn.net/v/t39.30808-1/284964043_10159903868513445_7696353984967674128_n.jpg?stp=dst-jpg_tt6&cstp=mx400x400&ctp=s320x320&_nc_cat=102&ccb=1-7&_nc_sid=2d3e12&_nc_ohc=jWn2P9hNVtIQ7kNvwFG7nPz&_nc_oc=AdoWgT8_AvdHE9rWtt9dsIWyd6ZXPDgSEzGkR2_MoaA-G2hlReZ5EeTYVtyCttFage4&_nc_zt=24&_nc_ht=scontent.fssa5-1.fna&_nc_gid=qBeL04v6N0VdL-e9ZrCtXA&_nc_ss=79289&oh=00_AQIyoak_sJNBLeu04qsUdhtgAc-m7vsf8nEKlXb66d2VBQ&oe=6AA98230",
"coverPhotoUrl": "https://scontent.fssa5-1.fna.fbcdn.net/v/t39.30808-6/285211224_10159903868008445_5477337468887983165_n.png?stp=dst-png&cstp=mx851x315&ctp=s851x315&_nc_cat=102&ccb=1-7&_nc_sid=cc71e4&_nc_ohc=jvv47iQrzjIQ7kNvwEfH9IR&_nc_oc=AdrNLYdKev7avjOa-VVGQI_Cddu-gEE0aQ19y5Epp8BFfaY6YdwVtegS6MWGyVlXwVg&_nc_zt=23&_nc_ht=scontent.fssa5-1.fna&_nc_gid=qBeL04v6N0VdL-e9ZrCtXA&_nc_ss=79289&oh=00_AQI9M1ZBROj_oxnkg62dhkKKMy3XJQj92q8sDSUhtLx-Rw&oe=6AA99C22"
},
"posts": [
{
"id": "1393461115481927",
"media": [
{
"id": "2166091230582141",
"type": "Video"
}
]
}
],
"photos": [
{
"id": "1095811278580247",
"type": "Photo",
"image": "https://scontent.fssa5-1.fna.fbcdn.net/v/t39.30808-6/471313661_18515827156020081_2460706748949541958_n.jpg?stp=dst-jpg_tt6&cstp=mx1440x1800&ctp=s1440x1800&_nc_cat=110&ccb=1-7&_nc_sid=127cfc&_nc_ohc=2hpGiPt2pYsQ7kNvwEaRKAj&_nc_oc=Adq1VdFeH3_qgUAs6jX9uRhIEgULMVweqbOK10pUfr0QHzj-hZ74nFcj2Xt0Nn8S_gU&_nc_zt=23&_nc_ht=scontent.fssa5-1.fna&_nc_gid=qBeL04v6N0VdL-e9ZrCtXA&_nc_ss=79289&oh=00_AQI4TW_aKZIiMDgNAZ5f97nOlxMW-FakuNjXi5qpTD5jgA&oe=6AA9A478"
}
]
}profile.profilePicUrl stringAvatar image URL returned for the profile.
profile.coverPhotoUrl stringCover image URL when available.
photos[].id / photos[].type stringIdentifiers and media types for the returned photo tiles.
photos[].image stringFacebook-hosted image URL for a photo tile. These links can expire.
posts[].media object[]Attached media identifiers and types. A Video ID is not a direct video-download URL.
From page details to post engagement
Build business datasets and compare public posts using profile details, post text and reaction counts.
Enrich business records
Add names, categories, bios and published website details to your records. Keep the Facebook profile ID alongside each business.
Collect public posts
Bring post text, timestamps, hashtags and media references into content datasets without extracting them from Facebook's page markup.
Compare post engagement
Compare reactions, comment counts and shares across public posts. Use the reaction breakdown to distinguish likes from other responses.
An all-in-one scraping service
Combine Facebook data with public profiles and content from Instagram, TikTok and YouTube using the same integration tools.
Discover similar
scrapers and APIs
to expand your projects.
Instagram Profile Scraper API
Social Media Intelligence • $0.83 / 1k Request
TikTok Profile Scraper API
Social Media Intelligence • $0.83 / 1k Request
YouTube Scraper API
Videos Data • $0.83 / 1k Request
Fits right into your stack.
Works with the tools you already use.
View Documentation ->What developers say about HasData
Feedback from HasData customers.
HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.
We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.
Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.
I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.
We were particularly impressed with how easily we could integrate HasData into our existing workflow.
Plans that get cheaper at scale
Choose your request volume and concurrency. Pay for successful requests, with no metered overage.
Free
Startup
Basic
RecommendedGrowth
Monthly request volume
Custom price based on required volume
Past 20M credits a month, or terms the self-serve plans do not cover. We shape the contract around your workload. Past 20M credits a month, or need terms the self-serve plans do not cover? We shape the contract, concurrency, and support around your workload.
HasData accesses publicly available data only. Facebook's terms may restrict automated access; you are responsible for compliance. Where data includes personal information, ensure a lawful basis under GDPR/CCPA.
Questions, answered
No. HasData provides an independent scraper for public Facebook page and profile data. This API does not publish posts, manage Pages or replace Meta's Graph API for those operations.
Requests use a HasData API key. You do not supply a Facebook login, session cookies or Meta Graph API token. The endpoint retrieves public data and does not grant access to private content.
Yes. The handle input accepts a Facebook username with or without @, or a numeric profile ID. For a profile.php?id= link, use the ID value rather than the full URL.
The endpoint supports public Facebook Pages and profiles. Private personal accounts and groups are not supported. Business contact details and other fields depend on what the target makes public.
No. Posts include comment counts, not comment text. Profiles include follower and following display strings, not lists of individual accounts. Reaction breakdowns contain types and counts, not the people who reacted.
followersCount and followingCount are Facebook display strings, which can be abbreviated and localized. likesCount and talkingAboutCount are numeric. The language option changes localized labels without converting follower strings into exact numbers.
Use pagination.nextPageToken when the response supplies it. Continuation responses contain posts and pagination, without repeating the profile or photos. Each continuation is billed separately. Access to every historical post is not guaranteed.
The response includes image URLs and media metadata when available. It does not download media files. A video ID in a post is not a direct video-download URL, and Facebook-hosted image links can stop working.
The free plan includes monthly credits and requires no credit card. Requests stop when credits run out, with no metered overage. Monthly credits reset with the billing cycle.
A September 14, 2026 test returned the correct profile in all 100 requests across ten public Pages, with ten repetitions per Page and up to three requests in parallel. Timings include the full client round trip. Cache state was unknown. These measurements are not an uptime guarantee.
Failed requests consume no credits. Check the handle and whether the target is publicly accessible, then inspect the response for errors before processing its data.
Your first Facebook profile response
is minutes away
100 requests free · no credit card