March 13th, 2026 Newsletter
This is the automated version of Step 1 from the newsletter. Instead of going to Meta Ad Library and using Imageye to download ad images manually, you use SearchAPI to pull them programmatically, sorted by impressions, with full metadata.
This is the same approach we use in Skipper/AdLib. It's faster, more complete, and gives you structured data alongside the images.
You'll need:
Cost: SearchAPI charges per search. Pulling ads for one brand is typically 2-3 searches (page lookup + ad pull + maybe one pagination call). At current pricing that's roughly $0.10-0.30 per brand. So 5 brands = about $1-1.50.
Every brand on Meta has a Page ID. You need this to pull their ads.
import requests
import os
import json
import time
SEARCHAPI_KEY = "your_api_key_here"
SEARCHAPI_BASE = "<https://www.searchapi.io/api/v1/search>"
def find_page(brand_name):
"""Search for a brand's Meta page. Returns page_id, page_name, image_uri."""
r = requests.get(SEARCHAPI_BASE, params={
"engine": "meta_ad_library_page_search",
"q": brand_name,
"country": "US",
"api_key": SEARCHAPI_KEY,
}, timeout=20)
r.raise_for_status()
pages = r.json().get("page_results", [])
if not pages:
print(f"No Meta page found for '{brand_name}'")
return None
page = pages[0]
print(f"Found: {page.get('page_name')} (ID: {page.get('page_id')})")
return page
# Example
page = find_page("Jones Road Beauty")
Tip: The first result is usually right, but verify the page name matches. If you get the wrong page, the API sometimes returns similarly-named pages. Check the page_name field.
Now pull their ads sorted by impressions. The key parameters: