March 13th, 2026 Newsletter


For the people who don't want to screenshot anything


What This Is

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.


Step 1: Find the Brand's Meta Page

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.


Step 2: Pull Their Top Memes

Now pull their ads sorted by impressions. The key parameters: