Are.na Profile Channels
arena.profile.channels-list
List every public channel of a profile.
At a glance
- Endpoint ID
arena.profile.channels-list- Price
- 1.5 credits per call; failed calls are free
- Runs for up to
- 30 seconds
Request
Send the endpoint ID as capability and its fields as input. Set UPSCRAPE_API_KEY to your key first.
curl --request POST \ --url https://data.upscrape.com/execute \ --header "Authorization: Bearer $UPSCRAPE_API_KEY" \ --header "Content-Type: application/json" \ --header "Prefer: wait=30" \ --data '{ "capability": "arena.profile.channels-list", "input": { "username": "are-na" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "arena.profile.channels-list", "input": { "username": "are-na" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "arena.profile.channels-list", "input": { "username": "are-na" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
Input
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
username |
string | yes | The profile's username or URL. | are-na |
Response
A finished call answers with HTTP 200; the data is in results[0].data, and billing.credits_charged is what it cost. A call still running after the wait answers 202: see jobs and results.
This is results[0].data from a real run:
{ "total": 60, "channels": [ { "title": "Channels for a better world", "created_at": "2017-12-21T18:35:18Z", "href": "/are-na/channels-for-a-better-world-1513881318", "id": 117817, "slug": "channels-for-a-better-world-1513881318", "status": "public", "updated_at": "2026-10-12T23:23:18Z", "counts": { "blocks": 1, "channels": 22, "contents": 23 }, "owner": { "name": "Are.na", "username": "are-na", "avatar": "https://static.avatars.are.na/21/large_e96b6c4ec64c53e5ecf241d54d829f32.png?1530043912", "class": "User", "href": "/are-na", "id": 21, "slug": "are-na" } }, { "title": "Reader", "created_at": "2019-01-29T21:37:08Z", "href": "/are-na-team/reader-u90htvaoemy", "id": 322381, "slug": "reader-u90htvaoemy", "status": "closed", "updated_at": "2026-08-31T17:29:14Z", "counts": { "blocks": 117, "contents": 117 }, "owner": { "name": "Are.na Team", "avatar": "https://static.avatars.are.na/groups/289/large_1c450892ff7f08b021c9524d8a8f1c15.png?1546970769", "class": "Group", "href": "/are-na-team", "id": 289, "slug": "are-na-team" } } ]}
Fields
| Field | Type | What it is | Example |
|---|---|---|---|
channels[].title |
string | The block's title. | Channels for a better world |
channels[].owner.name |
string | The display name of the profile that owns it. | Are.na |
channels[].counts.contents |
integer | How many items the channel holds. | 23 |
channels[].status |
string | Whether the channel is open, closed or private. | public |
channels[].updated_at |
string | 2026-10-12T23:23:18Z | |
channels[].owner.username |
string | are-na | |
channels[].created_at |
string | 2017-12-21T18:35:18Z | |
channels[].counts |
object | Counts for the channel. | 3 fields |
channels[].counts.blocks |
integer | 1 | |
channels[].counts.channels |
integer | How many channels it has. | 22 |
channels[].href |
string | /are-na/channels-for-a-better-world-1513881318 | |
channels[].id |
integer | Are.na's ID for it. | 117,817 |
channels[].owner |
object | The profile that owns the channel. | 7 fields |
channels[].owner.avatar |
string | https://static.avatars.are.na/21/large_e96b6c4ec64c53e5ecf241d5… | |
channels[].owner.class |
string | The kind of block, such as Link, Image or Text. | User |
channels[].owner.href |
string | /are-na | |
channels[].owner.id |
integer | Are.na's ID for it. | 21 |
channels[].owner.slug |
string | The channel's name in its address. | are-na |
channels[].slug |
string | The channel's name in its address. | channels-for-a-better-world-1513881318 |
channels |
array | How many channels it has. | 60 records |
total |
integer | How many results there are in all. | 60 |
If a call fails
A failed call costs nothing. The response carries an error.code you can branch on; Errors and retries lists every code and which ones to retry.
Other Are.na endpoints
Something missing or unclear? Ask the team that builds the Are.na endpoints.