# Monitor a competitor's new Meta ads weekly

**Use case:** 

Only creatives you have not seen before: ads delivered by an earlier run are not fetched, returned or charged. The first run delivers the page's current set (up to maxAds), every later run only what appeared since. Schedule it weekly and connect Slack or email through Apify's integrations; each row carries first_seen_at and last_seen_at from the same memory.

## Input

```json
{
  "advertiserIds": [
    "20409006880"
  ],
  "advertiserNames": [],
  "searchTerms": [],
  "creativeIds": [],
  "resultType": "ads",
  "maxAdvertisersPerName": 3,
  "startUrls": [],
  "region": "ALL",
  "regions": [],
  "targetedCountryOnly": false,
  "activeStatus": "active",
  "adType": "all",
  "mediaType": "all",
  "platforms": [],
  "languages": [],
  "sortBy": "auto",
  "expandVariants": true,
  "keywordMatch": "unordered",
  "keywordRelevance": "any",
  "dedupeBy": "none",
  "period": "",
  "longRunningDays": 30,
  "includeEuReach": false,
  "includeAdvertiserInfo": false,
  "downloadMedia": "none",
  "transcribeVideos": false,
  "ocrImageAds": false,
  "analyzeAds": false,
  "enrichLandingPage": false,
  "summaryRows": false,
  "maxAds": 500,
  "maxAdsPerTarget": 0,
  "onlyNewAds": true,
  "includeEndedAds": false,
  "requestDelaySecs": 0.3,
  "concurrency": 3,
  "includeRawData": false
}
```

## Output

```json
{
  "row_type": {
    "label": "Row type",
    "format": "string"
  },
  "advertiser_name": {
    "label": "Advertiser name",
    "format": "string"
  },
  "advertiser_id": {
    "label": "Advertiser id",
    "format": "string"
  },
  "creative_id": {
    "label": "Creative id",
    "format": "string"
  },
  "collation_id": {
    "label": "Collation id",
    "format": "string"
  },
  "collation_count": {
    "label": "Collation count",
    "format": "integer"
  },
  "ad_format": {
    "label": "Ad format",
    "format": "string"
  },
  "is_active": {
    "label": "Is active",
    "format": "boolean"
  },
  "headline": {
    "label": "Headline",
    "format": "string"
  },
  "body_text": {
    "label": "Body text",
    "format": "string"
  },
  "link_description": {
    "label": "Link description",
    "format": "string"
  },
  "headlines": {
    "label": "Headlines",
    "format": "array"
  },
  "descriptions": {
    "label": "Descriptions",
    "format": "array"
  },
  "display_url": {
    "label": "Display url",
    "format": "string"
  },
  "destination_url": {
    "label": "Destination url",
    "format": "string"
  },
  "cta": {
    "label": "Cta",
    "format": "string"
  },
  "cta_type": {
    "label": "Cta type",
    "format": "string"
  },
  "cards": {
    "label": "Cards",
    "format": "array"
  },
  "first_shown": {
    "label": "First shown",
    "format": "string"
  },
  "last_shown": {
    "label": "Last shown",
    "format": "string"
  },
  "days_shown": {
    "label": "Days shown",
    "format": "integer"
  },
  "image_url": {
    "label": "Image url",
    "format": "string"
  },
  "image_urls": {
    "label": "Image urls",
    "format": "array"
  },
  "image_small_url": {
    "label": "Image small url",
    "format": "string"
  },
  "video_url": {
    "label": "Video url",
    "format": "string"
  },
  "video_urls": {
    "label": "Video urls",
    "format": "array"
  },
  "video_duration_s": {
    "label": "Video duration s",
    "format": "integer"
  },
  "video_preview_url": {
    "label": "Video preview url",
    "format": "string"
  },
  "media_files": {
    "label": "Media files",
    "format": "array"
  },
  "image_file_url": {
    "label": "Image file url",
    "format": "string"
  },
  "video_file_url": {
    "label": "Video file url",
    "format": "string"
  },
  "transcript": {
    "label": "Transcript",
    "format": "string"
  },
  "transcript_language": {
    "label": "Transcript language",
    "format": "string"
  },
  "hook_3s": {
    "label": "Hook 3s",
    "format": "string"
  },
  "speech_seconds": {
    "label": "Speech seconds",
    "format": "number"
  },
  "ad_ocr_text": {
    "label": "Ad ocr text",
    "format": "string"
  },
  "sentiment_score": {
    "label": "Sentiment score",
    "format": "number"
  },
  "analysis_hook": {
    "label": "Analysis hook",
    "format": "string"
  },
  "analysis_offer": {
    "label": "Analysis offer",
    "format": "string"
  },
  "analysis_angle": {
    "label": "Analysis angle",
    "format": "string"
  },
  "analysis_audience": {
    "label": "Analysis audience",
    "format": "string"
  },
  "analysis_cta_intent": {
    "label": "Analysis cta intent",
    "format": "string"
  },
  "analysis_tone": {
    "label": "Analysis tone",
    "format": "string"
  },
  "analysis_sentiment": {
    "label": "Analysis sentiment",
    "format": "number"
  },
  "landing_final_url": {
    "label": "Landing final url",
    "format": "string"
  },
  "landing_domain": {
    "label": "Landing domain",
    "format": "string"
  },
  "landing_status": {
    "label": "Landing status",
    "format": "integer"
  },
  "landing_title": {
    "label": "Landing title",
    "format": "string"
  },
  "landing_is_product": {
    "label": "Landing is product",
    "format": "boolean"
  },
  "landing_product_name": {
    "label": "Landing product name",
    "format": "string"
  },
  "landing_price": {
    "label": "Landing price",
    "format": "number"
  },
  "landing_currency": {
    "label": "Landing currency",
    "format": "string"
  },
  "platforms": {
    "label": "Platforms",
    "format": "array"
  },
  "launched_last_7_days": {
    "label": "Launched last 7 days",
    "format": "boolean"
  },
  "launched_last_30_days": {
    "label": "Launched last 30 days",
    "format": "boolean"
  },
  "long_running": {
    "label": "Long running",
    "format": "boolean"
  },
  "platform_count": {
    "label": "Platform count",
    "format": "integer"
  },
  "categories": {
    "label": "Categories",
    "format": "array"
  },
  "regions": {
    "label": "Regions",
    "format": "array"
  },
  "region": {
    "label": "Region",
    "format": "string"
  },
  "spend_min": {
    "label": "Spend min",
    "format": "number"
  },
  "spend_max": {
    "label": "Spend max",
    "format": "number"
  },
  "spend_currency": {
    "label": "Spend currency",
    "format": "string"
  },
  "impressions_min": {
    "label": "Impressions min",
    "format": "integer"
  },
  "impressions_max": {
    "label": "Impressions max",
    "format": "integer"
  },
  "reach_min": {
    "label": "Reach min",
    "format": "integer"
  },
  "reach_max": {
    "label": "Reach max",
    "format": "integer"
  },
  "paid_for_by": {
    "label": "Paid for by",
    "format": "string"
  },
  "funding_entity_website": {
    "label": "Funding entity website",
    "format": "string"
  },
  "funding_entity_address": {
    "label": "Funding entity address",
    "format": "string"
  },
  "eu_total_reach": {
    "label": "Eu total reach",
    "format": "integer"
  },
  "eu_reach_breakdown": {
    "label": "Eu reach breakdown",
    "format": "array"
  },
  "eu_audience_age_min": {
    "label": "Eu audience age min",
    "format": "integer"
  },
  "eu_audience_age_max": {
    "label": "Eu audience age max",
    "format": "integer"
  },
  "eu_audience_gender": {
    "label": "Eu audience gender",
    "format": "string"
  },
  "eu_audience_locations": {
    "label": "Eu audience locations",
    "format": "array"
  },
  "payer": {
    "label": "Payer",
    "format": "string"
  },
  "beneficiary": {
    "label": "Beneficiary",
    "format": "string"
  },
  "political_reach_by_region": {
    "label": "Political reach by region",
    "format": "array"
  },
  "political_reach_by_age_gender": {
    "label": "Political reach by age gender",
    "format": "array"
  },
  "advertiser_category": {
    "label": "Advertiser category",
    "format": "string"
  },
  "advertiser_about": {
    "label": "Advertiser about",
    "format": "string"
  },
  "advertiser_categories": {
    "label": "Advertiser categories",
    "format": "array"
  },
  "advertiser_ads_seen": {
    "label": "Advertiser ads seen",
    "format": "integer"
  },
  "advertiser_match": {
    "label": "Advertiser match",
    "format": "string"
  },
  "advertiser_claimed_ads": {
    "label": "Advertiser claimed ads",
    "format": "integer"
  },
  "claimed_count": {
    "label": "Claimed count",
    "format": "integer"
  },
  "summary_ad_count": {
    "label": "Summary ad count",
    "format": "integer"
  },
  "summary_active_count": {
    "label": "Summary active count",
    "format": "integer"
  },
  "summary_longest_days": {
    "label": "Summary longest days",
    "format": "integer"
  },
  "summary_formats": {
    "label": "Summary formats",
    "format": "array"
  },
  "summary_landing_domains": {
    "label": "Summary landing domains",
    "format": "array"
  },
  "summary_distinct_copies": {
    "label": "Summary distinct copies",
    "format": "integer"
  },
  "summary_ad_ids": {
    "label": "Summary ad ids",
    "format": "array"
  },
  "advertiser_likes": {
    "label": "Advertiser likes",
    "format": "integer"
  },
  "advertiser_ig_username": {
    "label": "Advertiser ig username",
    "format": "string"
  },
  "advertiser_ig_followers": {
    "label": "Advertiser ig followers",
    "format": "integer"
  },
  "advertiser_verified": {
    "label": "Advertiser verified",
    "format": "boolean"
  },
  "advertiser_spend_total": {
    "label": "Advertiser spend total",
    "format": "number"
  },
  "advertiser_spend_week": {
    "label": "Advertiser spend week",
    "format": "number"
  },
  "advertiser_url": {
    "label": "Advertiser url",
    "format": "string"
  },
  "advertiser_picture_url": {
    "label": "Advertiser picture url",
    "format": "string"
  },
  "ad_url": {
    "label": "Ad url",
    "format": "string"
  },
  "matched_query": {
    "label": "Matched query",
    "format": "string"
  },
  "matched_fields": {
    "label": "Matched fields",
    "format": "array"
  },
  "first_seen_at": {
    "label": "First seen",
    "format": "string"
  },
  "last_seen_at": {
    "label": "Last seen at",
    "format": "string"
  },
  "ended_at": {
    "label": "Ended at",
    "format": "string"
  },
  "run_tag": {
    "label": "Run tag",
    "format": "string"
  },
  "raw": {
    "label": "Raw",
    "format": "object"
  }
}
```

## About this Actor

This example demonstrates how to use [Meta Ad Library Scraper — Facebook & Instagram Ads + EU Reach](https://apify.com/hyperbach/meta-ads-library-scraper.md) with a specific input configuration. Visit the [Actor detail page](https://apify.com/hyperbach/meta-ads-library-scraper.md) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

This Task's input is already configured above. Use it as-is rather than inventing a new one.

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 full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/hyperbach/meta-ads-library-scraper.md

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`).
