All Kotlin tutorials

How to scrape Google Company Ads with Kotlin

Company Ads This tutorial gets it with a short Kotlin 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 Kotlin

Kotlin on JVM 11 or newer

3. Write the code

Save this as Scrape.kt.

import java.net.URI
import java.net.URLEncoder
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse

fun main() {
    val params = mapOf()
    val query = params.entries.joinToString("&") { "${it.key}=${URLEncoder.encode(it.value, Charsets.UTF_8)}" }
    val req = HttpRequest.newBuilder()
        .uri(URI.create("https://scrapeio.com/v1/google/company/ads?" + query))
        .header("x-api-key", System.getenv("SCRAPEIO_API_KEY"))
        .build()
    val res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString())
    check(res.statusCode() == 200) { "HTTP ${res.statusCode()}" }
    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

kotlinc Scrape.kt -include-runtime -d scrape.jar && java -jar scrape.jar

The 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

NameTypeDescription
domainstringThe domain of the company
advertiser_idstringThe advertiser id of the company
topicall, politicalThe topic to search for.
regionstringThe region to search for.
start_datestringStart date to search for.
end_datestringEnd date to search for.
platformgoogle_maps, google_play, google_search, google_shopping, youtubePlatform to search for.
formattext, image, videoAd format to search for.
get_ad_detailsstringSet to true to get the ad details.
cursorstringCursor to paginate through results

Errors and what you pay

StatusMeaningCharged
200SuccessYes, unless cached
400A parameter is missing or wrongNo
401The key is missing or invalidNo
402Not enough creditsNo
403The account or post is privateNo
404Not found on the platformNo
429More than 300 requests a minuteNo
502Every source is down; retry shortlyNo

Same endpoint in other languages

Python · Node.js · JavaScript · TypeScript · Go · Rust · Java · C# · PHP · Ruby · 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

More Google Ad Library tutorials in Kotlin