How to scrape Google Company Ads with JavaScript
Company Ads This tutorial gets it with a short JavaScript program and the Google Company Ads API. Each successful call costs up to 25 credits; 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 JavaScript
npm install axios3. Write the code
Save this as scrape.js.
const axios = require("axios");
async function main() {
const params = { };
const headers = { "x-api-key": process.env.SCRAPEIO_API_KEY };
const items = [];
while (true) {
const { data: body } = await axios.get("https://scrapeio.com/v1/google/company/ads", { params, headers });
const data = body.data;
items.push(...(data.items || []));
if (!data.has_more || !data.cursor || items.length >= 100) break;
params.cursor = data.cursor;
}
console.log(items.length, "items");
console.log(items.slice(0, 3));
}
main().catch((err) => {
console.error(err.response ? err.response.status : err.message);
process.exit(1);
});The loop follows data.cursor until data.has_more is false, and stops at 100 items. Each page is one call, so it costs up to 25 credits.
4. Run it
node scrape.jsThe 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 |
|---|---|---|
domain | string | The domain of the company |
advertiser_id | string | The advertiser id of the company |
topic | all, political | The topic to search for. |
region | string | The region to search for. |
start_date | string | Start date to search for. |
end_date | string | End date to search for. |
platform | google_maps, google_play, google_search, google_shopping, youtube | Platform to search for. |
format | text, image, video | Ad format to search for. |
get_ad_details | string | Set to true to get the ad details. |
cursor | string | Cursor to paginate through results |
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 · TypeScript · Go · Rust · Java · C# · 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/google/company/ads for you.
100 free credits, no card. Credits never expire.
Get API key