API REFERENCE
Get artist fans
On this page
/api/artists/{id}/fansRetrieve the social profiles of an artist's fans: the accounts that commented on the artist's scraped posts (Instagram today). Every Instagram scrape is followed by one batched profile run over the new commenters, which fills avatar, bio, follower_count and following_count on each fan; region is null unless the platform reports one. Supports pagination for large fan lists.
last_comment_at is the timestamp of the latest stored comment linked to that fan relationship, when the comment's author matches the returned fan. Missing or mismatched comment evidence returns null; it does not mean the fan has never commented. Profile refresh time and other engagement timestamps are not substituted. This is stored evidence, not a live scrape or exhaustive interaction history, and older relationship links are not guaranteed backfilled. Existing ordering, pagination and duplicate fan rows across relationships are unchanged.
The caller must be authenticated and have access to the artist. This field supports a report's Last heard column; it does not itself return comment bodies. The separate GET /api/comments operation reads saved comment bodies within its authorized linked-post scope, pagination and coverage limits.
Authentication
See the authentication guide for API key and account access requirements.
Request
curl --request GET \
--url 'https://api.recoupable.dev/api/artists/YOUR_ID/fans' \
--header 'x-api-key: YOUR_API_KEY'Replace the YOUR_ placeholders with your values. Required query parameters are included; optional parameters are listed below.
Try it
Fill in the fields, send the request from your browser, and read the live response. The curl below updates as you type.
Kept in this browser tab only and cleared when it closes.
curl --request GET \
--url 'https://api.recoupable.dev/api/artists/{id}/fans'Parameters
Path parameters
idstringrequiredThe unique identifier of the artist account to fetch fans for
Query parameters
pageintegerThe page number to retrieve (default: 1)
Default: 1
limitintegerThe number of records per page (default: 20, max: 100)
Default: 20
Responses
200Artist fans retrieved successfully+
application/json
statusstring · enumrequiredStatus of the request
Values: "success"
fansarray<ArtistFan>requiredList of social profiles from fans across all platforms
Item properties for fans
idstringUnique identifier for the fan's social profile
usernamestringUsername or handle on the platform
avatarstringURL to the fan's avatar/profile image
profile_urlstringFull URL to the fan's profile on the platform
regionstringGeographic region or location of the fan
biostringFan's biography or profile description
follower_countintegerNumber of followers the fan has
following_countintegerNumber of accounts the fan is following
updated_atstringISO timestamp of when the fan data was last updated
format: date-time
last_comment_atstring | nullTimestamp of the latest stored comment linked to this fan relationship, only when the comment author matches this fan. Null means matching stored comment evidence is unavailable, not that the fan never commented. This is not the profile refresh time, a generic engagement time or a live cross-platform history.
Example: "2026-10-01T12:00:00Z"
format: date-time
paginationobjectrequiredPagination metadata for the response
Properties for pagination
total_countintegerTotal number of records available
pageintegerCurrent page number
limitintegerNumber of records per page
total_pagesintegerTotal number of pages available
400Bad request - missing required parameters+
application/json
statusstring · enumrequiredStatus of the request
Values: "error"
errorstringrequiredError message describing what went wrong
401Unauthorized - missing or invalid credentials+
application/json
statusstring · enumrequiredStatus of the request
Values: "error"
errorstringrequiredError message describing what went wrong
500Internal server error+
application/json
statusstring · enumrequiredStatus of the request
Values: "error"
errorstringrequiredError message describing what went wrong
Full specification
Download the OpenAPI file for complete schemas, constraints, and examples.
Download releases.jsonView operation source
{
"operationId": "getArtistsByIdFans",
"description": "Retrieve the social profiles of an artist's fans: the accounts that commented on the artist's scraped posts (Instagram today). Every Instagram scrape is followed by one batched profile run over the new commenters, which fills `avatar`, `bio`, `follower_count` and `following_count` on each fan; `region` is null unless the platform reports one. Supports pagination for large fan lists.\n\n`last_comment_at` is the timestamp of the latest stored comment linked to that fan relationship, when the comment's author matches the returned fan. Missing or mismatched comment evidence returns `null`; it does not mean the fan has never commented. Profile refresh time and other engagement timestamps are not substituted. This is stored evidence, not a live scrape or exhaustive interaction history, and older relationship links are not guaranteed backfilled. Existing ordering, pagination and duplicate fan rows across relationships are unchanged.\n\nThe caller must be authenticated and have access to the artist. This field supports a report's Last heard column; it does not itself return comment bodies. The separate GET /api/comments operation reads saved comment bodies within its authorized linked-post scope, pagination and coverage limits.",
"parameters": [
{
"name": "id",
"in": "path",
"description": "The unique identifier of the artist account to fetch fans for",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "page",
"in": "query",
"description": "The page number to retrieve (default: 1)",
"required": false,
"schema": {
"type": "integer",
"default": 1
}
},
{
"name": "limit",
"in": "query",
"description": "The number of records per page (default: 20, max: 100)",
"required": false,
"schema": {
"type": "integer",
"default": 20,
"maximum": 100
}
}
],
"responses": {
"200": {
"description": "Artist fans retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ArtistFansResponse"
}
}
}
},
"400": {
"description": "Bad request - missing required parameters",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ArtistFansErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized - missing or invalid credentials",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ArtistFansErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ArtistFansErrorResponse"
}
}
}
}
}
}