---
title: "List Clicked Links API"
slug: list-clicked-links-api
description: "Retrieve the links clicked in a broadcast"
created_at: "2026-09-15"
updated_at: "2026-09-15"
image: https://cdn.resend.com/posts/list-clicked-links.jpg
humans: ["diel-duarte"]
---

Today we are releasing a new API endpoint to [retrieve the links clicked in a broadcast](/docs/api-reference/broadcasts/list-broadcast-clicked-links). It returns every **link clicked in a broadcast**, ranked by total clicks.

<Callout type="info">
To view the click rates for your emails you will need to [enable click tracking](/docs/dashboard/domains/tracking) for your domain.
</Callout>

## What you can build with it

* **Your own dashboard**: connect other sources of data to understand how your subscribers interact with your emails
* **Cross-campaign reports**: identify which URLs and CTAs drive the most engagement across your broadcasts
* **Optimized content strategies**: surface your top-performing links to inform future email design and messaging

<video
  src="https://cdn.resend.com/posts/clicked-links.mp4"
  autoPlay
  loop
  muted
  playsInline
  className="extraWidth"
/>

## Retrieving link clicks

Use the ID of any broadcast. The API returns a list of every link in the broadcast that was clicked and their **total and unique clicks**, sorted by total clicks.

<CodeTabs codeHeight={475}>

```nodejs
import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

const { data, error } = await resend.broadcasts.clickedLinks(
  '559ac32e-9ef5-46fb-82a1-b76b840c0f7b',
  { limit: 20 },
);
```

```php
$resend = Resend::client('re_xxxxxxxxx');

$resend->broadcasts->clickedLinks->list('559ac32e-9ef5-46fb-82a1-b76b840c0f7b',[
  'limit' => 20
]);
```

```python
import resend

resend.api_key = "re_xxxxxxxxx"

resend.Broadcasts.clicked_links(
    id="559ac32e-9ef5-46fb-82a1-b76b840c0f7b",
    params={"limit": 20},
)
```

```ruby
require "resend"

Resend.api_key = "re_xxxxxxxxx"

Resend::Broadcasts.clicked_links("559ac32e-9ef5-46fb-82a1-b76b840c0f7b", { limit: 20 })
```

```go
package main

import "github.com/resend/resend-go/v3"

func main() {
	client := resend.NewClient("re_xxxxxxxxx")

	client.Broadcasts.ClickedLinks("559ac32e-9ef5-46fb-82a1-b76b840c0f7b")
}
```

```rust
use resend_rs::{Resend, Result, list_opts::ListOptions};

#[tokio::main]
async fn main() -> Result<()> {
  let resend = Resend::new("re_xxxxxxxxx");

  let _links = resend
    .broadcasts
    .clicked_links("559ac32e-9ef5-46fb-82a1-b76b840c0f7b", ListOptions::default())
    .await?;

  Ok(())
}
```

```java
Resend resend = new Resend("re_xxxxxxxxx");

ListBroadcastClickedLinksResponseSuccess data = resend.broadcasts().clickedLinks("559ac32e-9ef5-46fb-82a1-b76b840c0f7b");
```

```dotnet
using Resend;

IResend resend = ResendClient.Create( "re_xxxxxxxxx" ); // Or from DI

var resp = await resend.BroadcastClickedLinksAsync( new Guid( "559ac32e-9ef5-46fb-82a1-b76b840c0f7b" ) );
Console.WriteLine( "Nr Links={0}", resp.Content.Data.Count );
```

```curl
curl -X GET 'https://api.resend.com/broadcasts/559ac32e-9ef5-46fb-82a1-b76b840c0f7b/clicked-links?limit=20' \
     -H 'Authorization: Bearer re_xxxxxxxxx'
```

```cli
resend broadcasts clicked-links 559ac32e-9ef5-46fb-82a1-b76b840c0f7b --limit 20
```

</CodeTabs>

The response looks like this:

```json
{
  "object": "list",
  "has_more": true,
  "data": [
    {
      "id": "b2Zmc2V0OjA",
      "url": "https://resend.com/pricing",
      "clicks": 42,
      "unique_clicks": 30
    },
    {
      "id": "b2Zmc2V0OjE",
      "url": "https://resend.com/docs",
      "clicks": 17,
      "unique_clicks": 15
    }
  ]
}
```

You can also retrieve the link clicks in the [Resend CLI](/docs/cli) and through the [MCP server](/docs/mcp-server), so your agents can help you understand how your emails are performing.