Automate Facebook ad reporting
Pulling the same numbers out of Ads Manager every week is a chore. A bot can do your Facebook ad reporting for you, downloading the export or reading the figures straight off the table, then dropping them in a sheet on a schedule. Your own ad account, your own data. There are three ways to start, with no code, with code, or with a Claude skill.
What I mean by automating Facebook ad reporting
Automating Facebook ad reporting means a bot gets your ad numbers out of Ads Manager so you do not have to. It opens your reporting view, either downloads the report Facebook exports or reads the figures off the table, and writes them where you want, a sheet, a folder, a dashboard feed. Run it every morning and the latest numbers are waiting, with no clicking through Ads Manager by hand.
The API exists, but it is heavy
Before you automate anything, know the official routes. Ads Manager can export a report, and Meta has a Marketing API for ad data. If you have a developer and the time, the API is the robust way to do this.
But the API is heavy. App review, access tokens, rate limits, and code to maintain, all before you see a single number. For a marketer or a small team that just needs last week's spend and results in a sheet, that is a lot. The browser route pulls exactly what you already see in Ads Manager, on a schedule, with no app review and no token to manage. It is the quick, no-developer way to the same data.
Who this is for
This is for the marketer or agency pulling the same Facebook ad numbers every week. Building the Monday report, updating a client dashboard, tracking spend against budget. You manage the ad account, you just do not want to export and copy by hand every time. No-coders and coders both, since you can build it without code and drop into code when you want.
How I'd approach it
Decide how you want the data, the file or the figures. If you need the full report with every breakdown, download the export Ads Manager produces and save it to a sheet or folder. If you only need a few headline numbers, read them straight off the reporting table, which skips the file entirely. Either way, run it on your own ad account with your own logged-in session, and schedule it for the morning the report is due.
File or figures, your account, on a schedule. I would lay out the first draft with Build with description.
Pull your ad report from a description
Describe the report in plain words in the Chrome extension and it builds the steps for you. Give it a few short lines, check what it made, and run it. Explore no-code.
To the right is an example. Describe the report you pull, and the AI lays out the steps.
Chrome extensionInstructions
- Open Ads Manager and go to the reporting view45 / 500
- Set the date range to last week31 / 500
- Read the spend, results, and cost per result from the table59 / 500
- Write the numbers into a Google Sheet37 / 500
- Run it every Monday morning27 / 500
Pull your ad report in code
Build with code. If you would rather script it yourself, this is the path. Explore code
Connect Playwright (or Puppeteer) to our cloud Chromium and write the same scripts you'd run locally, without managing the browser.
Code toolimport { chromium } from "playwright";
const browser = await chromium.connectOverCDP(
`wss://cdp-lb.axiom.ai/?token=${process.env.AXIOM_API_KEY}`
);
try {
const context = browser.contexts()[0];
const page = context.pages()[0] ?? await context.newPage();
// Your own Ads Manager reporting view, using your logged-in session
await page.goto("https://business.facebook.com/adsmanager/reporting");
await page.waitForSelector(".report-row");
// Read each campaign row off the table
const rows = await page.$$eval(".report-row", els =>
els.map(el => ({
campaign: el.querySelector(".name")?.textContent.trim(),
spend: el.querySelector(".spend")?.textContent.trim(),
results: el.querySelector(".results")?.textContent.trim(),
}))
);
console.log(rows); // write these to your sheet
} finally {
await browser.close();
}
Build with a Claude skill
Build no-code or code bots with a skill.
Add the Claude skill and describe the report you need. It builds the bot for you, no-code or code, downloading the export or reading the figures and dropping them in a sheet.

What can you pull?
Most of what Ads Manager shows you. A couple of cases worth knowing first.
Works well
- Spend, results, and cost per result
- Campaign, ad set, and ad breakdowns
- The export file Ads Manager produces
- A fixed date range on a schedule
- Numbers into a sheet or dashboard feed
Harder
- Custom columns that move around
- Very large date ranges that page slowly
- Two-factor logins on the account
Don't try
- Pulling data from accounts you do not manage
- Anything against Facebook's terms
- Scraping faster than a person would
What I'd watch out for
Ads Manager is a heavy, changing app, so a few things trip up a report bot. Here is what I would watch for.
Use your own session
Run on the account you manage, signed in as yourself. Store the cookies so the bot keeps the session rather than logging in fresh each run, which Facebook treats as suspicious.
The layout shifts
Ads Manager changes often, and columns move. Target cells by the column you want with the selector tool, and recheck after a big Facebook update.
Wait for the numbers to load
The table fills in after the page loads, and a wrong date range shows the wrong figures. Set the range explicitly and wait for the row to appear before you read it.
Download or extract, not both
If you only need a few numbers, read them off the table and skip the file. If you need everything, download the export. Pick one so the bot stays simple, and remember the local download needs the desktop app.