Stored read: List ad groups
Lists the ad groups of every ad account your organization connects, across the providers, newest first.
One concept, three words
An ad group is a Meta ad set, a TikTok ad group and a Google Ads ad group. This path reads all three at once, and every row keeps the word its own provider writes, in type. AdCrunch renames nothing: a Meta adset and a Google ad_group are not the same object, and a caller that must speak to the provider needs the provider’s word.
Narrowing
Send campaignId to read one campaign’s ad groups, and provider to read one platform. limit counts rows of the answer itself, not rows of each advertiser. When the answer holds nextCursor, more rows exist: send it back as cursor to get the next page.
Budget
An ad group that carries its own budget answers it in budget, in whole units of its currency, and a budgetLevel of ad_group. One whose campaign carries the budget answers a null budget and a budgetLevel of campaign: read the campaign for the amount. Every Google Ads ad group is the second kind, because Google Ads keeps every budget on the campaign.
What is not here
Performance Max campaigns have no ad groups. Google’s automation delivers them through an asset group instead, which is a child of the campaign and a sibling of an ad group — so a Performance Max campaign answers nothing here, and that is not a fault. Read /observe/asset-groups for those.
Request
- Base URL: https://api.adcrunch.dev
- URL: https://api.adcrunch.dev/observe/ad-groups
- Auth: HTTP bearer
Query parameters
Ids to filter on, separated by commas. An id is the bare id its provider gives.
The nextCursor of the previous page. Omit it to get the first page. Send it with no change, and with the same filters as the request that answered it: a cursor from a different query gets a 400 invalid_cursor. Do not build or change a cursor.
The greatest number of rows on the page, from 1 to 500. The default is 100. A greater value gets a 400, with error of invalid_request.
Read one ad account from what AdCrunch holds, prefixed acc_. One your organization does not own answers an empty list rather than a failure. To ask the provider instead, put the advertiser in the path.
Read one status, normalized across the providers. TikTok ENABLE and DISABLE are read here as ACTIVE and PAUSED.
Read only what this campaign holds. Send the bare id its provider gives, which is the campaignId every row answers.
Response
The matching ad groups, and how many there are in all. Each row keeps its provider’s own type: adset, adgroup or ad_group.
Example response
{
"data": [
{
"advertiserId": "acc_1203456789012345",
"bidAmount": null,
"bidStrategy": null,
"budget": null,
"budgetLevel": "campaign",
"budgetType": null,
"campaignId": "120210000000000",
"createdAt": 1789610000000,
"createdTime": 1789600000000,
"currency": "EUR",
"deletedAt": null,
"endTime": null,
"id": "120210000000001",
"name": "Women 25-44, France",
"path": "120210000000000/120210000000001",
"provider": "meta",
"roasFloor": null,
"startTime": null,
"status": "ACTIVE",
"type": "adset",
"updatedAt": null,
"updatedTime": 1789900000000
}
],
"nextCursor": "eyJwIjpbMTc4OTYxMDAwMDAwMCwibWV0YSIsImFkc2V0IiwiMTIwMjEwMDAwMDAwMDAxIl0sInEiOiI1bHgzc2UzOTBpIn0"
}Changes
No recorded changes to this operation across all 1 revision of this API.