How to scrape Google Company Ads with Java
Company Ads This tutorial gets it with a short Java 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 Java
Java 11 or newer; HttpClient is built in3. Write the code
Save this as Scrape.java.
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;
public class Scrape {
static String enc(String s) {
return URLEncoder.encode(s, StandardCharsets.UTF_8);
}
public static void main(String[] args) throws Exception {
String query = "";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://scrapeio.com/v1/google/company/ads?" + query))
.header("x-api-key", System.getenv("SCRAPEIO_API_KEY"))
.build();
HttpResponse<String> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
if (res.statusCode() != 200) throw new RuntimeException("HTTP " + res.statusCode());
System.out.println(res.body());
}
}This prints the first page. To get the next one, send the value of data.cursor as the cursor parameter and call again until data.has_more is false.
4. Run it
java Scrape.javaThe 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 · JavaScript · TypeScript · Go · Rust · 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