# Facebook Page Photos Downloader (`igview-owner/facebook-page-photos-downloader`) Actor

Download all photos from public Facebook pages in one click. Facebook Page Photos Downloader lets you bulk‑extract high‑quality image URLs from any public Facebook page using only the numeric page ID – no Facebook login required

- **URL**: https://apify.com/igview-owner/facebook-page-photos-downloader.md
- **Developed by:** [Sachin Kumar Yadav](https://apify.com/igview-owner) (community)
- **Categories:** Social media, Automation, Developer tools
- **Stats:** 4 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Facebook Page Photos Downloader – Download All Page Photos Fast

**Download high-quality photo URLs from public Facebook pages using only the page ID. Perfect for content archiving, media collection, creatives research, and social media analysis.**

### 📋 Table of Contents

- [🚀 Features](#-features)
- [🎯 Use Cases](#-use-cases)
- [⚡ Quick Start](#-quick-start)
- [📊 Input Parameters](#-input-parameters)
- [📤 Output Format](#-output-format)
- [📈 Data Fields Explained](#-data-fields-explained)
- [🔧 Performance & Reliability](#-performance--reliability)
- [💡 Best Practices](#-best-practices)
- [❓ FAQ](#-faq)
- [📞 Support](#-support)

### 🚀 Features

#### **Focused Photo Extraction**
- ✅ **Photo URLs** – Get direct `photo_url` links for page photos
- ✅ **Photo Metadata** – `page_id`, `photo_id`, `photo_type`
- ✅ **ID-Based Targeting** – Uses numeric Facebook page IDs only
- ✅ **No Login Required** – Works on public pages without Facebook login

#### 🎨 **Batch & Limits Control**
- ✅ **Batch Processing** – Process multiple page IDs in one run (up to 100)
- ✅ **Max Photos Per Page** – Control how many photos to download per page
- ✅ **Auto Pagination** – Automatically follows cursor until `maxPhotos` or no more photos
- ✅ **Rate Limiting** – Built‑in delay between API calls to avoid throttling

#### 🔧 **Robust & Production Ready**
- ✅ **Clear Errors** – Pushes error entries to dataset when a page fails
- ✅ **Clean Output** – Simple, flat JSON records – one item per photo

### 🎯 Use Cases

| Use Case | Description | Benefits |
|----------|-------------|----------|
| **Content Archiving** | Save all photos from brand or client pages | Keep a historical archive of creatives |
| **Creative Inspiration** | Collect visuals from competitor pages | Analyze design trends and content strategies |
| **Social Media Analysis** | Study posting patterns and visual content | Better campaign planning and benchmarking |
| **Brand Asset Backup** | Backup assets from your own brand pages | Protect against accidental deletions |
| **Dataset Creation** | Build datasets of Facebook photos | Use for ML training, classification, or tagging |

### ⚡ Quick Start

#### 1️⃣ Single Page Photos Download
```json
{
  "pageIds": [
    "100044233639298"
  ],
  "maxPhotos": 7
}
````

#### 2️⃣ Multiple Pages (Batch Processing)

```json
{
  "pageIds": [
    "100044233639298",
    "100088509573446"
  ],
  "maxPhotos": 50
}
```

### 📊 Input Parameters

#### Configuration Options

| Parameter   | Type    | Required | Description |
|------------|---------|----------|-------------|
| `pageIds`  | Array   | ✅       | List of **numeric** Facebook page IDs (1–100) |
| `maxPhotos`| Integer | ✅       | Max photos to download **per page** (1–100) |

#### 📝 Details

**pageIds** (Required)

- Array of **numeric** Facebook page IDs as strings.
- Facebook **URLs are not allowed** – only IDs.
- Example IDs:
  - `"100044233639298"`
  - `"100088509573446"`
- Minimum: 1 ID
- Maximum: 100 IDs per run
- Non‑numeric values are rejected with a clear error.

**maxPhotos** (Required)

- Integer between **1** and **100**.
- Controls **maximum number of photos per page**.
- The actor automatically paginates until:
  - `maxPhotos` is reached, or
  - API returns no more photos.

### 📤 Output Format

#### 📸 **Photo Record Example**

Each item in the dataset represents **one photo**:

```json
{
  "page_id": "100044233639298",
  "photo_id": "1495910478560059",
  "photo_type": "page_photo",
  "photo_url": "https://scontent.fvix14-1.fna.fbcdn.net/v/t39.30808-6/590229947_1495910485226725_6920185956729282738_n.jpg?..."
}
```

### 📈 Data Fields Explained

#### 📊 **Photo Fields Reference**

| Field       | Type    | Description |
|------------|---------|-------------|
| `page_id`  | String  | Numeric Facebook page ID the photo belongs to |
| `photo_id` | String  | Unique photo ID on Facebook |
| `photo_type` | String| Type of photo (usually `"page_photo"`) |
| `photo_url`| String  | Direct URL to the image file |

### 🔧 Performance & Reliability

#### ⚡ **Speed & Efficiency**

| Metric | Performance | Details |
|--------|-------------|----------|
| **Processing Speed** | Fast | Depends on number of photos and pages |
| **Batch Processing** | 1–100 page IDs | Process multiple pages in one run |
| **Rate Limiting** | ~2 seconds | Delay between pagination and pages |

#### 🔄 **Reliability Features**

- ✅ **Auto‑Retry Logic** – Retries failed API requests with delays
- ✅ **Error Reporting** – Pushes error objects (status, error, errorCode) to dataset
- ✅ **Graceful Failures** – Continues with other pages even if one fails

### 💡 Best Practices

#### ✅ Recommended Usage

1. **Test with a single page ID first** – Verify the output structure and photo count.
2. **Use correct numeric IDs** – Make sure you are using the correct page ID, not the URL.
3. **Tune `maxPhotos`** – Start small (e.g., 20–50) and increase if needed.
4. **Monitor dataset views** – Use the **Photos Overview** and **Photo Gallery** views in Apify UI.
5. **Check API limits** – If you see many 429 errors, lower concurrency or run less frequently.

#### ⚠️ **Important Notes**

- Only **public Facebook pages** can be used.
- **Private or restricted content** will not be accessible.
- Maximum **100 page IDs** per run (based on input schema).
- Rate limiting is applied automatically between requests.

### ❓ FAQ

#### **Q: Do I need a Facebook account to use this actor?**

**A:** No. The actor uses a facebook API and works only with public pages.

#### **Q: Can I download photos from private Facebook pages?**

**A:** No. Only public content is accessible.

#### **Q: What if a page doesn't have contact information?**

**A:** Some pages don't provide email, phone, or address. These fields will be `null` in the output. The actor still extracts all available data.

#### **Q: Can I process multiple pages in one run?**

**A:** Yes. You can pass up to 100 numeric page IDs in `pageIds`.

#### **Q: Does this actor return page details like followers and contact info?**

**A:** No. This actor is focused **only on photos**. For full page details, use a dedicated “Page Details” actor.

#### **Q: What happens if one page fails?**

**A:** The actor continues processing other IDs. Failures are stored as error records in the dataset.

#### **Q: Is this legal and compliant?**

**A:** This tool works only with publicly available content. You are responsible for complying with Facebook's Terms of Service and all applicable laws.

#### **Q: How often can I run this actor?**

**A:** As often as needed, within your API and Apify usage limits.

### 📞 Support

#### 🆘 **Need Help?**

- 📧 **Issues** – Report bugs and request features on the actor page
- 📖 **Documentation** – Use this README as reference for input/output
- 🎯 **Best Practices** – Follow recommendations above for stable runs
- 💬 **Community** – Join Apify Discord for extra help

***

### 🔗 Related Scrapers

- [Facebook Marketplace Data Scraper](https://apify.com/igview-owner/facebook-marketplace-data-scraper) - Scrape Facebook Marketplace data
- [Facebook Page Video Downloader](https://apify.com/igview-owner/facebook-page-video-downloader) - Download videos from Facebook pages
- [Facebook Page Details Extractor](https://apify.com/igview-owner/facebook-page-details-extractor) - Extract details from Facebook pages
- [Facebook Page Reels Extractor](https://apify.com/igview-owner/facebook-page-reels-extractor) - Extract reels from Facebook pages
- [Facebook Search Video Scraper](https://apify.com/igview-owner/facebook-search-scraper) - Scrape Facebook Video search results
- [Facebook Media Downloader](https://apify.com/igview-owner/facebook-media-downloader) - Download photos and videos from Facebook
- [Facebook Old Posts Search](https://apify.com/igview-owner/facebook-old-posts-search) - Search for old posts on Facebook
- [Facebook Page Details Scraper](https://apify.com/igview-owner/facebook-page-details-scraper) - Scrape Facebook page details

***

### 🏷️ **Find ME**

`facebook photos`, `facebook photo downloader`, `facebook page photos`, `facebook media`, `facebook images`, `facebook scraper`, `facebook photo scraper`, `facebook page photos downloader`, `apify facebook photos`, `facebook creatives`, `facebook content archive`, `facebook brand assets`, `facebook dataset`, `social media images`, `marketing creatives`, `facebook page id`, `photo downloader facebook`, `facebook photo downloader 4k`, `best facebook photo downloader`, `Download all Facebook photos of someone`, `Facebook album Downloader`, `Private facebook album downloader`

***

### 🚀 **Get Started Now**

**Ready to download Facebook page photos?**

1. Click ["Try for free"](https://apify.com?fpr=ykgg9c) to open the actor.
2. Add one or more **numeric page IDs** to the `pageIds` input.
3. Set `maxPhotos` per page.
4. Run the actor and download all photo URLs from the dataset.

**⭐ If this actor helps your workflow, please give it a star!**

***

### 📄 **Example Use Cases**

#### 💼 Creative & Campaign Analysis

Collect all creatives from competitors or inspiration pages to study visual strategies and posting habits.

#### Content Backup

Archive photos from your own brand pages for backup or migration.

#### 🔍 Dataset Building

Create labeled datasets of Facebook images for ML, tagging, or internal tools.

***

*Built with ❤️ using Apify Platform | Facebook Page Photos Downloader v1.0*

***

**Disclaimer**: This actor is designed for extracting publicly available Facebook page data only. Users are responsible for complying with Facebook's Terms of Service and all applicable laws. Use this tool ethically and responsibly for legitimate purposes only. Do not use for spam, harassment, or any malicious activities.

# Actor input Schema

## `pageIds` (type: `array`):

Enter one or more numeric Facebook page IDs (e.g., '100044233639298'). Facebook page URLs are not allowed.

## `maxPhotos` (type: `integer`):

Set the maximum number of photos to download from each page. This helps control the dataset size and actor runtime. Set to a higher value to get more photos.

## Actor input object example

```json
{
  "pageIds": [
    "100044233639298"
  ],
  "maxPhotos": 7
}
```

# 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 = {
    "pageIds": [
        "100044233639298"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("igview-owner/facebook-page-photos-downloader").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 = { "pageIds": ["100044233639298"] }

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

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

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

```

## CLI example

```bash
echo '{
  "pageIds": [
    "100044233639298"
  ]
}' |
apify call igview-owner/facebook-page-photos-downloader --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=igview-owner/facebook-page-photos-downloader",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Facebook Page Photos Downloader",
        "description": "Download all photos from public Facebook pages in one click. Facebook Page Photos Downloader lets you bulk‑extract high‑quality image URLs from any public Facebook page using only the numeric page ID – no Facebook login required",
        "version": "1.0",
        "x-build-id": "INRFLhwL7xhb6ljo5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/igview-owner~facebook-page-photos-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-igview-owner-facebook-page-photos-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/igview-owner~facebook-page-photos-downloader/runs": {
            "post": {
                "operationId": "runs-sync-igview-owner-facebook-page-photos-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/igview-owner~facebook-page-photos-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-igview-owner-facebook-page-photos-downloader",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "pageIds"
                ],
                "properties": {
                    "pageIds": {
                        "title": "📄 Facebook Page IDs",
                        "minItems": 1,
                        "maxItems": 100,
                        "type": "array",
                        "description": "Enter one or more numeric Facebook page IDs (e.g., '100044233639298'). Facebook page URLs are not allowed.",
                        "items": {
                            "type": "string",
                            "pattern": "^\\d+$"
                        },
                        "default": [
                            "100044233639298"
                        ]
                    },
                    "maxPhotos": {
                        "title": "📸 Maximum Photos Per Page",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Set the maximum number of photos to download from each page. This helps control the dataset size and actor runtime. Set to a higher value to get more photos.",
                        "default": 7
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
