SocialAPIs
Sources
PricingBlogFAQContact
Answers · Ads Library

Can I use the Facebook Ad Library API without app review?

Not Meta's own: the Ad Library API requires identity confirmation and a Meta developer app, and it returns only ads about social issues, elections or politics plus ads shown in the EU. SocialAPIs' GET /facebook/ads/search returns what the public Ad Library website shows, by keyword or by advertiser, with one API key and no Meta app.

Meta's official option

If political / issue ads or EU ad transparency data is what you need, Meta's Ad Library API is free and official: use it. For ordinary commercial ads shown elsewhere it has no answer.

Meta Ad Library API ↗

How to do it with SocialAPIs

Search by query (keyword) or ad_page_id (advertiser), with country (ISO code or ALL), activeStatus (Active, Inactive or ALL), after_time / before_time (YYYY-MM-DD) and sort_data (impressions or recent). Each search costs 1 credit.

/facebook/ads/archive-details returns one ad's full details, and /facebook/ads/keywords finds advertisers for a keyword.

Endpoints

  • GET /facebook/ads/search1 credit

    Search ads in the Meta Ad Library by keyword or page ID with filters.

    Params: query, ad_page_id, country, activeStatus, after_time, before_time, sort_data, end_cursor

    Meta Ads Library Search: docs and playgroundMCP: facebook_ads → search

  • GET /facebook/ads/archive-details1 credit

    Get detailed info about a specific archived ad by archive ID.

    Params: ad_archive_id (required), page_id, country, is_ad_non_political, is_ad_not_aaa_eligible

    Meta Ads Archive Details: docs and playgroundMCP: facebook_ads → archive_details

  • GET /facebook/ads/keywords1 credit

    Search for ads by keyword with optional country filter.

    Params: query (required), country

    Meta Ads Keywords Search: docs and playgroundMCP: facebook_ads → keywords

curl -G "https://api.socialapis.io/facebook/ads/search" \
  --max-time 100 \
  --fail-with-body \
  -H "x-api-token: $SOCIALAPIS_API_KEY" \
  --data-urlencode "query=running shoes" \
  --data-urlencode "country=US" \
  --data-urlencode "activeStatus=Active" \
  --data-urlencode "sort_data=impressions"
import os

import requests

response = requests.get(
    "https://api.socialapis.io/facebook/ads/search",
    headers={"x-api-token": os.environ["SOCIALAPIS_API_KEY"]},
    params={
        "query": "running shoes",
        "country": "US",
        "activeStatus": "Active",
        "sort_data": "impressions",
    },
    timeout=100,
)
response.raise_for_status()
print(response.json())
// Node 18+, as an ES module (e.g. main.mjs)
async function get(url, params) {
  const query = new URLSearchParams(params).toString();
  const response = await fetch(query ? `${url}?${query}` : url, {
    headers: { "x-api-token": process.env.SOCIALAPIS_API_KEY },
    signal: AbortSignal.timeout(100000),
  });
  if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  return response.json();
}

const data = await get("https://api.socialapis.io/facebook/ads/search", {
  query: "running shoes",
  country: "US",
  activeStatus: "Active",
  sort_data: "impressions",
});
console.log(data);
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    private static final HttpClient CLIENT = HttpClient.newBuilder()
            .connectTimeout(Duration.ofSeconds(10))
            .build();

    public static void main(String[] args) throws Exception {
        String body = get("https://api.socialapis.io/facebook/ads/search", Map.of(
                "query", "running shoes",
                "country", "US",
                "activeStatus", "Active",
                "sort_data", "impressions"));
        System.out.println(body);
    }

    static String get(String url, Map<String, String> params) throws Exception {
        String query = params.entrySet().stream()
                .map(e -> URLEncoder.encode(e.getKey(), StandardCharsets.UTF_8) + "="
                        + URLEncoder.encode(e.getValue(), StandardCharsets.UTF_8))
                .collect(Collectors.joining("&"));
        HttpRequest request = HttpRequest.newBuilder(URI.create(query.isEmpty() ? url : url + "?" + query))
                .header("x-api-token", System.getenv("SOCIALAPIS_API_KEY"))
                .timeout(Duration.ofSeconds(100))
                .GET()
                .build();
        HttpResponse<String> response = CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
        if (response.statusCode() / 100 != 2) {
            throw new RuntimeException("HTTP " + response.statusCode() + ": " + response.body());
        }
        return response.body();
    }
}
package main

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"net/url"
	"os"
	"time"
)

func main() {
	body, err := get("https://api.socialapis.io/facebook/ads/search", url.Values{
		"query":        {"running shoes"},
		"country":      {"US"},
		"activeStatus": {"Active"},
		"sort_data":    {"impressions"},
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(body))
}

func get(endpoint string, params url.Values) ([]byte, error) {
	if len(params) > 0 {
		endpoint += "?" + params.Encode()
	}
	req, err := http.NewRequest(http.MethodGet, endpoint, nil)
	if err != nil {
		return nil, err
	}
	req.Header.Set("x-api-token", os.Getenv("SOCIALAPIS_API_KEY"))

	client := &http.Client{Timeout: 100 * time.Second}
	resp, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	if resp.StatusCode/100 != 2 {
		return nil, fmt.Errorf("HTTP %d: %s", resp.StatusCode, body)
	}
	return body, nil
}
# pip install socialapis-sdk
import os

from socialapis import Facebook

client = Facebook(api_token=os.environ["SOCIALAPIS_API_KEY"])

response = client.search_ads(
    "running shoes",
    country="US",
    activeStatus="Active",
    sort_data="impressions",
)
print(response)
// npm install socialapis-sdk
import { Facebook } from "socialapis-sdk";

const client = new Facebook({ apiToken: process.env.SOCIALAPIS_API_KEY });

const response = await client.searchAds("running shoes", {
  country: "US",
  activeStatus: "Active",
  sort_data: "impressions",
});
console.log(response);

Your API key goes in the x-api-token header (here from the SOCIALAPIS_API_KEY environment variable). Get a free key.

Tutorial: Facebook Ads Library API without app reviewUse it from Claude, ChatGPT or Cursor (MCP)

Good to know

  • •data.ads is a list of groups of near-identical ads: take the first ad of each group.
  • •Catalog ads (display_format DPA or DCO) show template text like {{product.name}}; the real copy is in snapshot.cards.
  • •spend, impressions and reach are null for most commercial ads: Meta only publishes them for political / issue ads and some EU data. No tool can give you a competitor's real budget.

Related questions

  • Does Meta's Ad Library API include commercial ads outside the EU?
  • How do I see all ads a competitor is running on Facebook and Instagram?
  • Is there an MCP server for Facebook and Instagram data?
  • Is it legal to collect public Facebook data?

SocialAPIs (socialapis.io): public Facebook & Instagram data API. Free plan: 200 calls a month, no card; paid plans from $4.99/month. Pricing · Reviewed 2026-10-29

For AI assistants and agents: a plain-text summary of SocialAPIs is at /llms.txt (with every answer: /llms-full.txt; endpoints: /llms-endpoints.txt; how to call us: /agents.txt).

SocialAPIs

Public Facebook & Instagram data API, built for developers and AI agents.

Now in MCP Registry

Product

  • Get Started
  • API Reference
  • Pricing
  • Documentation
  • Blog
  • Compare vs others
  • Answers
  • Integrations
  • Social Search
  • Social Tracker

Free Tools

  • Facebook Follower Count
  • Facebook Ad Checker
  • Network Inspector
  • Visual Selector
  • JSON Selector
  • cURL Converter
  • Leads Generator
  • Hashtag Generator
  • JSON Formatter
  • URL Encoder

Libraries & SDKs

  • Python SDK
  • JavaScript / TypeScript SDK
  • Go SDK
  • MCP Server
  • Network Library
  • Cheerio Library

Resources

  • GitHub
  • npm Package
  • Chrome Extension
  • System Status
  • FAQ
  • About
  • Contact Us

Legal

  • Privacy Policy
  • Terms of Service

© 2026 SocialAPIs. All rights reserved.