# Circle Community Exporter (`utopianvision/circle-community-exporter`) Actor

Export a Circle.so community you own or administer. Members, posts, comments, courses, and your own DMs, into structured data. Read-only.

- **URL**: https://apify.com/utopianvision/circle-community-exporter.md
- **Developed by:** [Utopian Vision](https://apify.com/utopianvision) (community)
- **Categories:** Automation, Developer tools, Videos
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 member exporteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Circle Community Exporter

Export a Circle.so community you own or administer to clean, structured data. Members, posts, comments, course content, and your own direct messages, all in one dataset you can download as JSON, CSV, or Excel.

This actor reads only. It never posts, likes, comments, messages, or connects. Use it on communities you own or administer.

### Who this is for

You run a Circle community and you want your data out of it. Common reasons:

- **Backup.** Keep your own copy of everything your members have written.
- **Migration.** Moving to another platform and you need the member list, the posts, and the course content in a portable format.
- **Analysis.** Pull the whole community into a spreadsheet or a notebook to see who is active, what gets engagement, and what has gone quiet.

### What it exports

- **Members**: the full directory, with an option to fetch each member's complete profile.
- **Posts**: every post across all your non-course spaces.
- **Comments**: the full comment thread on each post.
- **Courses**: lessons, attached files, and native transcripts from your classroom spaces.
- **Your DMs** (opt-in): your own direct-message history. This only ever covers your account's conversations. Circle does not expose other members' private messages, and neither does this actor.

Every record has a `resource_type` field, so one flat dataset holds everything and you can filter it however you like.

### How to get your session cookie

The actor signs in as you, using the same session your browser already holds. You copy that session cookie once and paste it into the input.

1. Sign in to your Circle community in your browser as normal.
2. Open your browser developer tools (F12, or right-click and choose Inspect).
3. Go to the Network tab and refresh the page.
4. Click any request to your community domain in the list.
5. In the Request Headers, find the `cookie:` line and copy its entire value.
6. Paste that value into the **Session cookie** input field.

Your cookie is stored encrypted and is never written to logs. It expires the same way a normal browser sign-in does, so if a run reports an expired session, repeat these steps to grab a fresh one.

### Input

| Field | Required | What it does |
| --- | --- | --- |
| Community URL | Yes | Your community's base URL, e.g. `https://your-community.circle.so` or your custom domain. |
| Session cookie | Yes | Your own logged-in Circle session cookie (see above). Stored encrypted. |
| Bearer token | No | Advanced. Only needed if course export returns a 401. See below. |
| Export members | No | On by default. |
| Full member profiles | No | Off by default. One extra request per member. |
| Export posts | No | On by default. |
| Export comments | No | On by default. Applies when Export posts is on. |
| Export course content | No | Off by default. |
| Export your own DMs | No | Off by default. |
| Only activity since | No | ISO date for an incremental export (posts/comments/DMs only). |
| Download media files | No | Off by default. Fetch the binary assets, not just their URLs. |
| Max directory pages | No | Safety cap for very large communities. |

#### The optional Bearer token

Leave this blank. Course exports sometimes need a second token, and the actor now detects it automatically from your session cookie, so you no longer have to find it yourself. Only if course export reports that no token was found do you need to supply one: in the Network tab, find a request to `/internal_api/`, copy the value after `authorization: Bearer` from its request headers, and paste it into the Bearer token field.

### Incremental exports (only new activity)

For a repeat backup you rarely want to pull the whole community again. Set the **Only activity since** field to a date like `2026-01-31` and the run exports only posts, comments, and DMs created on or after that date. Members and course content are always exported in full, since the roster and curriculum change slowly and are cheap to refresh. Leave the field blank for a complete export.

### Downloading media (optional)

By default the export records the URL of every avatar, attachment, and lesson file, which is enough for most uses. Turn on **Download media files** and the actor also fetches the actual binaries into the run's key-value store as `media-` records, and lists the stored keys on each record. This is for a full archival copy: it is slower, adds a small per-file charge, and skips any single file over 9 MB. Leave it off unless you need the files themselves.

### Output

One dataset row per exported record. Each row includes `resource_type` (`member`, `post`, `comment`, `lesson`, or `dm_message`), the community URL, the parsed fields for that type, and a `raw` object with the untouched Circle response so nothing is lost. Download the dataset as JSON, CSV, or Excel from the run's Storage tab.

For a tidier result, the run also writes clean per-type CSV files to its key-value store: `members.csv`, `posts.csv`, `comments.csv`, `lessons.csv`, and `dms.csv`, plus a `SUMMARY.md` with the counts. These split the mixed dataset into one file per type, which is what you want when moving a community somewhere else. Turn them off with the Write CSV files option if you only need the JSON.

Long-running exports are safe to leave unattended. If the platform moves the run to another server midway, it resumes where it left off rather than starting over, so nothing is exported or charged twice.

### Pricing

This actor charges per record exported, so cost scales with the size of your community and what you choose to export.

| Event | Price (USD) |
| --- | --- |
| Actor start (flat, per run) | $0.02 |
| Member exported | $0.002 |
| Post exported | $0.003 |
| Comment exported | $0.001 |
| Course lesson exported | $0.005 |
| DM message exported | $0.001 |
| Media file downloaded | $0.005 |

The media charge applies only when Download media files is on, once per file fetched. As a rough guide, a community with 1,000 members and 2,000 posts costs a few dollars to export in full, well under the cost of doing it by hand. Set a budget cap on the run and the actor stops cleanly when it is reached.

### Notes

- Read-only by design. There is no code path in this actor that writes anything to your community.
- Use it only on communities you own or administer.
- Circle publishes no rate limits, so the actor reads at a deliberately gentle pace to stay well within safe bounds.

# Actor input Schema

## `communityUrl` (type: `string`):

The base URL of your Circle community, e.g. https://your-community.circle.so or your custom domain (https://community.yourbrand.com). No trailing path.

## `sessionCookie` (type: `string`):

Your own logged-in Circle session cookie. Copy the full Cookie header from your browser's developer tools while signed in to your community (see the README for the step-by-step). Stored encrypted and never logged.

## `bearerJwt` (type: `string`):

Leave blank. The course access token is now detected automatically from your session cookie. Only set this as a fallback if course export reports that no token was found. See the README.

## `exportMembers` (type: `boolean`):

Export the member directory.

## `fullProfiles` (type: `boolean`):

Fetch each member's full profile (one extra request per member - slower and more chargeable events).

## `exportPosts` (type: `boolean`):

Export posts across all non-course spaces.

## `exportComments` (type: `boolean`):

Also export comments on each post (only applies when Export posts is on).

## `exportCourses` (type: `boolean`):

Export course/classroom lessons, files, and transcripts. May require the Bearer token for some lessons.

## `exportDms` (type: `boolean`):

Export your own direct-message history. This only ever covers YOUR account's conversations - Circle does not expose other members' private messages. Off by default.

## `csvArtifacts` (type: `boolean`):

At the end of the run, also write tidy per-type CSV files (members.csv, posts.csv, comments.csv, lessons.csv, dms.csv) and a SUMMARY.md to the run's key-value store, alongside the full JSON dataset.

## `sinceDate` (type: `string`):

Optional. An ISO date like 2026-01-31. When set, only posts, comments, and DMs created on or after this date are exported - the 'new activity since my last backup' case. Members and course content are always exported in full. Leave blank for a complete export.

## `downloadMedia` (type: `boolean`):

Also download the actual binary assets a record points at (member avatars, lesson files, post/comment attachments) into the run's key-value store as media- records, not just their URLs. Slower and adds a per-file charge; files over 9 MB are skipped. Leave off unless you want a full archival copy.

## `maxPages` (type: `integer`):

Safety cap on member-directory pagination. Raise for very large communities.

## Actor input object example

```json
{
  "communityUrl": "https://your-community.circle.so",
  "exportMembers": true,
  "fullProfiles": false,
  "exportPosts": true,
  "exportComments": true,
  "exportCourses": false,
  "exportDms": false,
  "csvArtifacts": true,
  "downloadMedia": false,
  "maxPages": 200
}
```

# Actor output Schema

## `exportedRecords` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("utopianvision/circle-community-exporter").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("utopianvision/circle-community-exporter").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call utopianvision/circle-community-exporter --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=utopianvision/circle-community-exporter",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Circle Community Exporter",
        "description": "Export a Circle.so community you own or administer. Members, posts, comments, courses, and your own DMs, into structured data. Read-only.",
        "version": "0.6",
        "x-build-id": "eFZ9Shk73oFpPK21X"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/utopianvision~circle-community-exporter/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-utopianvision-circle-community-exporter",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/utopianvision~circle-community-exporter/runs": {
            "post": {
                "operationId": "runs-sync-utopianvision-circle-community-exporter",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/utopianvision~circle-community-exporter/run-sync": {
            "post": {
                "operationId": "run-sync-utopianvision-circle-community-exporter",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "communityUrl",
                    "sessionCookie"
                ],
                "properties": {
                    "communityUrl": {
                        "title": "Community URL",
                        "type": "string",
                        "description": "The base URL of your Circle community, e.g. https://your-community.circle.so or your custom domain (https://community.yourbrand.com). No trailing path."
                    },
                    "sessionCookie": {
                        "title": "Session cookie",
                        "type": "string",
                        "description": "Your own logged-in Circle session cookie. Copy the full Cookie header from your browser's developer tools while signed in to your community (see the README for the step-by-step). Stored encrypted and never logged."
                    },
                    "bearerJwt": {
                        "title": "Bearer token (advanced, optional)",
                        "type": "string",
                        "description": "Leave blank. The course access token is now detected automatically from your session cookie. Only set this as a fallback if course export reports that no token was found. See the README."
                    },
                    "exportMembers": {
                        "title": "Export members",
                        "type": "boolean",
                        "description": "Export the member directory.",
                        "default": true
                    },
                    "fullProfiles": {
                        "title": "Full member profiles",
                        "type": "boolean",
                        "description": "Fetch each member's full profile (one extra request per member - slower and more chargeable events).",
                        "default": false
                    },
                    "exportPosts": {
                        "title": "Export posts",
                        "type": "boolean",
                        "description": "Export posts across all non-course spaces.",
                        "default": true
                    },
                    "exportComments": {
                        "title": "Export comments",
                        "type": "boolean",
                        "description": "Also export comments on each post (only applies when Export posts is on).",
                        "default": true
                    },
                    "exportCourses": {
                        "title": "Export course content (advanced)",
                        "type": "boolean",
                        "description": "Export course/classroom lessons, files, and transcripts. May require the Bearer token for some lessons.",
                        "default": false
                    },
                    "exportDms": {
                        "title": "Export your own DMs (advanced)",
                        "type": "boolean",
                        "description": "Export your own direct-message history. This only ever covers YOUR account's conversations - Circle does not expose other members' private messages. Off by default.",
                        "default": false
                    },
                    "csvArtifacts": {
                        "title": "Write CSV files + summary",
                        "type": "boolean",
                        "description": "At the end of the run, also write tidy per-type CSV files (members.csv, posts.csv, comments.csv, lessons.csv, dms.csv) and a SUMMARY.md to the run's key-value store, alongside the full JSON dataset.",
                        "default": true
                    },
                    "sinceDate": {
                        "title": "Only activity since (incremental)",
                        "type": "string",
                        "description": "Optional. An ISO date like 2026-01-31. When set, only posts, comments, and DMs created on or after this date are exported - the 'new activity since my last backup' case. Members and course content are always exported in full. Leave blank for a complete export."
                    },
                    "downloadMedia": {
                        "title": "Download media files (off by default)",
                        "type": "boolean",
                        "description": "Also download the actual binary assets a record points at (member avatars, lesson files, post/comment attachments) into the run's key-value store as media- records, not just their URLs. Slower and adds a per-file charge; files over 9 MB are skipped. Leave off unless you want a full archival copy.",
                        "default": false
                    },
                    "maxPages": {
                        "title": "Max directory pages",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Safety cap on member-directory pagination. Raise for very large communities.",
                        "default": 200
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
