package main
import (
"fmt"
"io"
"net/http"
"net/url"
"time"
)
const (
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.scrapecreators.com"
ENDPOINT_PATH = "/v1/facebook/adLibrary/search/ads"
)
func main() {
result, err := scrape()
if err != nil {
fmt.Printf("Error: %v", err)
return
}
fmt.Printf("Response: %s", result)
}
func scrape() (string, error) {
client := &http.Client{
Timeout: 30 * time.Second,
}
// Build query parameters
params := url.Values{}
params.Add("query", "running")
params.Add("sort_by", "total_impressions")
params.Add("search_type", "keyword_unordered")
params.Add("ad_type", "all")
params.Add("country", "ALL")
params.Add("language", "EN")
params.Add("status", "ACTIVE")
params.Add("media_type", "ALL")
params.Add("start_date", "2025-01-05")
params.Add("end_date", "2025-02-16")
params.Add("cursor", "AQHRYLVDkoMkvGv7yK1rcce-vJmKiKv330R4v3j9KHSOaYvmF1bq1QkotG0rgW8Fkrj-")
params.Add("trim", "false")
req, err := http.NewRequest("GET", BASE_URL+ENDPOINT_PATH+"?"+params.Encode(), nil)
if err != nil {
return "", err
}
req.Header.Set("x-api-key", API_KEY)
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
body, _ := io.ReadAll(resp.Body)
return "", fmt.Errorf("HTTP %d: %s", resp.StatusCode, string(body))
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return "", err
}
return string(body), nil
}