How to scrape Facebook Ad Library Ad with C#
Ad Details This tutorial gets it with a short C# program and the Facebook Ad Library Ad API. Each successful call costs 1 credit; errors and not-found answers are free.
1. Get an API key
Sign in to get a key and 100 free credits, no card. Then put the key in an environment variable so it stays out of your code:
export SCRAPEIO_API_KEY="your_key_here"2. Set up C#
dotnet new console -o scrape && cd scrape3. Write the code
Save this as Program.cs.
using System.Text.Json;
var http = new HttpClient();
http.DefaultRequestHeaders.Add("x-api-key", Environment.GetEnvironmentVariable("SCRAPEIO_API_KEY"));
var query = new Dictionary<string, string> { };
string Url() => "https://scrapeio.com/v1/facebook/adLibrary/ad" + "?" + string.Join("&", query.Select(p => $"{p.Key}={Uri.EscapeDataString(p.Value)}"));
var json = await http.GetStringAsync(Url());
var data = JsonDocument.Parse(json).RootElement.GetProperty("data");
Console.WriteLine(JsonSerializer.Serialize(data, new JsonSerializerOptions { WriteIndented = true }));4. Run it
dotnet runThe response has the same envelope on every endpoint: success, cached, credits_used, credits_remaining and data. Shared fields such as handle, followers, plays, likes and created_at have the same names on every platform.
Parameters
| Name | Type | Description |
|---|---|---|
id | string | Facebook Ad Id |
url | string | Facebook Ad URL |
get_transcript | boolean | Transcription is opt-in via gettranscript=true. |
trim | boolean | Set to true for a trimmed down version of the response |
cache_max_age | 1d, 3d, 7d, 14d, 30d | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "ca |
Errors and what you pay
| Status | Meaning | Charged |
|---|---|---|
200 | Success | Yes, unless cached |
400 | A parameter is missing or wrong | No |
401 | The key is missing or invalid | No |
402 | Not enough credits | No |
403 | The account or post is private | No |
404 | Not found on the platform | No |
429 | More than 300 requests a minute | No |
502 | Every source is down; retry shortly | No |
Same endpoint in other languages
Python · Node.js · JavaScript · TypeScript · Go · Rust · Java · PHP · Ruby · Kotlin · Swift · R
Prefer no code?
Connect the MCP server to Claude Code, Cursor or Codex and ask in plain English. The agent uses call_endpoint with path /v1/facebook/adLibrary/ad for you.
100 free credits, no card. Credits never expire.
Get API key