Facebook data API: the official API or an Apify Actor?
Facebook has an official API with limited access. 10 Apify Actors in this catalogue return Facebook data over HTTP too: send the input to Apify's run-sync endpoint with your token and get the records back as JSON, from $0.10 a run plus $0.99 per 1,000 results at Store prices (plus platform usage). One answers a single request directly in server mode.
Side by side
| Meta Graph API | Apify Actors (10) | |
|---|---|---|
| Access | Limited access | Apify API token (any account) |
| What you get | The Graph API exposes data for apps and Pages you manage, plus some public Page data with approved permissions. It is not a general crawler of public posts. | Rows defined by each Actor's published schema; up to 75 fields per record |
| Price | No per-call fee is published for standard Graph API use; access depends on app review. | From $0.10 a run plus $0.99 per 1,000 results (Store price, Free plan), plus platform usage |
| Limits | Permissions, app review and rate limits apply. Many public-content use cases are not supported. | Synchronous calls wait up to 300 s; longer runs go asynchronous |
| Docs | Meta Graph API | Apify API: run-sync |
Official API facts checked 2026-11-09. Use public data, respect Meta's terms and do not collect private profile data; not legal advice.
Which Actor for which job
All of them list $0.99 per 1,000 results on the Store, plus a start fee per run.
| Actor | Returns | Fields include | Call it |
|---|---|---|---|
| Facebook Page Photo Gallery & Engagement Scraper | One row per public Facebook photo with image and thumbnail links, caption, timestamp, reaction breakdown, comments, shares… | photoId, photoUrl, imageUrl | run-sync · Apify |
| Facebook Page & Profile Finder by Keyword or URL | Structured Facebook Page or profile records: name, ID, URL, verified badge, entity type, category, contact details, followers… | pageName, facebookUrl, entityType | One request · Apify |
| Facebook Public Follower & Following Snapshot Tool | Facebook Page/Profile follower and following rows collected through public cursor pagination, plus per-target summaries with the… | name, profileId, profileTypename | run-sync · Apify |
| Facebook Business Page Finder by Keyword & City | One record per Facebook business Page with identity, public contact details, social links, followers, recommendation metrics… | pageName, category, address | run-sync · Apify |
| Facebook Business Page Recommendation & Review Scraper | Review rows with recommendation status, author details, reactions, tags, comments and owner replies, plus one page-summary row… | pageName, authorName, isRecommended | run-sync · Apify |
| Facebook Event Details & New-Event Monitor Scraper | Public Facebook event records with dates, venue and GPS (when exposed), hosts, ticket data, recurring occurrences, online links… | event_id, name, formatted_date | run-sync · Apify |
| Facebook Group Feed & Engagement Extractor | Dataset of public Facebook group posts with text, media, reactions, comment threads, reshares and optional group profile data… | postId, authorName, text | run-sync · Apify |
| Facebook Marketplace Listing & Price Extractor | One JSON object per Facebook Marketplace listing. Canonical groups: identity and provenance (id, listingUrl, sourceUrl… | title, price, city | run-sync · Apify |
| Facebook Post & Group Comment Thread Extractor | One record per Facebook comment or reply: text, author details, timestamp, per-reaction-type counts, reply/thread context… | profileName, text, date | run-sync · Apify |
| Facebook Timeline Posts & Reel Transcript Extractor | One record per Facebook post, reel or video: text, author, reactions by type, comment and share counts, video views, media… | postId, postType, text | run-sync · Apify |
Call Facebook Page & Profile Finder by Keyword or URL
Server mode is on for this Actor (checked 2026-11-12): one request returns the results in the response. Set APIFY_TOKEN first; runs bill to that account.
curl (GET)
curl -H "Authorization: Bearer $APIFY_TOKEN" \
"https://cjq13rwjckkpe9rcc.apify.actor/?mode=search&searchQueries=Starbucks&searchType=pages&maxResults=1&fetchPageDetails=false&includeReviews=false" curl (POST)
curl -X POST "https://cjq13rwjckkpe9rcc.apify.actor/" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"search","searchQueries":["Starbucks"],"searchType":"pages","maxResults":1,"fetchPageDetails":false,"includeReviews":false}' JavaScript
// Node 18+ or any runtime with fetch. One request = one lookup; results come back in the response.
const response = await fetch("https://cjq13rwjckkpe9rcc.apify.actor/", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.APIFY_TOKEN}`, "Content-Type": "application/json" },
body: JSON.stringify({
"mode": "search",
"searchQueries": [
"Starbucks"
],
"searchType": "pages",
"maxResults": 1,
"fetchPageDetails": false,
"includeReviews": false
}),
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const items = await response.json();
console.log(items.length, items[0]); Python
import os
import requests
# One request = one lookup; results come back in the response.
response = requests.post(
"https://cjq13rwjckkpe9rcc.apify.actor/",
headers={"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"},
json={
"mode": "search",
"searchQueries": [
"Starbucks",
],
"searchType": "pages",
"maxResults": 1,
"fetchPageDetails": False,
"includeReviews": False,
},
timeout=300,
)
response.raise_for_status()
items = response.json()
print(len(items), items[:1]) Generated from the Actor's published schema and checked, not executed.
Same data, other routes
- Facebook MCP server: these Actors as tools in Claude, Cursor, ChatGPT, VS Code and Codex.
- Facebook Page posts to Google Sheets: an n8n workflow you can import.
- Every Actor with a one-request API
When a call fails
Why does the workflow or script stop with HTTP 408?
The synchronous endpoint waits at most 300 seconds. After that it answers 408 while the run keeps going in Apify. Lower the result limit, or start the run asynchronously, wait for it to finish and then read its dataset.
Source: Apify API: run Actor synchronously and get dataset items
What do 400, 401, 402 and 403 from the Apify API mean?
Read error.type in the response body. 400 is invalid Actor input. 401 (user-or-token-not-found) means a token reached Apify but it is wrong or revoked. 402 with x402-payment-required means no token reached Apify at all: the n8n credential or the Authorization: Bearer header is missing, and Apify is offering its pay-per-run x402 route for agents instead; any other 402 is an exhausted usage limit on the account that pays for the run. 403 is a token without permission for that Actor or storage.
Source: Apify API: authentication; Apify documentation: agentic payments with x402; Apify API: run Actor synchronously and get dataset items
Why does a server-mode request answer 429?
If no Actor run can take the request within 2 minutes, Apify answers 429; the first response must also arrive within 5 minutes. Retry after a short pause, and send one request at a time while you test.
How do I authenticate server-mode requests?
Send Authorization: Bearer with your Apify API token. A token query parameter also works and is stripped before the request reaches the Actor, but a header keeps the token out of logs and browser history.
Questions
Is there an official Facebook API?
The Graph API exposes data for apps and Pages you manage, plus some public Page data with approved permissions. It is not a general crawler of public posts. No per-call fee is published for standard Graph API use; access depends on app review.
How much does Facebook data cost through an Apify Actor?
The Actors listed here charge from $0.10 a run plus $0.99 per 1,000 results on the Apify Store (Free plan), checked 2026-11-12, billed to the Apify account whose token makes the call. Actor start events and platform usage can add to that.
Can I get Facebook data as JSON in one HTTP request?
Yes. Facebook Page & Profile Finder by Keyword or URL has server mode on: a GET or POST to the Actor's own URL returns the results in the response. Every other Actor here works through POST /v2/actors/<id>/run-sync-get-dataset-items, which waits up to 300 seconds for the run.
Can an AI agent use the same Facebook data?
Yes. The Facebook MCP page bundles these Actors into one Apify MCP URL for Claude, Cursor, ChatGPT, VS Code and Codex.
Is it allowed to collect Facebook data?
Use public data, respect Meta's terms and do not collect private profile data; not legal advice. Read Facebook's terms before you build on the data.
Sources
- Meta Graph API documentation, checked 2026-11-09
- Apify API: run Actor synchronously, checked 2026-11-11
- Facebook terms