# Facebook Ads Library Scraper — Meta Ads + Instagram Data (`sourabhbgp/facebook-ads-scraper`) Actor

Scrape Facebook Ads Library (Meta Ad Library) with 57 fields per ad — no login needed. Get ad copy, images, videos, CTAs, run dates, Instagram followers, page verification, AI-content flag, EU transparency. Search by keyword, advertiser, or paste any Ad Library URL.

- **URL**: https://apify.com/sourabhbgp/facebook-ads-scraper.md
- **Developed by:** [Sourabh Kumar](https://apify.com/sourabhbgp) (community)
- **Categories:** Social media
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 ad results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Ads Library Scraper | Meta Ad Library + Instagram Data | 57 Fields | No Login

Scrape the **Meta Ad Library** (Facebook Ads Library) at scale with **57 fields per ad** — ad copy, images, videos, CTAs, run dates, publisher platforms, Instagram followers, page verification, EU transparency flags, AI-generated media detection, and more. **No Facebook account, no cookies, no login required.** Uses Meta's internal GraphQL API directly for fast, reliable HTTP-based extraction.

### Why Use This Scraper?

- **No login, no cookies, no Facebook account needed** — fully anonymous access
- **57 fields per ad** — the most comprehensive Meta Ad Library scraper on Apify
- **Clean flat output** — no deeply nested JSON, every field at top level
- **URL input mode** — paste any Meta Ad Library URL, filters parsed automatically
- **Built-in residential proxy** — anti-blocking handled automatically
- **Instagram data included** — IG followers, username, verification status via `enrichDetails`
- **AI-generated content flag** — detect digitally-created/AI media in ads (`containsDigitalCreatedMedia`)
- **Competitor intelligence ready** — scrape thousands of ads per run, export to JSON/CSV/Excel

### What Data You Get (All 57 Fields)

#### Core ad fields
`adArchiveId`, `adId`, `collationId`, `isActive`, `startDate`, `endDate`, `totalActiveTime`, `publisherPlatforms` (Facebook, Instagram, Messenger, Threads, WhatsApp), `targetedOrReachedCountries`

#### Ad creative
`adCopy`, `title`, `caption`, `linkDescription`, `linkUrl`, `ctaText`, `ctaType`, `displayFormat` (IMAGE/VIDEO/DCO/CAROUSEL/DPA), `byline`, `disclaimerLabel`

#### Media
`images` (original + resized URLs), `videos` (HD, SD, preview), `cards` (full carousel data with per-card body, title, CTA, images, videos, watermarked variants)

#### Advertiser page
`pageId`, `pageName`, `pageUrl`, `pageLikes`, `pageCategories`, `pageProfilePictureUrl`

#### Enrich data (when `enrichDetails: true`)
`pageAlias`, `pageCategory`, `pageAbout`, `pageCoverPhotoUrl`, `pageVerification` (BLUE_VERIFIED/NOT_VERIFIED), `entityType` (BUSINESS/PERSON_PROFILE/BRAND), `igUsername`, `igFollowers`, `igVerification`, `isProfilePage`, `isPoliticalPage`

#### Transparency & regulation
`categories`, `gatedType`, `hideDataStatus`, `isAaaEligible` (EU transparency), `hasUserReported`, `reportCount`, `menuItems`, `stateMediaRunLabel`, `containsDigitalCreatedMedia`, `containsSensitiveContent`, `regionalRegulationData` (finserv, anti-scam flags)

#### Impressions & spend (political ads)
`impressionsText`, `impressionsIndex`, `reachEstimate`, `currency`, `spend`

#### Meta
`collationCount`, `scrapedAt`

### Input Options

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | select | `search` | `search` (by keyword) or `advertiser` (by page) |
| `query` | string | `marketing` | Keyword to search for |
| `advertiserUrls` | list | — | Facebook Page URLs or numeric Page IDs |
| `urls` | list | — | Full Ads Library URLs (all filters parsed automatically) |
| `country` | string | `US` | ISO 2-letter country code |
| `countries` | list | — | Multiple countries (overrides single `country`) |
| `activeStatus` | select | `active` | `active`, `inactive`, or `all` |
| `adType` | select | `all` | `all` or `political_and_issue_ads` |
| `mediaType` | select | `all` | `all`, `image`, or `video` |
| `platforms` | list | — | FACEBOOK, INSTAGRAM, MESSENGER, THREADS, WHATSAPP |
| `languages` | list | — | Content language codes (e.g. `en`, `es`, `fr`) |
| `startDate` | date | — | Only ads active on or after this date |
| `endDate` | date | — | Only ads started on or before this date |
| `maxResults` | integer | `100` | Max ads (0 = unlimited) |
| `enrichDetails` | boolean | `false` | Fetch Instagram followers + page verification per ad |
| `proxyConfiguration` | object | Apify Residential | Required — Meta blocks datacenter IPs. BYO proxy supported. |

### How to Use — 3 Ways

#### 1. Paste an Ads Library URL (easiest)

Go to [facebook.com/ads/library](https://www.facebook.com/ads/library), apply filters, copy the URL, paste into `urls`:

```json
{
    "urls": [
        "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=shopify&media_type=video"
    ],
    "maxResults": 200
}
````

#### 2. Keyword search

```json
{
    "mode": "search",
    "query": "dropshipping",
    "country": "US",
    "activeStatus": "active",
    "platforms": ["INSTAGRAM"],
    "maxResults": 500
}
```

#### 3. Advertiser mode

Scrape all ads run by specific pages:

```json
{
    "mode": "advertiser",
    "advertiserUrls": [
        "15087023444",
        "https://www.facebook.com/shopify"
    ],
    "activeStatus": "all",
    "maxResults": 1000,
    "enrichDetails": true
}
```

### Example Output (Real Ad)

```json
{
    "adArchiveId": "820793561047630",
    "pageId": "15087023444",
    "pageName": "Nike",
    "pageUrl": "https://www.facebook.com/nike/",
    "pageAlias": "nike",
    "pageLikes": 39200000,
    "pageCategory": "Sportswear",
    "pageAbout": "#givesyouwings",
    "pageProfilePictureUrl": "https://scontent.fbcdn.net/...",
    "pageCoverPhotoUrl": "https://scontent.fbcdn.net/...",
    "pageVerification": "BLUE_VERIFIED",
    "entityType": "BUSINESS",
    "igUsername": "nike",
    "igFollowers": 306000000,
    "igVerification": true,
    "isProfilePage": false,
    "isPoliticalPage": false,
    "isActive": true,
    "startDate": "2026-01-19T07:00:00.000Z",
    "endDate": null,
    "totalActiveTime": 7862400,
    "publisherPlatforms": ["FACEBOOK", "INSTAGRAM"],
    "adCopy": "Ball's in your court. Get the gear that never misses.",
    "title": "Nike Air Max",
    "caption": "nike.com",
    "linkUrl": "https://www.nike.com/...",
    "ctaText": "Shop Now",
    "ctaType": "SHOP_NOW",
    "displayFormat": "IMAGE",
    "images": [{ "originalUrl": "...", "resizedUrl": "..." }],
    "videos": [],
    "cards": [],
    "collationCount": 3,
    "gatedType": "ELIGIBLE",
    "isAaaEligible": false,
    "containsDigitalCreatedMedia": false,
    "containsSensitiveContent": false,
    "scrapedAt": "2026-04-17T10:00:00.000Z"
}
```

### Pricing

**$2 per 1,000 ads** today ($0.002/ad). Dropping to **$0.99/1K on 2026-05-02** (Apify requires 14-day notice for price decreases).

Apify residential proxy (required) adds approximately $0.025/1K in platform fees (measured on real runs: 3.2 KB/ad × $8/GB = $0.025/1K). Users may bring their own proxy via `proxyConfiguration.proxyUrls` to skip this cost.

#### Price comparison vs competitors

| Scraper | Their price | Requires |
|---|---|---|
| `apify/facebook-ads-scraper` | $3.40 – $5.80/1K | Apify proxy (bundled) |
| `easyapi/facebook-ads-library-scraper` | $2.99/1K | — |
| `dz_omar/facebook-ads-scraper-pro` | $10/1K FREE → $0.40 GOLD | bundled |
| `curious_coder/facebook-ads-library-scraper` | $0.75/1K | **user must provide proxy** ($3–10+/GB extra) |
| **This scraper** | **$0.99/1K (from May 2)** | Apify residential proxy (+~$0.025/1K) |

### Use Cases

- **Competitor ad intelligence** — monitor what ads competitors are running, their copy, creatives, CTAs, and campaign longevity
- **Market research** — analyze advertising trends for any keyword, niche, or industry across 40+ countries
- **Lead generation** — find active advertisers in specific niches, filter by platform or country
- **Ad creative inspiration** — extract successful ad formats, headlines, CTAs, and copy from top brands
- **Brand monitoring** — track how brands advertise across Facebook, Instagram, Messenger, and Threads
- **Political ad tracking** — monitor political and issue ads with spend and impression data
- **AI content detection** — flag ads that use AI-generated imagery (`containsDigitalCreatedMedia`)
- **EU transparency research** — identify AAA-eligible ads and access regional regulation data
- **Influencer research** — use `enrichDetails` to get Instagram follower counts and verification status

### Technical Details

- **Architecture**: HTTP-only, no browser automation. Uses Meta's internal GraphQL API (`AdLibrarySearchPaginationQuery` and `AdLibraryV3AdDetailsQuery`).
- **Authentication**: Anonymous `rd_challenge` bypass — no Facebook account required.
- **Session caching**: Auth session cached for up to 20 hours across runs (24h cookie lifetime).
- **Proxy rotation**: Auto-rotates residential IPs on rate-limiting (Meta rate-limits Apify datacenter IPs).
- **Pagination**: Cursor-based, 30 ads per API call, unlimited depth.
- **Success rate target**: 98%+ on Apify platform with residential proxy.

### FAQ

**Q: Do I need a Facebook account?**
No. The actor uses anonymous access — the Meta Ad Library is a public transparency tool.

**Q: Why does it need a proxy?**
Meta rate-limits Apify's shared datacenter IPs within seconds. Residential proxy is required for reliable operation. You can bring your own proxy via `proxyConfiguration.proxyUrls`.

**Q: What's the difference between `search` and `advertiser` mode?**
`search` finds ads matching a keyword across all advertisers. `advertiser` gets all ads from specific Facebook pages (more precise for competitor tracking).

**Q: Can I paste any Meta Ad Library URL?**
Yes. Go to facebook.com/ads/library, apply filters, copy the URL, paste into `urls`. All filters (keyword, country, platforms, languages, date range) are extracted automatically.

**Q: What does `enrichDetails: true` do?**
Makes one additional API call per ad to fetch Instagram follower count, page verification status, entity type, page category, "About" text, and Instagram username. Slower but provides the richest advertiser profile.

**Q: Does it work for political ads?**
Yes. Set `adType: "political_and_issue_ads"`. Political ads include `spend`, `impressions`, and `reachEstimate` data.

# Actor input Schema

## `mode` (type: `string`):

search: find ads by keyword. advertiser: get all ads from specific Facebook pages.

## `query` (type: `string`):

Keyword to search for (search mode). Examples: 'nike', 'shopify', 'real estate'.

## `advertiserUrls` (type: `array`):

Facebook Page URLs or Page IDs to scrape all ads from (advertiser mode). Examples: 'https://www.facebook.com/nike' or '15087023444'.

## `country` (type: `string`):

ISO 2-letter country code to filter ads by (e.g. US, GB, DE, IN).

## `activeStatus` (type: `string`):

Filter by ad active status.

## `adType` (type: `string`):

Filter by ad type.

## `mediaType` (type: `string`):

Filter by media type.

## `maxResults` (type: `integer`):

Maximum number of ads to return. 0 = unlimited.

## `startDate` (type: `string`):

Only return ads that started running on or after this date (YYYY-MM-DD).

## `endDate` (type: `string`):

Only return ads that started running on or before this date (YYYY-MM-DD).

## `urls` (type: `array`):

Paste full Facebook Ads Library URLs here. The actor will parse filters from the URL automatically.

## `countries` (type: `array`):

ISO 2-letter country codes. Overrides the Country field. Use for multi-country search.

## `platforms` (type: `array`):

Filter by platforms: FACEBOOK, INSTAGRAM, MESSENGER, THREADS, WHATSAPP

## `languages` (type: `array`):

Filter by ad content language codes (e.g. en, es, fr, de)

## `sortBy` (type: `string`):

Sort results by impressions or start date.

## `enrichDetails` (type: `boolean`):

Fetch additional data per ad: Instagram followers, page verification, Instagram handle, entity type. Slower — adds 1 extra request per ad.

## `proxyConfiguration` (type: `object`):

Proxy settings. Required — Facebook rate-limits Apify datacenter IPs. Defaults to Apify residential proxy.

## Actor input object example

```json
{
  "mode": "search",
  "query": "marketing",
  "country": "US",
  "activeStatus": "active",
  "adType": "all",
  "mediaType": "all",
  "maxResults": 100,
  "enrichDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Ad records from the Meta Ad Library

# 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 = {
    "query": "marketing",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("sourabhbgp/facebook-ads-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 = {
    "query": "marketing",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("sourabhbgp/facebook-ads-scraper").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 '{
  "query": "marketing",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call sourabhbgp/facebook-ads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sourabhbgp/facebook-ads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Facebook Ads Library Scraper — Meta Ads + Instagram Data",
        "description": "Scrape Facebook Ads Library (Meta Ad Library) with 57 fields per ad — no login needed. Get ad copy, images, videos, CTAs, run dates, Instagram followers, page verification, AI-content flag, EU transparency. Search by keyword, advertiser, or paste any Ad Library URL.",
        "version": "0.0",
        "x-build-id": "Zw0KgPM7QLqSn7K6G"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sourabhbgp~facebook-ads-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sourabhbgp-facebook-ads-scraper",
                "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/sourabhbgp~facebook-ads-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sourabhbgp-facebook-ads-scraper",
                "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/sourabhbgp~facebook-ads-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sourabhbgp-facebook-ads-scraper",
                "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",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "advertiser"
                        ],
                        "type": "string",
                        "description": "search: find ads by keyword. advertiser: get all ads from specific Facebook pages.",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword to search for (search mode). Examples: 'nike', 'shopify', 'real estate'."
                    },
                    "advertiserUrls": {
                        "title": "Advertiser URLs / Page IDs",
                        "type": "array",
                        "description": "Facebook Page URLs or Page IDs to scrape all ads from (advertiser mode). Examples: 'https://www.facebook.com/nike' or '15087023444'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "ISO 2-letter country code to filter ads by (e.g. US, GB, DE, IN).",
                        "default": "US"
                    },
                    "activeStatus": {
                        "title": "Active Status",
                        "enum": [
                            "active",
                            "inactive",
                            "all"
                        ],
                        "type": "string",
                        "description": "Filter by ad active status.",
                        "default": "active"
                    },
                    "adType": {
                        "title": "Ad Type",
                        "enum": [
                            "all",
                            "political_and_issue_ads"
                        ],
                        "type": "string",
                        "description": "Filter by ad type.",
                        "default": "all"
                    },
                    "mediaType": {
                        "title": "Media Type",
                        "enum": [
                            "all",
                            "image",
                            "video"
                        ],
                        "type": "string",
                        "description": "Filter by media type.",
                        "default": "all"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of ads to return. 0 = unlimited.",
                        "default": 100
                    },
                    "startDate": {
                        "title": "Start Date Filter",
                        "type": "string",
                        "description": "Only return ads that started running on or after this date (YYYY-MM-DD)."
                    },
                    "endDate": {
                        "title": "End Date Filter",
                        "type": "string",
                        "description": "Only return ads that started running on or before this date (YYYY-MM-DD)."
                    },
                    "urls": {
                        "title": "Ads Library URLs",
                        "type": "array",
                        "description": "Paste full Facebook Ads Library URLs here. The actor will parse filters from the URL automatically.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "countries": {
                        "title": "Countries (multi)",
                        "type": "array",
                        "description": "ISO 2-letter country codes. Overrides the Country field. Use for multi-country search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "platforms": {
                        "title": "Publisher Platforms",
                        "type": "array",
                        "description": "Filter by platforms: FACEBOOK, INSTAGRAM, MESSENGER, THREADS, WHATSAPP",
                        "items": {
                            "type": "string"
                        }
                    },
                    "languages": {
                        "title": "Content Languages",
                        "type": "array",
                        "description": "Filter by ad content language codes (e.g. en, es, fr, de)",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "total_impressions",
                            "start_date"
                        ],
                        "type": "string",
                        "description": "Sort results by impressions or start date."
                    },
                    "enrichDetails": {
                        "title": "Enrich with Ad Details",
                        "type": "boolean",
                        "description": "Fetch additional data per ad: Instagram followers, page verification, Instagram handle, entity type. Slower — adds 1 extra request per ad.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Required — Facebook rate-limits Apify datacenter IPs. Defaults to Apify residential proxy.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
