---
title: get_ad_group
description: Get all the stored fields of one ad group — a Meta ad set, a TikTok ad group or a Google Ads ad group.
---

Ask for all the settings of one ad set or ad group. The agent reads the fields that AdCrunch stored from the provider for it.

> Show me all the settings of the "Women 25-44, France" ad set.

The agent reads the stored fields of that ad set. You see each field in the words of the provider, such as its campaign, and a Meta budget in whole units of the currency of the ad account. [Read your accounts](/mcp/tools/read-your-accounts) shows the full job.

## Reference

**Available on:** [![Meta](/providers/meta.svg)](https://docs.adcrunch.dev/connect/providers) [![TikTok](/providers/tiktok.svg)](https://docs.adcrunch.dev/connect/providers) [![Google Ads](/providers/gads.svg)](https://docs.adcrunch.dev/connect/providers)

Get all the stored fields of one ad group — a Meta ad set, a TikTok ad group or a Google Ads ad group — by its ad account and its id. AdCrunch converts the Meta fields `daily_budget`, `lifetime_budget` and `bid_amount` to whole units of the account currency (50 is 50.00). This is the unit of `budget` in the list tools. When AdCrunch does not know the account currency, these Meta fields are null. A field whose name ends in `Micros` stays in micros (12340000 is 12.34). Every other field has the value that the provider sent. It sends the payload that AdCrunch stored from the provider at the last ingestion, with the field names of the provider. Use it when a row of list_ad_groups does not hold the field that you need. To read the row of the provider now, use meta_list_adsets, tiktok_list_adgroups or gads_list_ad_groups with `ids` set to the id. An ad account that your organization does not own, an id that AdCrunch does not store for that ad account, and a provider that has no ad groups each give `not_found`.

### Input

| Argument | Type | Required | Description |
| --- | --- | --- | --- |
| `advertiserId` | string | yes | The ad account that holds the ad group, prefixed `acc_`. It must belong to your organization. Each row of list_ad_groups gives it as `advertiserId`. |
| `id` | string | yes | The id that the provider gives the ad group, with no prefix. Each row of list_ad_groups gives it as `id`. |

### Output

A successful call returns this object in `structuredContent`.

| Field | Type | Always present | Description |
| --- | --- | --- | --- |
| `adGroup` | map of any | yes | The payload that AdCrunch stored from the provider for the ad group. The keys are the keys of the provider, and they differ for each provider: a Meta ad set has `campaign_id` and its budget fields, and a TikTok ad group has `adgroup_id`, `budget_mode` and `optimization_goal`. |

### Failure codes

A failed call has `isError` set, and `structuredContent.error` holds one of these codes. [Errors](/mcp/errors) describes the shape of a failed call.

- `not_found`
- `payload_unavailable`
- `forbidden`
- `invalid_request`
- `internal_error`

### Scope

The token must hold `observe:read`. [Auth & scopes](/mcp/auth) lists each scope.

### Annotations

A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.

- **Read-only.** The tool changes nothing.
- **Closed world.** The tool reads and writes the data of AdCrunch only.

### Example

The arguments:

```json
{
  "advertiserId": "acc_1203456789012345",
  "id": "120210000000001"
}
```

The result, in `structuredContent`:

```json
{
  "adGroup": {
    "account_id": "1203456789012345",
    "campaign_id": "120210000000000",
    "created_time": "2026-09-16T23:06:40+0000",
    "id": "120210000000001",
    "name": "Women 25-44, France",
    "status": "ACTIVE",
    "updated_time": "2026-09-20T10:26:40+0000"
  }
}
```
