~ / endpoints / Profile API

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.

Get a free API keyAll Facebook endpoints
1,000
free requests / mo
2.6s
median response
JSON
structured output
US
residential exit
the friction

Getting Facebook Profile data is harder than it looks

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.

start here

Hit the Facebook Profile Scraper API with one request

cURL
curl "https://api.facebookscraperapi.com/api/v1/facebook/profile?username=zuck&api_key=$API_KEY"
Python
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"])
options

Parameters

ParameterRequiredDefaultNotes
usernamerequired-The public profile username or vanity (the path segment in facebook.com/), e.g. zuck. Required unless you pass url.
urloptional-A full facebook.com/ or profile.php?id= URL. The username or id is taken from it. One of username or url is required.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
the output

The Facebook Profile Scraper API output schema

200 OK
{
  "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"
}
FieldTypeDescription
idstringThe profile's numeric id, from the embedded entity or the app deep-link. For zuck this is 4.
usernamestringThe profile vanity resolved from the input or the canonical URL.
urlstringThe canonical profile URL.
namestringThe profile's display name.
categorystringThe category for public-figure or business profiles when exposed, otherwise null.
aboutstringThe about or description text from the Open Graph block. For public figures it includes the likes and talking-about line.
profile_imagestringURL of the profile picture. Also returned as thumbnail.
is_verifiedbooleanVerification flag when the embedded entity exposes it, otherwise null.
data_sourcestringHow the fields were resolved: opengraph when read from the og block, relay-entity when an embedded entity was present.
real uses

Build with Facebook data

>

Public-figure enrichment

Resolve public-figure and business profile usernames into id, name, about text, and profile image for a clean contact or creator record.
>

Identity resolution

Turn a Facebook profile URL into a stable numeric id and canonical URL, so you can key records on the id even when a vanity changes.
>

Profile image capture

Pull the profile_image URL to display or archive a public figure's current avatar alongside your own data.
>

Creator catalogs

Build a searchable list of public-figure profiles with name, category, and about text pulled from the pages that render logged-out.
>

Link verification

Confirm that a Facebook profile link points to the person you expect by reading back the resolved name and id.
>

Cross-platform matching

Use the resolved name and image to match a Facebook public figure to the same person on other platforms in your dataset.
why it holds up

Why teams ship on our Facebook Profile Scraper API

We force the request onto a US residential exit and read the name, about text, image, and numeric id straight from the profile's Open Graph block. For public-figure and business profiles that ship that block logged-out, you get a clean object in about 2.6 seconds with one API key. When only a shell or login wall is served, as personal profiles usually return, we fail with a clear diagnostic instead of guessing.

*

Username or URL input

Pass a vanity username or a full profile URL, including profile.php?id= links, and we resolve it server side.
*

Numeric id resolution

We pull the stable numeric profile id from the embedded entity or the app deep-link, so you can key on it.
*

Residential routing built in

Requests run through US residential proxies, the tier that gets a real profile document instead of a bare shell.
*

Honest wall handling

Personal profiles are heavily gated logged-out. When only a shell or wall is served, we return a classifiable diagnostic, never a fabricated profile.
*

Data-source flag

The data_source field tells you whether fields came from the Open Graph block or an embedded entity, so you can gate on capture quality.
*

Validated JSON schema

The same field names and types return on every call, so your parser stays stable as Facebook changes its markup.
vs diy

How the Facebook Profile Scraper API compares

Our APIDIY (requests / headless)Facebook Graph API
Read a public-figure profile logged-outYes, when the og block rendersPossible but you fight the shell and wallNo, needs the person's own login and consent
SetupAPI key onlyResidential proxies, headless browser, parsersMeta app plus user-granted permissions
Numeric id resolutionReturnedYou parse it yourselfAvailable with granted permission
Anti-bot and proxiesBuilt in, US residentialYou build and maintain itNot applicable
Personal profilesHonest diagnostic when walledUsually a bare shellOnly with that user's consent
OutputFlat, validated JSONWhatever you parseNested JSON you map yourself
plans & pricing

Pricing built for scale

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky 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/. The page endpoint targets Pages and additionally returns like, follower, and talking-about counts, decomposed into a Page row plus about facets. For a public figure that runs a Page, the page endpoint gives you the engagement numbers; the profile endpoint gives you the compact identity object.

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.

Ship with the Facebook Profile Scraper API
Test free with 1,000 requests. No credit card needed.
Get a free API key All Facebook endpoints