# List a broadcast's clicked links

`GET /v1/email/broadcasts/{broadcast_id}/clicked-links`

Returns the destination URLs a broadcast's recipients clicked, grouped by URL and sorted by click count. Each entry carries an exact click count and distinct-recipient count over every click event the broadcast has, plus the link's name: the name used by the most clicks that named it, or null if no click through that URL ever carried one. `data` is capped at the 100 most-clicked URLs; `total` carries the actual number of distinct URLs clicked, so a capped response is never mistaken for a complete one.

## Code samples

### TypeScript

```ts
const links = await bird.broadcasts.listClickedLinks("eb_01krdgeqcxet5s7t44vh8rt9mg");
for (const link of links.data) console.log(link.url, link.click_count, link.recipient_count);
```

### Python

```py
links = client.broadcasts.list_clicked_links("eb_01krdgeqcxet5s7t44vh8rt9mg")
for link in links.data:
    print(link.url, link.click_count, link.recipient_count)
```

### Go

```go
links, err := client.Broadcasts.ListClickedLinks(context.Background(), "eb_01krdgeqcxet5s7t44vh8rt9mg")
if err != nil {
	log.Fatal(err)
}
for _, link := range links.Data {
	fmt.Println(*link.Url, *link.ClickCount, *link.RecipientCount)
}
```

### PHP

```php
$links = $bird->broadcasts->listClickedLinks('eb_01krdgeqcxet5s7t44vh8rt9mg');
foreach ($links->getData() ?? [] as $link) {
    echo $link->getUrl(), ' ', $link->getClickCount(), ' ', $link->getRecipientCount(), PHP_EOL;
}
```

### CLI

```sh
bird email broadcasts list-clicked-links <broadcast-id>
```

### cURL

```sh
curl -X GET "https://us1.platform.bird.com/v1/email/broadcasts/{broadcast_id}/clicked-links" \
  -H "Authorization: Bearer $TOKEN"
```

## Example response `200`

```json
{
  "data": [
    {
      "url": "https://acme.com/whats-new/faster-exports",
      "name": "Faster exports, docs",
      "click_count": 431,
      "recipient_count": 388
    }
  ],
  "total": 57
}
```

## Path parameters

- `broadcast_id` (string): ID of the broadcast whose clicked links to read.

## Response body

- `data` (array of object, required): The broadcast's clicked URLs, most-clicked first, capped at 100 rows.
- `data.url` (string, required): The clicked URL.
- `data.name` (nullable string, required): What the link said, resolved by the name used by the most clicks that carried one. Null when no click through this URL ever carried a name.
- `data.click_count` (integer, required): Total clicks through this URL, including clicks that carried no link name.
- `data.recipient_count` (integer, required): Number of distinct recipients who clicked this URL at least once.
- `total` (integer, required): Total number of distinct URLs the broadcast's recipients clicked, regardless of the cap on `data`. When it exceeds the number of rows returned, the list was capped at the 100 most-clicked URLs.

## Related resources

- [Getting started with email](/learn/email/getting-started-with-email) (video)
- [Email](/products/email) (product)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=email)
