# Facebook Photos Scraper (`automly/facebook-photos-scraper`) Actor

Scrape photos from any public Facebook Page, profile or album: full-size image link, width and height, photo link and Facebook's description of what the photo shows. No login.

- **URL**: https://apify.com/automly/facebook-photos-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Social media
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.38 / 1,000 photos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Facebook Photos Scraper

### What is Facebook Photos Scraper?

**Facebook Photos Scraper** lets you **scrape photos from public Facebook Pages, profiles and albums**: a link to the full-size image, its width and height, the photo's own Facebook link, and Facebook's description of what the photo shows ("May be an image of 2 people and text"). Paste Page or album links, click **Start**, and download the photos as Excel, CSV or JSON.

- 🖼️ **Full-size images:** the original image file, not a small thumbnail
- 📝 **Photo descriptions:** the text Facebook writes for each photo, or the description the Page added
- 📚 **Albums too:** paste an album link to get just that album's photos
- 📅 **Newest first:** set how many photos you want per Page
- 🔓 **No login:** no Facebook account, cookies or API key needed
- 💸 **Free to try:** every Apify account gets $5 of free usage each month

### What can Facebook Photos Scraper do?

- Scrape photos from any public Facebook Page or profile
- Scrape the photos of a **single album**
- Scrape **many Pages and albums in one run**, read side by side
- Get **every photo** a Page shows, or set how many you want per link
- Export to Excel, CSV, JSON, HTML or XML, or send the photos to Google Sheets, Make, Zapier and more

### What data can you extract from Facebook photos?

| | | |
|---|---|---|
| 🖼️ Full-size image link | 📐 Width and height | 🔗 Photo link |
| 📝 Photo description | 🆔 Photo ID | 📚 Album ID (album links) |
| 📄 Page or profile link | 🆔 Page or profile ID | 🎞️ Photo or video |

### How to scrape Facebook photos

1. [Create a free Apify account](https://console.apify.com/sign-up) (no credit card needed).
2. Open **Facebook Photos Scraper**.
3. Paste one or more **Facebook Page, profile or album links**, for example `https://www.facebook.com/NASA`.
4. Choose how many photos you want per link and click **Start**.
5. When the run finishes, download your photos as Excel, CSV, JSON, HTML or XML.

### How much does it cost to scrape Facebook photos?

You pay only for the photos you get, per 1,000 photos. See the **Pricing** tab for the current price. Every Apify account gets **$5 of free usage each month**, so you can try it at no cost.

### ⬇️ Input

A Page can be given as its link (`https://www.facebook.com/NASA`), its photos link (`https://www.facebook.com/NASA/photos`), or a `profile.php?id=` link. An album is given as its link (`https://www.facebook.com/media/set/?set=a.416661013162614&type=3`): open the album on Facebook and copy the address.

| Setting | What it does |
|---|---|
| Facebook Pages, profiles or albums | The links to get photos from |
| Photos per Page, profile or album | How many photos to get from each link, newest first. Leave it empty to get every photo |

Example: the newest 100 photos of two Pages.

```json
{
  "startUrls": [
    "https://www.facebook.com/NASA",
    "https://www.facebook.com/natgeo/photos"
  ],
  "resultsLimit": 100
}
```

Example: every photo in one album.

```json
{
  "startUrls": ["https://www.facebook.com/media/set/?set=a.416661013162614&type=3"]
}
```

### ⬆️ Output

You get one row per photo. You can view them as a table in Apify Console or download them as Excel, CSV, JSON, HTML or XML.

```json
{
  "facebookUrl": "https://www.facebook.com/NASA",
  "inputUrl": "https://www.facebook.com/NASA",
  "facebookId": "100044561550831",
  "id": "1672152994280070",
  "dataType": "photo",
  "image": "https://scontent-ord5-1.xx.fbcdn.net/v/t39.99422-6/872064392_1772088687399080_6520374397283068537_n.png?...",
  "width": 1920,
  "height": 1280,
  "ocrText": "Three jet aircraft, each with a white nose and blue body, fly in a triangle formation against a clear blue sky. White trails follow each jet.",
  "url": "https://www.facebook.com/photo.php?fbid=1672152994280070&set=pb.100044561550831.-2207520000&type=3",
  "is_playable": false,
  "albumId": null
}
```

Facebook's image links stop working after some days, so download the images you need soon after the run.

Each run also saves a short report with how many links and photos it covered, and any link it could not scrape with the reason (for example, a Page or album that does not exist or is not public).

### How can I use Facebook photos data?

- **Brand and competitor monitoring:** see what your competitors post and how their visual content changes
- **Content research:** collect a Page's photos for campaigns, mood boards or archives
- **AI and computer vision:** build image datasets with ready-made text descriptions
- **Marketing analysis:** find the themes and formats a Page uses most
- **Backups:** keep a copy of your own Page's photos and albums

### ❓FAQ

#### How many photos can I scrape from one Facebook Page?

Every photo the Page shows to visitors. Leave **Photos per Page, profile or album** empty to get all of them, or set a number. Big Pages have thousands of photos; a run gets about 1,000 photos a minute from each Page.

#### What is the photo description?

Facebook writes a short description for each photo, such as "May be an image of 2 people and text". Some Pages write their own description instead. You get it in `ocrText`.

#### Can I scrape a single album?

Yes. Open the album on Facebook, copy its link (it contains `set=a.`) and paste it into the input.

#### Why does a link come back as "not found"?

The Page, profile or album does not exist, is not public, or does not show its photos to visitors. Such links are listed in the run report; they do not fail the run.

#### Do I need a Facebook account?

No. You don't need a Facebook account, cookies or an API key.

#### Does it show the photo date, likes or comments?

No. Facebook does not show them in a Page's photo list. For posts with their reactions, comments and shares, use [Facebook Posts Scraper](https://apify.com/automly/facebook-page-posts-scraper).

#### Can I connect Facebook Photos Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks, or let AI assistants and agents run it through the Apify MCP server at [mcp.apify.com](https://mcp.apify.com).

#### Is it legal to scrape Facebook photos?

This scraper only collects photos that Pages and people chose to post publicly. It does not collect private data such as e-mail addresses or phone numbers. Photos can still show people and be protected by copyright and laws such as GDPR, so only scrape and use them for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Facebook Photos Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Facebook or Meta.

#### Something isn't working. What should I do?

Open the **Issues** tab and tell us the link and what you expected. We usually reply within a day.

### Scrape more Facebook data

| Actor | What it gets |
|---|---|
| [Facebook Posts Scraper](https://apify.com/automly/facebook-page-posts-scraper) | Posts from public Pages, with reactions, comments and shares counts |
| [Facebook Comments Scraper](https://apify.com/automly/facebook-post-comments-scraper) | Comments and replies from public posts |
| [Facebook Pages Scraper](https://apify.com/automly/facebook-page-details-scraper) | Followers, category and contact details of many Pages |

### ⭐ Your feedback

Ideas, missing fields or problems: open the **Issues** tab and we'll take a look. If Facebook Photos Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# Actor input Schema

## `startUrls` (type: `array`):

Page or profile links to get their photos, newest first, e.g. https://www.facebook.com/NASA, or an album link to get that album's photos, e.g. https://www.facebook.com/media/set/?set=a.416661013162614\&type=3.

## `resultsLimit` (type: `integer`):

The most photos to get from each link, e.g. 100. Leave empty to get every photo the Page or album shows.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.facebook.com/NASA"
    },
    {
      "url": "https://www.facebook.com/media/set/?set=a.416661013162614&type=3"
    }
  ],
  "resultsLimit": 20
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (type: `string`):

No description

## `report` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.facebook.com/NASA"
        }
    ],
    "resultsLimit": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/facebook-photos-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.facebook.com/NASA" }],
    "resultsLimit": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("automly/facebook-photos-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.facebook.com/NASA"
    }
  ],
  "resultsLimit": 20
}' |
apify call automly/facebook-photos-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/facebook-photos-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/kSvIAJAFzXNUAw3kn/builds/hrYheIcNfc1Gm2Vrr/openapi.json
