---
name: "CURLINFO_COOKIELIST"
section: "3"
platform: "linux"
package: "curl"
version: "8.23.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/CURLINFO_COOKIELIST"
---

# CURLINFO\_COOKIELIST(3)

all known cookies

## NAME

CURLINFO\_COOKIELIST - all known cookies

## SYNOPSIS

```
#include <curl/curl.h>
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,
                           struct curl_slist **cookies);
```

## DESCRIPTION

Pass a pointer to a 'struct curl\_slist \*' to receive a linked-list of all cookies curl knows (expired ones, too). Do not forget to call *[curl\_slist\_free\_all(3)](/curl_slist_free_all/3.md)* on the list after it has been used. If there are no cookies (cookies for the handle have not been enabled or none have been received) the 'struct curl\_slist \*' is made a NULL pointer.

Cookies that were imported in the Set-Cookie format without a domain name are not exported by this option.

## PROTOCOLS

This functionality affects http only

## EXAMPLE

```
int main(void)
{
  CURL *curl = curl_easy_init();
  if(curl) {
    CURLcode result;
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
    /* enable the cookie engine */
    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
    result = curl_easy_perform(curl);
    if(result == CURLE_OK) {
      /* extract all known cookies */
      struct curl_slist *cookies = NULL;
      result = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
      if(!result && cookies) {
        /* a linked list of cookies in cookie file format */
        struct curl_slist *each = cookies;
        while(each) {
          printf("%s\n", each->data);
          each = each->next;
        }
        /* we must free these cookies when we are done */
        curl_slist_free_all(cookies);
      }
    }
    curl_easy_cleanup(curl);
  }
}
```

## AVAILABILITY

Added in curl 7.14.1

## RETURN VALUE

*[curl\_easy\_getinfo(3)](/curl_easy_getinfo/3.md)* returns a CURLcode indicating success or error.

CURLE\_OK (0) means everything was OK, non-zero means an error occurred, see *[libcurl-errors(3)](/libcurl-errors/3.md)*.

## SEE ALSO

[**CURLOPT\_COOKIELIST**(3)](/CURLOPT_COOKIELIST/3.md), [**curl\_easy\_getinfo**(3)](/curl_easy_getinfo/3.md), [**curl\_easy\_setopt**(3)](/curl_easy_setopt/3.md)
