Facebook Photos Scraper — Pages & Photo URLs, No Login avatar

Facebook Photos Scraper — Pages & Photo URLs, No Login

Pricing

from $0.99 / 1,000 photos

Go to Apify Store
Facebook Photos Scraper — Pages & Photo URLs, No Login

Facebook Photos Scraper — Pages & Photo URLs, No Login

Scrape public Facebook Page photos without logging in. Paste a Page URL or a photo permalink and get the full-size image, Facebook photo link, OCR/alt text, dimensions and page identity. Eight photos per request. Your limit is enforced before each call, so you are never charged past it.

Pricing

from $0.99 / 1,000 photos

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

18

Monthly active users

8 days ago

Last modified

Categories

Share

Turn any public Facebook Page into a stream of photo rows. Paste a Page URL or a single photo permalink and get the full-size image, Facebook photo link, OCR/alt text, and page identity — no login.

One row per photo. Your limit is the last photo you pay for.

Why Use This Scraper?

  • Public Pages and photo permalinks in the same run
  • Full-size image URL plus Facebook's own photo page
  • OCR / alt text Facebook already attaches (accessibility_caption)
  • Hard cap before each GraphQL page — extras in the last batch are dropped, not charged
  • Date window sent as Facebook's own created_time_start / created_time_end
  • Residential proxy included; leave the proxy field empty
  • Same photos walk as the official Apify actor, at $0.99 / 1,000 photos (theirs is $3 / 1,000)

Overview

Built for researchers, journalists, brand teams, and agencies who need the photos a public Facebook Page actually published — not the posts around them.

Every input becomes a photo row (dataType: "photo"). A Page URL walks the photos tab. A /photo/?fbid=… URL fetches that one image. Mixing both is fine: permalinks run first, then each Page.

This actor does not scrape albums-of-others (photos_of), private profiles, or anything behind a login wall.

Supported Inputs

InputExampleWhat happens
Page URLhttps://www.facebook.com/nasaWalks the public photos tab
Page handlenasaSame as the Page URL
Photos tabhttps://www.facebook.com/nasa/photosSame walk; tab suffix is stripped to the Page
Photo permalinkhttps://www.facebook.com/photo/?fbid=1629624498532920One photo, one request
photo.phphttps://www.facebook.com/photo.php?fbid=…Same as permalink

Not supported: private profiles, login-only pages, personal photos_of albums, Facebook Groups, Reels-as-video, post URLs (use Facebook Page Posts Scraper).

Use Cases

WhoWhat they take
Brand / socialEvery public photo a competitor Page posted
Journalism / researchImage URLs + Facebook's own alt/OCR text
Creative / moodboardsFull-size CDN links, no browser click-through
AgenciesA CSV of facebookUrl + image + ocrText per client Page

How It Works

  1. Open the Page (or the photo permalink) logged out.
  2. Read the photos_by collection id Facebook already put in the HTML.
  3. POST ProfileCometAppCollectionPhotosRendererPaginationQuery to /api/graphql/ — 8 photos per page, cursor from page_info.end_cursor.
  4. Map each edge to one row: id, image, facebookUrl, ocrText, page identity.
  5. Stop at resultsLimit. Charge one photo event per row pushed.

Input Configuration

FieldTypeDefaultWhat it does
startUrlsarrayrequiredPage URLs, handles, and/or photo permalinks
resultsLimitinteger50Hard cap across the whole run
onlyNewerThandatecreated_time_start on the GraphQL query
onlyOlderThandatecreated_time_end on the GraphQL query
proxyobjectemptyLeave empty. Residential is included.

50 photos from one Page

{
"startUrls": [{ "url": "https://www.facebook.com/nasa" }],
"resultsLimit": 50
}

One photo permalink

{
"startUrls": [{ "url": "https://www.facebook.com/photo/?fbid=1629624498532920" }],
"resultsLimit": 1
}

Date window

{
"startUrls": [{ "url": "https://www.facebook.com/nasa" }],
"resultsLimit": 100,
"onlyNewerThan": "2026-01-01",
"onlyOlderThan": "2026-06-01"
}

Output Overview

Each dataset item is one photo. The four fields the official Apify actor shows (facebookUrl, image, dataType, ocrText) are always present. Extra fields carry page identity and a thumbnail when Facebook sent one.

Output Samples

Page walk (https://www.facebook.com/nasa):

{
"dataType": "photo",
"id": "1629528928542477",
"facebookId": "100044561550831",
"facebookUrl": "https://www.facebook.com/photo.php?fbid=1629528928542477&set=pb.100044561550831.-2207520000&type=3",
"url": "https://www.facebook.com/photo.php?fbid=1629528928542477&set=pb.100044561550831.-2207520000&type=3",
"image": "https://scontent.xx.fbcdn.net/v/t39.99422-6/…",
"imageHeight": 1707,
"imageWidth": 1920,
"thumbnail": "https://scontent.xx.fbcdn.net/v/t39.99422-6/…",
"ocrText": "NASA Deputy Administrator Matt Anderson, center, Ambassador of Djibouti to the United States, Mohamed Siad Douale, left, and Assistant Secretary of State for African Affairs, Frank Garcia, right, pose for a group photograph…",
"pageUrl": "https://www.facebook.com/nasa",
"pageName": "NASA - National Aeronautics and Space Administration",
"pageId": "100044561550831",
"inputUrl": "https://www.facebook.com/nasa",
"pageAdLibrary": null
}

ocrText is Facebook's accessibility_caption. The placeholder "No photo description available." is stored as null.

Key Output Fields

Identity

FieldMeaning
idPhoto fbid
facebookIdSame fbid (official-actor alias)
facebookUrl / urlFacebook photo page
dataTypeAlways "photo"

Image

FieldMeaning
imageFull-size CDN URL (viewer_image)
imageHeight / imageWidthPixels when Facebook sent them
thumbnailGrid thumbnail (image.uri)
ocrTextAlt / OCR caption, or null

Page

FieldMeaning
pageUrl / pageName / pageIdThe Page the photo belongs to
inputUrlWhat you pasted
pageAdLibraryAds Library stub when the Page HTML had one

Pricing

EventWhenPrice
Actor startOnce per run, per GB of memory$0.005
PhotoEach photo row pushed$0.00099

Free Apify accounts are capped at 10 photos from 1 Page. You are not charged for extras Facebook returns past your resultsLimit.

FAQ

Do I need a Facebook login? No. The walk is logged out (__user=0). Private or restricted Pages fail with a login-wall error.

Why did I get 48 photos when I asked for 50? Facebook serves 8 photos per GraphQL page. The run stops at your cap; if the last full page lands at 48 and the next page is empty or the cursor stalls, you keep 48.

Is ocrText real OCR? It is Facebook's own accessibility caption — the same string the official Apify actor writes to ocrText. It is not a second-pass OCR model.

Can I scrape a single photo URL? Yes. /photo/?fbid=… and photo.php?fbid=… are first-class inputs.

Does this walk albums? It walks the Page's photos_by tab (photos the Page posted). Not photos_of and not a named album URL.

Support

Open an issue on the actor's Issues tab on Apify. Include the input URL and the run ID.

Additional Services

Need a different export shape, a scheduled Page list, or photos plus the parent post text in one dataset? Say what the job is — custom work is available.

Explore More Scrapers

🤖 For AI Agents & LLM Apps

Purpose: scrape public Facebook Page photos or a single photo permalink. No login.

Minimal input

{
"startUrls": [{ "url": "https://www.facebook.com/nasa" }],
"resultsLimit": 50
}

Output fields (flat): dataType, id, facebookId, facebookUrl, url, image, imageHeight, imageWidth, thumbnail, ocrText, pageUrl, pageName, pageId, inputUrl, pageAdLibrary

Billing: apify-actor-start $0.005 + one photo event at $0.00099 per dataset row. Free Apify accounts are capped at 10 photos from 1 Page.

Behavior: 8 photos per GraphQL request. Date filters are query arguments, not a client-side filter. Login walls fail the Page, not the run (other URLs still run). An empty dataset fails the run.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. or Facebook. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Facebook Page photos — no authenticated endpoints, paid features, or content behind the Facebook login wall. Users are responsible for ensuring their use complies with Facebook's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

SEO Keywords

facebook photos scraper, facebook page photos scraper, scrape facebook photos, facebook image scraper, facebook photo url extractor, facebook ocr text scraper, facebook accessibility caption, facebook page image downloader, facebook photo permalink scraper, facebook scontent scraper, facebook photos tab scraper, facebook public photos, facebook photo dataset, facebook competitor photos, facebook brand image monitor, facebook page media export, facebook photo csv, facebook photo json, facebook photo api alternative, nasa facebook photos