---
search:
  tags:
    - Ads
    - GET
seo:
  description: >-
    Lists the ads of every ad account your organization connects, across the
    providers, newest… Reference for the GET /observe/ads endpoint in the
    AdCrunch API.
sidebar:
  label: List ads
  badge: GET
title: List ads
type: openapi-operation
---
Lists the ads of every ad account your organization connects, across the providers, newest first.

## One concept, two words

An ad is an `ad` at Meta and TikTok. At Google Ads it is an **`ad_group_ad`** — the link resource that joins an ad to an ad group, whose id is the composite `{adGroupId}~{adId}`. AdCrunch stores that link as the leaf and does not model a separate shared ad, so a Google row answers the composite id. Every row keeps its own provider’s word in `type`.

## Narrowing

Two parents, and they are not the same question. `adGroupId` reads the ads of one ad group. `campaignId` reads **every** ad of a campaign, whatever ad group holds it — a grandparent, which the ad group filter cannot express. Send both to narrow twice.

## What is not here

Performance Max campaigns have **no ads**. Google’s automation assembles placements from an asset group, so nothing below a Performance Max campaign appears here.

`GET /observe/ads`
