{
  "openapi": "3.0.1",
  "info": {
    "title": "Meta Ad Library Scraper - Facebook & Instagram Ads",
    "description": "Scrape the Meta Ad Library (Facebook Ad Library: Facebook, Instagram, Messenger, Threads) without login: ads by keyword, advertiser page or link, with copy, video, landing page, days running and creative copies, plus a scaled-offer ranking and daily new-ad alerts.",
    "version": "0.2",
    "x-build-id": "RDcvlbbbbt6Ibhfai"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~meta-ad-library-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-meta-ad-library-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/scrapewise~meta-ad-library-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-meta-ad-library-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/scrapewise~meta-ad-library-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-meta-ad-library-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": {
          "searchQueries": {
            "title": "Keywords",
            "type": "array",
            "description": "Words to search in the Ad Library, one per line, in any language (running shoes, emagrecer, curso de inglês). Each keyword is searched in each country and returns up to 'Max ads per search'.",
            "items": {
              "type": "string"
            }
          },
          "pageIds": {
            "title": "Advertiser pages",
            "type": "array",
            "description": "Numeric Facebook page ids or Ad Library links with view_all_page_id, one per line. Returns the ads of that advertiser.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Ad Library links",
            "type": "array",
            "description": "Paste any facebook.com/ads/library search link, with the filters you set on the site. The link's own filters win over the ones below. Through the API: [{\"url\": \"https://www.facebook.com/ads/library/?...\"}].",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter country codes (US, BR, GB, MX, FR...). Each keyword is searched in each country. Empty means all countries (ALL).",
            "items": {
              "type": "string"
            }
          },
          "activeStatus": {
            "title": "Ad status",
            "enum": [
              "active",
              "inactive",
              "all"
            ],
            "type": "string",
            "description": "Which ads to return.",
            "default": "active"
          },
          "mediaType": {
            "title": "Media type",
            "enum": [
              "all",
              "image",
              "video",
              "meme",
              "none"
            ],
            "type": "string",
            "description": "Only ads with this kind of media.",
            "default": "all"
          },
          "exactPhrase": {
            "title": "Exact phrase",
            "type": "boolean",
            "description": "Match the keyword as an exact phrase instead of any of its words.",
            "default": false
          },
          "minDaysRunning": {
            "title": "Minimum days running",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads running for at least this many days. Ads that stay on for weeks are usually the ones making money. 0 keeps every ad.",
            "default": 0
          },
          "startDateFrom": {
            "title": "Ads started on or after",
            "type": "string",
            "description": "Only ads that started running on or after this date: a date like 2026-10-01 or a relative period like 7 days. Results then come newest month first. Ads outside the range are not delivered and not charged. Empty = any date."
          },
          "startDateTo": {
            "title": "Ads started on or before",
            "type": "string",
            "description": "Only ads that started running on or before this date (2026-10-15 or 1 day). Use with the field above for a date range. Empty = up to today."
          },
          "maxItems": {
            "title": "Max ads per search",
            "minimum": 1,
            "type": "integer",
            "description": "Upper limit of ads for each keyword and country, page or link.",
            "default": 50
          },
          "groupByOffer": {
            "title": "Rank scaled offers",
            "type": "boolean",
            "description": "After the ads, add one 'offer' row per landing page (domain and advertiser) that shows a scale signal: 2 or more active ads, or 2 or more ads reusing the same creative. Each row has the active ads, creative copies and how long it has been running, ranked by a scale score. Charged per offer row; turn it off to get ads only.",
            "default": true
          },
          "analyzeLandingPages": {
            "title": "Read each offer's sales page",
            "type": "boolean",
            "description": "Open the landing page of each scaled offer and add what a media buyer checks by hand: prices and the 'from R$ 97 to R$ 17' anchor, installments, checkout platform (Hotmart, Kiwify, Eduzz, Monetizze, PerfectPay, Kirvano, Cakto, Stripe, Shopify, Digistore24, ClickBank and more), money-back guarantee days, VSL player (vturb, Panda Video, Wistia, YouTube), countdown timer, urgency dates that already passed (a fake 'only today' deadline), upsell signals and tracking pixels (Meta Pixel, UTMify, Google Tag). Included in the offer row price, no extra charge.",
            "default": true
          },
          "maxLandingPages": {
            "title": "Max sales pages to read",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Top-ranked offers first. 0 turns the page reading off.",
            "default": 50
          },
          "compareWithPreviousRun": {
            "title": "Compare with previous run",
            "type": "boolean",
            "description": "Made for daily schedules: each ad gets isNewAd, firstSeenAt and isNewAdvertiser, and each search adds one free 'comparison_summary' row with the new ads, the new advertiser pages (name, id, link, active ads) and the ads of the previous run that are gone. The first run only saves the baseline. State is kept in a named key-value store in your account.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new ads",
            "type": "boolean",
            "description": "With 'Compare with previous run' on, deliver and charge only ads not seen before. Known ads are still read (so 'Max ads per search' keeps the same depth every day) but do not appear and are not charged.",
            "default": false
          },
          "snapshotName": {
            "title": "Comparison name",
            "type": "string",
            "description": "Name of the saved comparison (stored as meta-ads-<name>). Use one name per schedule. Empty: derived from the keywords, pages, links and countries, so the same input always compares with itself."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy is recommended.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}