> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List recent buyers

> List buyers an ESA has seen and how each one resolved to a GAM advertiser

`GET /api/v2/storefront/esa/{esaId}/recent-buyers`

Lists the buyers a GAM-backed embedded sales agent has recently seen and shows whether each resolved through the default advertiser or a specific mapping. Use it to find buyers booking against the catch-all that should have their own advertiser mapping.

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl "https://api.interchange.io/api/v2/storefront/esa/123/recent-buyers?days=30&limit=100" \
    -H "Authorization: Bearer $SCOPE3_API_KEY"
  ```
</CodeGroup>

## Parameters

| Field   | Type    | Required | Notes                                    |
| ------- | ------- | -------- | ---------------------------------------- |
| `esaId` | integer | Yes      | Path. Embedded sales-agent connection id |
| `days`  | integer | No       | Query. Lookback window in days, max 365  |
| `limit` | integer | No       | Query. Max buyers to return, max 1000    |

## Response

```json theme={null}
{
  "buyers": [
    {
      "operatorDomain": "buyer.example",
      "brandHouse": "Acme Holdings",
      "brandId": "acme-beverages",
      "requestCount": 47,
      "resolvedVia": "mapping",
      "resolvedGamAdvertiserId": "4567890123",
      "lastSeenAt": "2026-06-06T18:42:00.000Z"
    },
    {
      "operatorDomain": "newbuyer.example",
      "brandHouse": null,
      "brandId": null,
      "requestCount": 3,
      "resolvedVia": "default",
      "resolvedGamAdvertiserId": "9988776655",
      "lastSeenAt": "2026-06-07T09:10:00.000Z"
    }
  ]
}
```

`resolvedVia` tells you how the buyer routed: `mapping` if a per-buyer override matched, `default` if it fell through to the catch-all advertiser. `resolvedGamAdvertiserId` is the advertiser the buyer actually booked against. `requestCount` is the total number of requests seen from this buyer in the lookback window. `brandHouse` and `brandId` may be `null`.

## Errors

* `400 VALIDATION_ERROR` — `esaId` is not a positive integer, or the ESA is not Google Ad Manager-backed.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Buyer routing tasks" href="/v2/storefront/buyer-routing/tasks" icon="list-check">
    All buyer-routing operations
  </Card>

  <Card title="Create buyer mapping" href="/v2/storefront/buyer-routing/tasks/create-buyer-mapping" icon="link">
    Map a buyer off the default
  </Card>

  <Card title="List buyer mappings" href="/v2/storefront/buyer-routing/tasks/list-buyer-mappings" icon="table-list">
    See existing overrides
  </Card>

  <Card title="Set default advertiser" href="/v2/storefront/buyer-routing/tasks/set-default-advertiser" icon="star">
    The fallback for unmatched buyers
  </Card>
</CardGroup>
