# Read a Google Ad's history

> For the complete documentation index, see [llms.txt](https://www.shortsintel.com/llms.txt). Every docs page is also available as markdown: add .md to its URL. To connect, read [agents.md](https://www.shortsintel.com/agents.md).

GET `/v1/ads/google/{creative_id}/snapshots`

Every observation of the Ad, newest first, with impression ranges overall, per country and per platform. `not_found` until the Ad has been looked up or searched.

[Open in Playground](https://www.shortsintel.com/console/playground?op=listGoogleAdSnapshots&creative_id=creative_id_example&limit=25) (no API Key needed)

## Price

Free.

## Parameters

| Name | In | Type | Required | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `creative_id` | path | `string` | Required | — | The `CR` id. |
| `limit` | query | `integer` min 1; max 100 | Optional | `25` | Items per page. |
| `cursor` | query | `string` | Optional | — | Opaque `next_cursor` from the previous page. |

## Responses

### 200 OK

`{ items, next_cursor }`.

object

A page of a list. `items` holds the page; pass `next_cursor` back as `cursor` for the next one.

- `next_cursor` string required nullable Pass back as `cursor`. Null on the last page.
- `items` array of object required
  - `at` string required
  - `metrics` any Meta: running, placements, countries, variant_count, and spend, impressions and reach ranges with currency where disclosed. TikTok: running, last_shown, audience, countries, targeting. Google: running, last_shown, countries, placements, impressions, spend and currency, and regions (each country's impressions, with its platforms' impressions); a range open at one end has a null lower or upper.
  - `source` string required

### 400 Bad Request

`invalid_request` for a `cursor` that is not a `next_cursor` this API issued. Nothing is charged.

Code: `invalid_request`. The problem body and every code are on [Errors](https://www.shortsintel.com/docs/reference/errors).

### 401 Unauthorized

Codes: `missing_authorization`, `invalid_key`, `key_revoked`, `key_expired`, `invalid_token`. The problem body and every code are on [Errors](https://www.shortsintel.com/docs/reference/errors).

### 404 Not Found

`not_found` — including anything belonging to another Customer.

Code: `not_found`. The problem body and every code are on [Errors](https://www.shortsintel.com/docs/reference/errors).

## Related guides

- [Pagination](https://www.shortsintel.com/docs/concepts/pagination): Following `next_cursor` through a list.
- [Ads](https://www.shortsintel.com/docs/concepts/ads): Search Meta's, TikTok's and Google's ad libraries: the filters, what each Ad carries, the winner Score, Ad analysis, what is stored, and what a search costs.

## Request samples

curl:

```bash
curl "https://www.shortsintel.com/v1/ads/google/creative_id_example/snapshots?limit=25" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"
```

TypeScript:

```typescript
const response = await fetch(
  "https://www.shortsintel.com/v1/ads/google/creative_id_example/snapshots?limit=25",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer sk_live_YOUR_KEY",
    },
  },
);

if (!response.ok) {
  throw new Error(`ShortsIntel ${response.status}`);
}

const data = await response.json();
```

Python:

```python
import requests

response = requests.get(
    "https://www.shortsintel.com/v1/ads/google/creative_id_example/snapshots?limit=25",
    headers={
        "Authorization": "Bearer sk_live_YOUR_KEY",
    },
)
response.raise_for_status()

data = response.json()
```

200 · `{ items, next_cursor }`.

```json
{
  "items": [
    {
      "at": "2026-11-07T09:12:58.104Z",
      "metrics": {
        "running": true,
        "last_shown": "2026-11-06T22:14:25.000Z",
        "countries": [
          "US"
        ],
        "placements": [
          "youtube",
          "google_search"
        ],
        "impressions": {
          "text": "10000000+",
          "lower": 10000000,
          "upper": null
        },
        "spend": null,
        "currency": null,
        "regions": [
          {
            "country": "US",
            "impressions": {
              "text": "10000000+",
              "lower": 10000000,
              "upper": null
            },
            "platforms": [
              {
                "platform": "youtube",
                "impressions": {
                  "text": "2000000-3000000",
                  "lower": 2000000,
                  "upper": 3000000
                }
              },
              {
                "platform": "google_search",
                "impressions": {
                  "text": "<1000",
                  "lower": null,
                  "upper": 1000
                }
              }
            ]
          }
        ]
      },
      "source": "vendor"
    }
  ],
  "next_cursor": null
}
```

[Previous List a TikTok Ad's snapshots](https://www.shortsintel.com/docs/reference/ads/list-tik-tok-ad-snapshots)[Next Look up an advertiser profile](https://www.shortsintel.com/docs/reference/ads/get-advertiser)
