Facebook Photos Scraper - Pages, Albums, Tagged & Group Photos avatar

Facebook Photos Scraper - Pages, Albums, Tagged & Group Photos

Pricing

from $0.90 / 1,000 photos

Go to Apify Store
Facebook Photos Scraper - Pages, Albums, Tagged & Group Photos

Facebook Photos Scraper - Pages, Albums, Tagged & Group Photos

Scrape every public photo of a Facebook Page, profile, album or group: full-size image URL, size, alt text and link. Optional details: upload date, caption, reactions, comments, shares and tags. Date window, album list, monitor mode for new photos. $0.90 per 1,000 photos. No login or cookies.

Pricing

from $0.90 / 1,000 photos

Rating

0.0

(0)

Developer

Top Api

Top Api

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Share

What does Facebook Photos Scraper do?

Facebook Photos Scraper extracts Facebook photos from public Pages, profiles, albums and groups and turns each photo into a structured row: the full-size image URL, its width and height, Facebook's own alt text and the photo link. Turn on details and every row also gets the upload date, caption, reactions, comment and share counts, the post link and the people tagged. Built for brand monitoring, competitor creative research, image datasets and archiving.

Also searched as: Facebook image scraper Β· Facebook photo downloader Β· Facebook album scraper Β· Facebook page photos API

Facebook Page photos tab that Facebook Photos Scraper turns into rows

  • Every photo of a Page, newest first: the Page's own photos, the photos others tagged it in, or both, plus each album's photos and a list of its albums.
  • Full-size images: the image Facebook shows in its photo viewer (up to 2048 px wide) and the grid thumbnail, with the true width and height.
  • Photo details on request: upload date, caption, reactions by type, comments, shares, post link, album, tagged people, uploader and privacy.
  • Facebook's own date window: a year, a month or any date range; Facebook filters the photos itself, so a narrow window costs no extra requests.
  • Monitor mode: a scheduled run returns only photos no earlier run delivered.
  • Save image files: optionally download each image into your key-value store and get a permanent link (Facebook's own image links expire after a few days).
  • No login, cookies or Facebook API key: paste Page, album, group or photo links, or just usernames.
  • Export anywhere: JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets and the Apify MCP server.

What data can you get from Facebook photos?

πŸ–ΌοΈ Full-size image URL (`image`)πŸ“ Width Γ— heightπŸ”— Photo link and id
🦯 Facebook's alt text (`ocrText`)🏷️ Source: own / tagged / album / groupπŸ”’ Position, newest first
πŸ“… Upload date (`createdTime`)πŸ“ Caption❀️ Reactions, total and by type
πŸ’¬ Comment countπŸ” Share countπŸ“° Post id and link
πŸ“š Album id and titleπŸ‘₯ Tagged peopleπŸ‘€ Uploader, verified badge
🏒 Page name, id, followersπŸ“£ Page's Ad Library idπŸ’Ύ Saved image link (`imageStoredUrl`)

On a 75-photo test run with details (NASA, Mark Zuckerberg, The Copper Kettle Restaurant) the image, size, alt text, upload date, reactions, comments, shares and post link were filled on 100% of rows and the caption on 93%. On a tagged-photos run (20 photos) every row named the tagged people.

How to scrape Facebook photos with Facebook Photos Scraper

  1. Create a free Apify account. The free plan includes $5 of monthly credit and needs no card.
  2. Open Facebook Photos Scraper and click Try for free.
  3. Paste Facebook Page, profile, album, group or photo links into Facebook URLs (or usernames into Page usernames or ids) and set Photos per source.
  4. Optional: pick Which photos, a date window, and Add photo details.
  5. Click Start. Photos stream into the dataset as they are read.
  6. Open the Storage tab and Export as JSON, CSV or Excel, or schedule the run.

⬇️ Input

ParameterTypeDescription
πŸ” What to scrape
startUrlsList of { "url": … }Page or profile (https://www.facebook.com/NASA, profile.php?id=…, /people/…/<id>), album (/media/set/?set=a.<id>), group (/groups/<id or name>) or photo (/photo/?fbid=…) links. Prefill: humansofnewyork
pageNamesListUsernames or numeric ids instead of URLs, e.g. NASA, 100044561550831
photoTypeSelectphotos_by (posted by the Page), photos_of (tagged photos) or both. Default: photos_by
🎯 Filters (applied by Facebook)
onlyPhotosNewerThanDateUploaded on or after: 2026-01-01 or relative 30 days, 6 months
onlyPhotosOlderThanDateUploaded before this date
dateFilterTextA year (2025) or a month (2025-06), like Facebook's own photo filter
βœ‚οΈ Refine results
keywords / excludeKeywordsListKeep / drop photos whose alt text (and caption, with details on) contains a word
minWidthIntegerMinimum image width in pixels
minReactionsIntegerMinimum reactions (needs details)
βž• Extra data
includeDetailsBooleanUpload date, caption, reactions, comments, shares, post, album, tags, uploader, privacy. Charged as Photo details. Default: false
includeAlbumsBooleanOne row per album: title, item count, cover, link. Charged as Album
includeAlbumPhotosBooleanAlso walk the photos inside each album, with the album on each row
maxAlbums / maxPhotosPerAlbumIntegerAlbums per Page (default 10) and photos per album (default 50, 0 = all)
includePageContextBooleanAdd the Page's category (one extra page load per Page, no extra charge)
storeImages / imageStoreNameBoolean / TextSave each image file to a named key-value store. Charged as Image stored
πŸ” Monitoring
monitorMode / monitorStoreNameBoolean / TextReturn only photos not delivered by earlier runs with the same store. Pair with a schedule
πŸ“¦ Output
resultsLimitIntegerPhotos per source (per tab when both). Default 50, prefill 20, 0 = all (up to 10,000)
maxItemsIntegerRows in total across all sources. 0 = no limit
compactBooleanCore columns only, for AI agents and MCP
βš™οΈ Advanced
proxyConfigurationProxyLeave off: the run starts without a proxy and moves to the Apify datacenter proxy, then RESIDENTIAL, only if Facebook refuses it
maxConcurrency / concurrentPhotosIntegerSources read in parallel (default 3) / detail requests in flight per source (default 8)

Input JSON

{
"startUrls": [{ "url": "https://www.facebook.com/NASA" }],
"photoType": "photos_by",
"resultsLimit": 100,
"onlyPhotosNewerThan": "2026-01-01",
"includeDetails": true
}

Paste the Page, not a post

A Page or profile link reads its whole photo library. A post link is not a photo source: open the photo and paste its /photo/?fbid= link, or paste the Page. Accepted: https://www.facebook.com/NASA, NASA, https://www.facebook.com/profile.php?id=100044561550831. Rejected (listed in the run summary): event, search and share links.

Use the date window instead of a large limit

On Pages and profiles the date window is applied by Facebook: "dateFilter": "2025" returned exactly the 220 photos Humans of New York posted in 2025 in 28 requests. Album and group photos are dated one by one (their grids ignore Facebook's filter), so a window there costs one detail request per photo checked.

Use both tabs for brand monitoring

"photoType": "both" adds the photos other people tagged the Page in. The limit applies to each tab, so resultsLimit: 50 returns up to 50 own photos and 50 tagged ones.

⬆️ Output

Every photo becomes one dataset item. Here is a table of a real run on NASA's Page with details on:

Facebook Photos Scraper output table with image, alt text, size, date, caption and engagement

The same row as JSON (long values trimmed here):

{
"dataType": "photo",
"id": "1652244872937549",
"url": "https://www.facebook.com/photo.php?fbid=1652244872937549&set=pb.100044561550831.-2207520000&type=3",
"image": "https://scontent-iad6-1.xx.fbcdn.net/v/t39.99422-6/841844892…",
"width": 2048,
"height": 1911,
"ocrText": "A young star cluster filled with many stars that display Webb's unique eight-pronged diffraction pattern…",
"photoType": "photos_by",
"position": 2,
"albumId": "416661013162614",
"pageName": "NASA - National Aeronautics and Space Administration",
"pageFollowers": 28746231,
"createdTime": "2026-10-09T20:54:33.000Z",
"caption": "Brewing up baby stars ⭐ NASA's James Webb Space Telescope's unique view reveals…",
"reactionsCount": 8640,
"reactions": { "like": 5199, "love": 3102, "care": 188, "wow": 122, "haha": 22, "angry": 5, "sad": 2 },
"commentsCount": 190,
"sharesCount": 909,
"postUrl": "https://www.facebook.com/NASA/posts/pfbid02hL3YCLokPkZbLhPqz…",
"privacy": "Public"
}

Facebook photo fields

FieldTypeWhat it isFill on test runs
id, urlstringPhoto id and link100%
imagestringImage URL; full size on Page / profile rows and on every row with details100%
thumbnailstringThe grid thumbnail100%
width, heightnumberSize of the photo in pixels100%
imageIsFullSizebooleanfalse on album / group rows without details (their grids print a 168-417 px image)100%
ocrTextstringFacebook's alt text ("May be an image of…")100%
photoTypestringphotos_by, photos_of, album, group or photo100%
positionnumberPosition in its source, newest first100%
collectionItemIdstringFacebook's id of the photo in the photos tab100% on Page rows
facebookId, pageName, pageUrl, pageUsernamestringThe Page or profile100% on Page rows
pageFollowers, pageTalkingAboutnumberAs printed on the Page100% on Page rows
pageIsVerified, pageAdLibrary, navSectionsmixedVerified badge, Ad Library id, photo sections100% on Page rows
albumId, albumTitlestringAlbum (album walks; any row with details)100% with details
groupId, groupTitle, ownerIdstringGroup rows: the group and the uploader's id100% on group rows
createdTime, timestampstring, numberDetails: upload time100%
captionstringDetails: text of the post93%
reactionsCount, reactionsnumber, objectDetails: reactions, total and by type100%, 92%
commentsCount, sharesCountnumberDetails: comment and share counts100%
postId, postUrl, creation_storymixedDetails: the post the photo was published in100%
ownerName, ownerUrl, ownerIsVerified, ownerProfilePicturemixedDetails: the uploader100%
tagsarrayDetails: tagged people {id, name, type, isProductTag}100% on tagged photos
previousPhotoId, nextPhotoId, privacystringDetails: neighbours in the album, audience92-100%
imageStoredUrl, imageStoreKeystringSaved image files100% when on
pageCategorystringPage categorywhen includePageContext
inputUrl, scrapedAtstringThe input line and the read time100%

Album rows (dataType: "album") carry id, url, albumTitle, itemCount, itemCountText ("10,975 Items"), coverImage and the Page columns.

How can I use Facebook photo data?

  • 🎯 Brand and agency teams: collect every photo a competitor posts and its engagement, then rank creatives by shares or reactions.
  • πŸ“Š Social media analysts: track posting cadence and engagement per month with the date window and createdTime.
  • πŸ”Ž Brand protection: watch the tagged-photos tab of your own Page for photos other people post about you.
  • πŸ€– AI and research teams: build labelled image sets from image + ocrText + caption, with permanent copies via Save image files.
  • πŸ—‚οΈ Archivists and journalists: export a Page's or a group's whole photo library, album by album.
  • πŸ“ˆ Monitoring: schedule monitor mode daily and receive only the new photos.

How much does it cost to scrape Facebook photos?

Facebook Photos Scraper is pay-per-result with no start fee: $0.90 per 1,000 photos. The add-ons are charged only for the rows that carry them: Photo details $0.90 per 1,000 photos, Album rows $0.90 per 1,000 albums, Image stored $0.90 per 1,000 saved images. Photos removed by your filters, photos delivered by an earlier monitor run, and sources Facebook does not show cost nothing.

PhotosPhotos onlyWith details
20$0.018$0.036
100$0.09$0.18
1,000$0.90$1.80
10,000$9.00$18.00

There is nothing else to pay: Apify platform usage is included in these prices. On test runs 100 photos took 4 seconds (13 seconds with details) and 1,000 photos 47 seconds (3.6 minutes with details).

Integrations, API, scheduling & MCP

  • Schedules: run Facebook Photos Scraper hourly, daily or weekly from the Schedules tab; with monitorMode on, each run returns only new photos.
  • Webhooks: call a URL when a run finishes and push the photos to your CRM, Slack or a sheet.
  • No-code: Make, Zapier, n8n, Google Sheets, Airtable and Slack via Apify integrations.
  • API: start runs and read the dataset with apify-client for Python or JavaScript.
  • MCP / AI agents: connect Claude, Cursor or any MCP client through the MCP tab; compact keeps the rows small.

More Facebook scrapers by TopApi

πŸ“° Facebook Page Posts ScraperπŸ“Š Facebook Post Details ScraperπŸ’¬ Facebook Comments Scraper
⭐ Facebook Reviews ScraperπŸ“… Facebook Events ScraperπŸ”Ž Facebook Search Posts Scraper
πŸ›’ Facebook Marketplace ScraperπŸ“Έ Instagram Profile Scraper🧭 All TopApi scrapers

Limits & empty runs

  • Per call: Facebook serves 8 photos per page of a photos tab or group and 14 per page of an album; deeper runs simply take more calls (1,000 photos = 125 calls).
  • Per source: up to 10,000 photos per source per run; a 1,000-photo test run made 125 list calls and 1,000 detail calls with no refusal.
  • Album and group images: their grids print a 168-417 px image; turn on details to get the full-size file on those rows.
  • Not available signed out: tag positions on the photo, Page like counts, photo view counts, pinned or sponsored flags, comment text (use Facebook Comments Scraper for comments).
  • Empty dataset: the source is unknown, private or age-restricted, every photo was removed by your filters, or monitor mode found nothing new; the run summary says which. Nothing is charged.

FAQ

How many photos can Facebook Photos Scraper collect from one Page?

Up to 10,000 per source per run (resultsLimit: 0). A test read 1,000 photos of Humans of New York with details in 3.6 minutes. For more, split the work with the date window.

How much does Facebook Photos Scraper cost?

$0.90 per 1,000 photos, plus $0.90 per 1,000 for details when you turn them on. No start fee, and platform usage is included.

Can I get photos from a specific year or month with Facebook Photos Scraper?

Yes. Set dateFilter to 2025 or 2025-06, or use the two date fields. On Pages and profiles Facebook applies the window itself.

Can I run Facebook Photos Scraper on a schedule to get only new photos?

Yes. Turn on monitorMode, keep the same monitorStoreName, and schedule the task. A run that finds nothing new delivers and charges nothing.

Can Facebook Photos Scraper download the image files?

Yes. Turn on Save image files: each image is stored in your key-value store and the row gets a permanent link. Facebook's own image links expire after a few days (the expiry is written into each link).

Does Facebook Photos Scraper get tagged photos and albums?

Yes. photoType: "photos_of" (or both) returns the photos other people tagged the Page in; includeAlbums lists the albums and includeAlbumPhotos walks their photos.

Do I need a Facebook account, cookies or an API key for Facebook Photos Scraper?

No. It reads only what Facebook shows to a signed-out visitor; you paste links or usernames and nothing else.

Can I use Facebook Photos Scraper with the Apify API or an MCP server?

Yes. Use apify-client from the API tab, or connect an MCP client through the MCP tab.

Why did my Facebook Photos Scraper run return no photos?

Usually the address is a post or event rather than a Page, album, group or photo, the Page is private or age-restricted, or your filters removed every photo. The run summary lists each input with its status.

Facebook Photos Scraper extracts only publicly available photos and does not log in or collect private data. Results can still contain personal data, which is regulated (for example by GDPR); make sure you have a legitimate purpose before you use it.

Your feedback

Found a bug or missing a field? Open an issue on the Issues tab and we will look at it.