Facebook Profile Scraper API
Our Facebook profile scraper turns a public profile username or URL into structured JSON: the numeric id, the name, the about text, category, and profile image. Public-figure profiles served with an Open Graph block resolve logged-out, so a username like zuck returns a clean object in one request.
Quickstart
curl "https://api.facebookscraperapi.com/api/v1/facebook/profile?username=zuck&api_key=$API_KEY" import requests
BASE = "https://api.facebookscraperapi.com"
API_KEY = "YOUR_API_KEY"
# Pass a username (zuck) or a full facebook.com/<username> URL.
data = requests.get(
f"{BASE}/api/v1/facebook/profile",
params={"username": "zuck", "api_key": API_KEY},
timeout=30,
).json()
print(data["id"], data["name"])
print(data["about"])
print(data["profile_image"])
print("source:", data["data_source"]) Response
{
"id": "4",
"username": "zuck",
"url": "https://www.facebook.com/zuck/",
"name": "Mark Zuckerberg",
"category": null,
"about": "Mark Zuckerberg. 121,483,067 likes \u00b7 1,883,118 talking about this. Bringing the world closer together.",
"profile_image": "https://scontent.fdac11-1.fna.fbcdn.net/v/t39.30808-1/632598281_10117314650513371_3238643608998008744_n.jpg",
"thumbnail": "https://scontent.fdac11-1.fna.fbcdn.net/v/t39.30808-1/632598281_10117314650513371_3238643608998008744_n.jpg",
"is_verified": null,
"source": "facebook",
"data_source": "opengraph"
} | Field | Type | Description |
|---|---|---|
id | string | The profile's numeric id, from the embedded entity or the app deep-link. For zuck this is 4. |
username | string | The profile vanity resolved from the input or the canonical URL. |
url | string | The canonical profile URL. |
name | string | The profile's display name. |
category | string | The category for public-figure or business profiles when exposed, otherwise null. |
about | string | The about or description text from the Open Graph block. For public figures it includes the likes and talking-about line. |
profile_image | string | URL of the profile picture. Also returned as thumbnail. |
is_verified | boolean | Verification flag when the embedded entity exposes it, otherwise null. |
Why it is hard
Personal Facebook profiles are the most gated surface on the site: logged out, most return a bare app shell with no data, and the official Graph API cannot read a person's profile without that person's own login and granted permission. Public-figure and business profiles are the exception, because they still ship an Open Graph block a logged-out visitor can read.
Use it for
Public-figure enrichment
Identity resolution
Profile image capture
Creator catalogs
How it compares
| Our API | DIY (requests / headless) | Facebook Graph API | |
|---|---|---|---|
| Read a public-figure profile logged-out | Yes, when the og block renders | Possible but you fight the shell and wall | No, needs the person's own login and consent |
| Setup | API key only | Residential proxies, headless browser, parsers | Meta app plus user-granted permissions |
| Numeric id resolution | Returned | You parse it yourself | Available with granted permission |
| Anti-bot and proxies | Built in, US residential | You build and maintain it | Not applicable |
| Personal profiles | Honest diagnostic when walled | Usually a bare shell | Only with that user's consent |
| Output | Flat, validated JSON | Whatever you parse | Nested JSON you map yourself |
Pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
What is a Facebook profile scraper?
A Facebook profile scraper reads a public profile's visible data and returns it in a structured format. Our Facebook profile scraper API takes a username or profile URL and returns the numeric id, name, about text, category, and profile image as JSON. It works best on public-figure and business profiles, which ship an Open Graph block a logged-out visitor can read.
Can I scrape any Facebook profile?
Public-figure and business profiles that render an Open Graph block logged-out, like zuck, resolve cleanly. Personal profiles are the most gated surface on Facebook: logged out they usually return a bare app shell with no data, so the endpoint reports a clear diagnostic rather than inventing fields. We never fabricate a profile from a wall. For public-figure Pages specifically, the page endpoint returns richer counts.
What is the difference between the profile and page endpoints?
The profile endpoint returns a single profile object (id, name, about, category, image) and is scoped to profiles at facebook.com/
Do I need a Facebook API key or granted permission?
No. You authenticate with a single facebookscraperapi key. The official Graph API cannot read a person's profile without that person logging in and granting your app permission, which is not workable for third-party data. Our endpoint reads the public Open Graph data a logged-out visitor sees on profiles that expose it, with no app review or consent flow.
How is the numeric profile id resolved?
We take it from the embedded page entity when present, and otherwise parse it from the app deep-link tags (the fb:// URL in the al:android:url or al:ios:url meta). That is how the sample resolves zuck to id 4. The numeric id is stable even when a profile changes its vanity username, so it is the safer key for your records.
How fast is the Facebook profile scraper API?
Median end-to-end response is about 2.6 seconds, including US residential routing, anti-bot handling, and parsing. You are billed only for successful requests, and the free tier includes 1,000 requests so you can test which profiles resolve before paying.