File size: 1,169 Bytes
22df3ca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import requests
import os

META_ADS_TOKEN = os.getenv("EAAVtBlZBaes0BQch8e5ldaeEfeCShyddrCAv26FeI05lODUhBrOMHoYcCUs3nQmqHnDZAKT4uTZARXl3RlYYdcmcQs8Ay8omMsZCnrHLnhFbx3yu6bZAompGIPgmQhqu9I29XdtMU2FWfyMBR7bPZAJfsAZC4JGljaJ0IJ1Ga6ncZCcJguNSByedfbkbyLvIiMsl2L8pandHm0L5ZCAjJmNnjdflLzXZBPOp5ButlCMeU2j9yvq6HGX801ZBUwa9ZAe6mv3D3plSsXjIWgHzk1yYQ2OgDzpX")
BASE_URL = "https://www.facebook.com/ads/library/?active_status=all&ad_type=political_and_issue_ads&country=IN&is_targeted_country=false&media_type=all"

def fetch_live_ads(keyword, country="IN", limit=20):
    if not META_ADS_TOKEN:
        raise ValueError("META_ADS_TOKEN not set")

    params = {
        "search_terms": keyword,
        "ad_reached_countries": country,
        "ad_type": "ALL",
        "fields": (
            "page_name,"
            "ad_creative_body,"
            "ad_creative_link_title,"
            "ad_delivery_start_time"
        ),
        "limit": limit,
        "access_token": META_ADS_TOKEN
    }

    response = requests.get(BASE_URL, params=params)
    response.raise_for_status()

    ads = response.json().get("data", [])
    return [ad for ad in ads if ad.get("ad_creative_body")]